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

UptoLike

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

100
#pragma end_abs_address
#pragma abs_address:0xFFF2
void (*_vec_tim1_ovf)(void) = TIM1_ovf;
#pragma end_abs_address
#pragma abs_address:0xFFF4
void (*_vec_tim1_ch1)(void) = TIM1_cmp;
#pragma end_abs_address
InitDevices(){//== установка режимов работы портов и периферии
CONFIG1|=1;//== запретить сторожевой таймер COP (бит COPD=1)
//== биты в регистры CONFIG записываются ОДНОКРАТНО,
//== и в дальнейшем не могут переопределяться (до след. запуска)
//========= настройка АЦП
ADCLK=0x60;//== задаем тактовую частоту АЦП -
ADIV1,0=1(Fq/8),ADICLK=0
ADSCR=0x47;//== AIEN=1(разр.прерыв.), ADCH4..ADCH0=00111(канал
AD7(PTB7)и пуск)
//========= настройка первого канала таймера1
T1SC1=0x40;//== CH1IE=1 - разр. прерывания при совпадении кодов
канала1 таймера1
T1SC1|=0x10|0x0C;//== MS1B=0,MS1A=1; ELS1B=ELS1A=1 (выход
T1CH1=1 при совп-нии)
T1SC1|=0x02;//== бит TOV1=1 при переполнении смена значения на выходе
T1CH1(снова 0)
T1CH1=1;//== начальная длительность имп-са ШИМ (Tp)
//========= настройка таймера1
T1SC=0x46;//== TOIE=1(разр. прер.), 4.915.200Гц/2/64 = 38400Гц (PS2..PS0
= 110(bin)->(64))
//== на таймер1 поступают импульсы с частотой Fosc/2=4.915.200Гц/2 Гц
T1MOD=Tc;//== загружаем модуль счета для режима ШИМ (Tc=400)
//========= настройка линии порта D для управления светодиодом
DDRD=1<<LED;//== 5-й вывод настраиваем, как выход для светодиода
//========= настройка последовательного периферийного интерфейса SPI
(порт D)
DDRD|=1<<SS;//== вывод #SS настраиваем в качестве выхода управления
(ChipEnable)
PTD&=~(1<<SS);//== #SS=CE=0 (термодатчик - не выбран по входу CE(CS)
см. рис.)
SPCR=0x2A;//== SPMSTR=1(MCU - ведущий (мастер)), SPE=1(разрешение
SPI)
//========= настройка порта C для работы с ЖКИ
DDRC=0x7F;//== линии 0..6 порта C настроены на вывод в LCD
PTC=0;//== начальное значение
}
Delay(unsigned char time){//== ассемблерная подпрограмма задержки
asm( //== (при time=1 примерно равна 100мкс)