ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
28 ноября
240022
Андрей (20.02.2011 20:16, просмотров: 5086)
Почему программа написанная (и проверенная) для AT89S8252 не работает на AT89S8253?Поковырявшись пару дней с 53-им нашел 2 существенных отличия в работе (хотя судя по даташитам таких отличий быть не должно).1. Сторожевой таймер на 53 либо не пашет вообще, либо не дает программе запуститься.Биты регистра ВДТ из KEIL-а:WDTEN_ 0x01 /* Watchdog Enable in SW-Mode */WSWRST_ 0x02 /* Watchdog Timer Reset and EEPROM Ready,/Busy Flag */HWDT_ 0x04 /* Hardware Mode Select */ DISRTO_ 0x08 /* Disable Reset Out */WDIDLE_ 0x10 /* Enable Watchdog in Idle Mode */PS0_ 0x20 /* Prescaler bit 0 for the Watchdog Timer */PS1_ 0x40 /* Prescaler bit 1 for the Watchdog Timer */PS2_ 0x80 /* Prescaler bit 2 for the Watchdog Timer */ При установке 1 в WDTEN - МК сбрасывается через 16 мс независимо от состояния всех остальных битов.Данная хрень в программной эмуляции не наблюдается.При установке 0 в WDTEN и 1 в HWDT - типа "Hardware Mode" - всё наоборот: МК вообще не сбрасывается, хотя должен.2. Обработка прерываний стала херить глобальные переменные (в 8252 такого не было).bit cond1,cond2;unsigned char A,B;void timer0_ISR (void) interrupt 1 using 1{cond1=A>5;cond2=A