Задача - через 3с с использованием прерывания от RTC моргать ножкой порта.
Программа
зацикливается на While и я так понял не входит в обработчик
прерывания.. Потому что в отладчике Keil флаг RTCF всегда остается = 1.
#include <stdio.h>
#include <REG931.H>
sbit LED_BLINK = P1^0;
unsigned int counter = 300;
void RTCsr(void) interrupt 10 using 0 {
//RTCCON &= 0xFE;
//RTCCON = 0x70;
EA = 0;
RTCCON &= 0x7F; // отключение прерывания
counter = counter - 1;
if (counter == 0) // моргание каждые 3с
{
LED_BLINK = ~LED_BLINK;
counter = 300;
}
RTCH = 0x90; // 0.01 секунда
RTCL = 0x01; //
//RTCCON |= 0x10;
//RTCCON = 0x73;
EA = 1;
}
void main(void)
{
RTCCON = 0x70; //
RTCH = 0x90; //
RTCL = 0x01; // 0.01 секунда
P1 = 0x0FE;
//RTCCON |= 0x01;
//RTCCON |= 0x60;
//RTCCON |= 0x10; //включение прерывания RTC
RTCCON = 0x73; //включение прерывания RTC
EA = 1;
while (1);
}
Почему не работает?