ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
5 июля
154880
stepper88 (26.04.2009 13:48, просмотров: 780)
Здравствуйте, интересует вот какой вопрос, насколько точно протеус симулирует работу таймера у микроконтроллера. Взял вот такую программку для 8051: #include<reg51.h> void init (void) { TMOD=0x01; //Настроить Т0 в режим 16-ти разрядного таймера TH0=(-10000)>>8; //Занести старший байт числа -10000 TL0=-10000; //Занести младший байт числа -10000 TF0=0; //Обнулить флаг переполнения таймера TR0=1; //Включить таймер } void Gorit (void) { P0=0; //Включаем светодиод } void NeGorit (void) { P0=0xFF; //Выключаем светодиод } void main (void) { for (;;) { init(); while (TF0==0) Gorit(); //Вызов функции Gorit init(); //Подготовка к следующему циклу while (TF0==0) NeGorit(); //Вызов функции NeGorit } } На P0 повесил пьезоизлучатель. Частота на микроконтроллере стоит 12 МГц. Вроде как должна выдавать на P0 сигнал с периодом где-то 10 Мс, а в пьезоизлучаетеле слышен треск. Товарищ попробовал сделать нечто подобное на PIC - тоже утверждает, что работает медленне, чем должно в теории. Вопрос - или в самом Протеусе таймер считает медленнее, чем в реале, или я что-то с программой напутал, или в Протеусе что-то нужно настроить? Заранее спасибо.