- #include <reg51.h>
- #include <intrins.h>
- unsigned int count=0; //中断次数(一次50ms)
- unsigned char num=0; //个位
- unsigned char num1=0; //十位
- unsigned char cishu=0;
- unsigned char ge=0;
- unsigned char shi=0;
- sbit p2_0=P2^0; //数码管段选端
- sbit p2_1=P2^1; //数码管位选端
- sbit key=P1^7;
- char table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
- //数码管显示函数
- void timer_init() //定时器初始化函数
- {
-
- TMOD=0x01; //选择定时器0的工作方式1
- TH0=0xD8; //装初值(定时50ms),晶振11.0592MHz
- TL0=0xF0;
- EA=1; //打开总中断
- ET0=1; //打开定时器中断
- TR0=0; //先不要启动定时器
- }
- void display()
- {
- p2_0=1;
- P0=table[ge];
- p2_0=0;
- p2_1=1;
- P0=0x02;
- p2_1=0;
- p2_0=1;
- P0=table[shi];
- p2_0=0;
- p2_1=1;
- P0=0x01;
- p2_1=0;
- }
- void main()
- {
- timer_init();
- while(1)
- {
- //按键自锁标志置1,防止重复响应/
- if(count==20)
- {
- count=0;
- cishu++;
- num++;
- if(num==10)
- {
- num=0;
- num1++;
- }
- if(num1==6)
- {
- num1=0;
- num=0;
- }
- ge=cishu/10;
- shi=cishu%10;
- }
- }
-
- void timer0() interrupt 1 //中断函数
- {
- count++;
- TH0=0xD8;
- TL0=0xF0;
- }
|