| #include<reg51.h> #define uchar unsigned char
 #define uint unsigned int
 //段码
 uchar code DSY_CODE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};
 uchar Count=0;
 //主程序
 void main()
 {
 P0=0x00;
 P2=0x00;
 TMOD=0x06;                            //计数器 T0 方式 2
 TH0=TL0=256-1;                        //计数值为 1
 ET0=1;                                //允许 T0 中断
 EX0=1;                                //允许 INT0 中断
 EA=1;                                 //允许 CPU 中断
 IP=0x02;                              //设置优先级,T0 高于 INT0
 IT0=1;                                //INT0 中断触发方式为下降沿触发
 TR0=1;                                //启动 T0
 while(1)
 {
 P0=DSY_CODE[Count/10];
 P2=DSY_CODE[Count%10];
 }
 }
 //T0 计数器中断函数
 void Key_Counter() interrupt 1
 {
 Count=(Count+1)%100;                   //因为只有两位数码管,计数控制在 100 以内(00~99)
 }
 //INT0 中断函数
 void Clear_Counter() interrupt 0
 {
 Count=0;
 }
 
 |