
Добавил:
Andrejjavd
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Примеры решения лабораторных работ / LABA1 / 1_2
.txt2. Измените эту программу следующим образом: входной сигнал - 0 бит
порта В, выход - порт С. В исходном состоянии при PB0=0 на выходе порта С
включены два младших светодиода, при включении бита PB0=1 включаются два
старших разряда.
*/
#include <iom8535v.h> // включение файлов для контроллера ATmega8535
#include <macros.h>
void port_init(void) // определение функции инициализации портов вв/выв
{
PORTB = 0xFF; // включение подтягивающих резисторов порта B
DDRB = 0x00; // порт B работает на вход (DDRA=0000 0000)
PORTC = 0x00; // запись в порт C нулевого значения
DDRC = 0xFF; // порт C работает на выход (DDRD=1111 1111)
}
void init_devices(void)// инициализация всех периферийных устройств
{
CLI(); // запрет действия прерываний
port_init(); // вызов функции инициализации портов
MCUCR = 0x00;
GICR = 0x00;
TIMSK = 0x00; // нет прерываний от таймера
SEI(); // разрешение действия прерываний
}
void main(void) // определение главной функции
{
init_devices(); // вызов функции инициализации периферийных устройств
while (1) // создание бесконечного цикла работы контроллера
{
if ( (PINB&1)!=0) // если 0 бит на входе порта B отличен от нуля,
PORTC=0xC0; // то на выходе PORTC=1100 0000
else
PORTC=0x03; // иначе PORTD=0000 0011
}
}