Основы программирования микроконтроллеров ATMega128 и 68hc908. Китаев Ю.В. - 103 стр.

UptoLike

Составители: 

103
входах PTA4..7
//== если не нажата ни одна из клавищ, на ВСЕХ линиях возврата - будут
единицы
PTA=0xF1;//== на все выходы PA1..PA3 подаем нули (без сканирования)
INTKBIER=0xF0;//== разрешить прерывание от нуля на входах PTA4..7
}
void main(void){
char sa[8];//== буфер для вывода данных на ЖКИ
InitDevices();//== установка режимов работы портов и периферии
LCDNinit();//== инициализируем ЖК дисплей
KBDinit();//== инициализируем порт клавиатуры
keynum=12;//== еще не нажата ни одна из клавиш (поэтому выведем - пусто
'')
CLI();//== разрешить прерывания (asm("cli\n")),(SEI()-
запретить(asm("sei\n"))
//== ВНИМАНИЕ: в других языках прогр. cli - запрещает, sei(sti) -
разрешает)
LCDNinit();//== инициализируем ЖК дисплей (курсор слева и в верхней
строке)
LCDNstrn("U(Vt) = ");//== выводим надпись "напряжение(вольт) = ...."
LCDNxy(0,1);//== перейти на нижнюю строку LCD
LCDNstrn("T(oC)=");//== вывести "температура = "
SPIctrl();//== передаем адрес регистра управления и управляющий байт ТД
while(0x8888){//== бесконечный цикл
LCDNxy(11,1);//== переходим на нижнюю строку ЖКИ в 11 позицию
sprintf(sa,"%02d:%02d",min,sec);//== '0' - слева будет дополнение
нулями
LCDNstrn(sa);//== выводим на LCD минуты:секунды
LCDNxy(9,1);//== переходим в девятую позицию нижней строки
sprintf(sa,"%c",key[keynum]);//== записываем в строку sa ASCII код
клавиши
LCDNstrn(sa);//== выводим на ЖКИ ASCII код нажатой клавиши
LCDNxy(8,0);//== переходим к 8-ой позиции и пишем в ней
напряжение и код
sprintf(sa,"%#1.2f %03d",((float)ad*(float)5)/(float)256,ad);//== #-все
позиции
//== иначе при U=0 будет отобр. только 0, а в позициях за ним - старые
знач.!
LCDNstrn(sa);//== отображаем напряжение и соотв. код
SPIdata();//== передаем адреса регистров данных термодатчика
LCDNxy(6,1); //== переходим к позиции LCD, где будет отображаться
температура
LCDN_ReadSPIValue();//== читаем и выводим t-ру на LCD
}
}