Здравствуйте, интересует вот какой вопрос, насколько точно протеус симулирует работу таймера у микроконтроллера. Взял вот такую программку для 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 - тоже утверждает, что работает медленне, чем должно в теории. Вопрос - или в самом Протеусе таймер считает медленнее, чем в реале, или я что-то с программой напутал, или в Протеусе что-то нужно настроить?
Заранее спасибо.