Добавил:
Andrejjavd
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Примеры решения лабораторных работ / LABA1 / 1_3
.txtСогласно указанному преподавателем варианту напишите программу,
которая реализует следующую зависимость между входными и выходными
сигналами:
Вариант Выход Состояние входов PD2:PD1
00 01 10 11
8 порт D 00011000 00110000 01100000 11000000
*/
#include <iom8535v.h> // включение файлов для контроллера ATmega8535
#include <stdint.h>
#include <macros.h>
void port_init(void) // определение функции инициализации портов вв/выв
{
PORTD = 0x07; // включение подтягивающих резисторов порта А биты 0-3
DDRD = 0xF8; // порт D работает на выход биты 4-7 (DDRD=1111 1000)
}
void init_devices(void)// инициализация всех периферийных устройств
{
CLI(); // запрет действия прерываний
port_init(); // вызов функции инициализации портов
MCUCR = 0x00;
GICR = 0x00;
TIMSK = 0x00; // нет прерываний от таймера
SEI(); // разрешение действия прерываний
}
void main(void) // определение главной функции
{
uint8_t DIN;
init_devices(); // вызов функции инициализации периферийных устройств
while (1) // создание бесконечного цикла работы контроллера
{
DIN = (PIND>>1)&3;
switch (DIN)
{
case 0x00:
PORTD=PORTD&0x1f; // Очищаем все что не долно быть установлено не трогая первые три
PORTD=PORTD|0x18; //Устанавливаем не трогая первые три
break;
case 0x01:
PORTD=PORTD&0x37;
PORTD=PORTD|0x30;
break;
case 0x02:
PORTD=PORTD&0x67;
PORTD=PORTD|0x60;
break;
case 0x03:
PORTD=PORTD&0xC7;
PORTD=PORTD|0xC0;
break;
}
}
}