先看部分程序
void main(void)
{
zlg7289Init(); /* 初始化7279 */
TMOD=0x01;//使用定时器T0
EA=1;//开总中断
ET0=1;//允许T0中断
TH0=(65536-50000)/256;//定时器高八位赋值
TL0=(65536-50000)%256;//定时器低八位赋值
int_time=0; //中断计数变量初始化
second=0; //秒计数变量初始化
minute=0; //分钟计数变量初始化
hour=0; //小时计数变量初始化
TR0=1;//启动定时器T0
while (1) {
//
zlg7289Download(0,0,0,hour/10);//显示
zlg7289Download(0,1,0,hour%10);
__delayNuS (10);
zlg7289Download(0,2,0,10);
zlg7289Download(0,3,0,minute/10);
zlg7289Download(0,4,0,minute%10);
__delayNuS (10);
zlg7289Download(0,5,0,10);
zlg7289Download(1,6,0,second/10);
zlg7289Download(1,7,0,second%10);
}
}
/***************************************************************************************************
函数功能:定时器中断服务子程序
*******************************************************************************************************/
void interserve(void) interrupt 1
{ TR0=0;//关闭定时器T0
int_time++;
if(int_time==20)
{
int_time=0;
second++;
}
if(second==60)
{
second=0;
minute++;
}
if(minute==60)
{
minute=0;
hour++;
}
key_scan();
//执行键盘扫描
TH0=(65536-50000)/256;//定时器高八位重新赋值
TL0=(65536-50000)%256;//定时器低八位重新赋值
TR0=1;//启动定时器T0
} |