- #include"reg52.h"
- #define start 0xfe
- #define pause 0xfd
- #define clr 0xfb
- #define stop 0xf7
- #define save 0xef
- #define look 0xdf
- unsigned int times_10ms;
- idata unsigned int s[12];
- unsigned char s_ptr;
- unsigned char d[4];
- void delay_1ms(void)
- {unsigned int i;
- for(i=0;i<123;i++){;}
- }
- void display(unsigned int t)
- { unsigned char i;
- unsigned char code BCD_7[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};
- for(;t>0;t--)
- {
- for(i=0;i<4;i++)
- {
- P0=BCD_7[d[i]];
- if(i==2)P0&=0x7f;
- P2&=~(0x10<<i);
- delay_1ms();
- P2|=0xf0;
- }
- }
- }
- unsigned char Read_key(void)
- {unsigned char k;
- P1=0xff;
- k=P1;
- if(k==0xff)return 0xff;
- else
- {display(3);
- k=P1;
- if(k==0xff)return 0xff;
- else return k;
- }
- }
- intmain(void)
- {unsigned char i,k;
- unsigned int tem;
- unsigned char run_sign;
- TH2=RCAP2H=(65536-10000)/256;
- TL2=RCAP2L=(65536-10000)%256;
- EA=1;ET2=1;
- times_10ms=0;
- s_ptr=0;
- for(i=0;i<12;i++)s[i]=0;
- for(i=0;i<4;i++)d[i]=0;
- while(1)
- {k=Read_key();
- if(k!=0xff)
- {switch(k)
- { case start:
- run_sign=1;
- TR2=1;
- break;
- case pause:
- TR2=0;
- break;
- case stop:
- TR2=0;
- s_ptr=0;
- run_sign=0;
- break;
- case clr:
- TR2=0;
- times_10ms=0;
- TR2=(65536-10000)/256;
- TL2=(65536-10000)%256;
- s_ptr=0;
- for(i=0;i<12;i++)s[i]=0;
- for(i=0;i<4;i++)d[i]=0;
- break;
- case save:
- s[s_ptr++]=times_10ms;
- while(k!=0xff);
- {k=Read_key();
- display(1);
- }
- break;
- case look:
- tem=s[s_ptr++];
- d[3]=tem/1000;d[2]=tem/100%10;
- d[1]=tem/10%10;d[0]=tem%10;
- while(k!=0xff)
- {k=Read_key();
- display(1);
- }
- break;
- default:
- break;
- }
- }
- if(run_sign)
- {
- tem=times_10ms;
- d[3]=tem/1000;d[2]=tem/100%10;
- d[1]=tem/10%10;d[0]=tem%10;
- }
- display(1);
- }
- }
- voidT2_overFlow(void) interrupt 5 using 3
- {if(TF2)
- {TF2=0;
- times_10ms++;
- }
- EXF2=0;
- }
复制代码
|