TMOD = 0x00;
TL0 = (65536 - (MAIN_Fosc / 500));
TH0 = (65536 - (MAIN_Fosc / 500)) >> 8;
TR0 = 1;
ET0 = 1;
EA = 1;
//Initialize LCD memory
for(i=0; i<8; i++) LCD_buff[i] = 0;
P2n_push_pull(0xf0);
P1n_push_pull(0xff); //segment is set as push-pull output mode
LCD_SET_2M; //Display hour-minute division interval:
LCD_SET_4M; //Display minute-second division interval:
LoadRTC(); //Display time
while (1)
{
PCON |= 0x01; //Enter Idle mode, wake up and exit by Timer0 2ms
_nop_();
_nop_();
_nop_();
if(B_2ms) //2ms beat
{
B_2ms = 0;
if(++cnt_500ms >= 250) //reach to 500ms
{
cnt_500ms = 0;
// LCD_FLASH_2M; //Flashing hour-minute interval:
// LCD_FLASH_4M; //Flashing minute-second interval:
B_Second = ~B_Second;
if(B_Second)
{
if(++second >= 60) //reach to 1 minute
{
second = 0;
if(++minute >= 60) //reach to 1 hour
{
minute = 0;
if(++hour >= 24) hour = 0; //reach to 24 hours
}
}
LoadRTC(); //Display time
}
}
if(!INT0) //key is pressed, ready to sleep
{
LCD_CLR_2M; //Display hour-minute division interval:
LCD_CLR_4M; //Display minute-second division interval:
LCD_load(1,DIS_BLACK);
LCD_load(2,DIS_BLACK);
LCD_load(3,0);
LCD_load(4,0x0F);
LCD_load(5,0x0F);
LCD_load(6,DIS_BLACK);
while(!INT0) delay_ms(10); //Waiting for the key to be released