Я в настоящее время работает над программированием PIC16F883 с 3.2768 МГц oscilator. Мне нужно сделать LED миганием в нужное время, но это действительно не актуально.Таймер PIC16F883 не будет работать
Проблема в том, что настроили Timer0, но он не работает. Я собираюсь опубликовать свой код и инициализацию здесь, чтобы вы могли видеть :). Кстати, я программирую в MpLap IDE, в обычном C с компилятором Hi-Tech C.
Initialization:
T0CS = 0x00; //Set Timer0 to Timer-Mode
GIE = 0x01; //Enable all interrupts
PSA = 0x00; //Prescaler enable
PS0 = 0x01; //Prescaler set
PS1 = 0x00; //Prescaler set
PS2 = 0x01; //Prescaler set
Прерывание службы сама процедура:
void interrupt timer()
{
T0IF = 0x00; //Reset timer
millicounter++; //Add one to the helper variable
PORTA = 0x00;
if (millicounter == 25) //Check if one second has passed.
{
millicounter = 0; //Reset helper variable
seconds++; //Add one to elapsed seconds.
}
}
Проблема заключается в том, что она не выглядит, как таймер работает. Теперь я смоделировал программу разное время с разными настройками, последнее - сделать вывод открытым, когда прерывание запускается, а затем снова включено в основном. Проблема в том, что это никогда не происходило. Думаю, таймер не работает. Зачем?
Если я хорошо помню, вы должны установить 'T0IE = 1;' – LPs
я нашел [это] (http://ww1.microchip.com/downloads/en/DeviceDoc/51702A.pdf) хороший учебник – LPs
Изготовление светодиодной подсветки в нужное время на самом деле * *. При создании кода - это ваша первая точка отсчета. В этом случае прерывание таймера начнет мигать. Если это слишком быстро, посмотрите, используйте маску счетчика или начните с медленного таймера. –