#include<AT89X51.H> unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71,0x00}; unsigned char second,tcount;
void main(void) { TMOD=0x01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; TR1=1; EA=1; ET0=1; second=0;tcount=0; P0=dispcode[second/10]; P2=dispcode[second%10]; while(1); } void t0(void) interrupt 1 using 0 { tcount++; { if(tcount==20) second++; if(second==60) second=0; P0=dispcode[second/10]; P2=dispcode[second%10]; } TH0=(65536-50000)/256; TL0=(65536-50000)%256; }
各位好上面程序是要求单片机的定时/计数器T0产生一秒的 定时时间,作为秒计数时间,当一秒产生时,秒计数加1,秒计数到60时,自动从0开始。 此处是用中断实现的,这程序是怎么一个 运行过程 啊 ! 是不是先执行主程序,然后等待中断产生,然后执行中断子程序,tcount++;以后,再给TH0,TL0负值,再返回主程序,那 void t0 (void) 中interrupt 1 using 0是什么意思啊 。然后while(1)处要不要加分号啊,要加的又是为什么啊 ,多谢各位指点 |