程序在下: #include<reg52.h> #include<intrins.h> #define uint unsigned int #define uchar unsigned char sbit w1=P2^0; sbit w2=P2^1; sbit key1=P1^0; sbit key2=P1^1; sbit key3=P1^2; sbit BEEP=P2^7; uint num,num1,shi,ge,z; uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71} ; void delay(uint z) { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } /*void delay1(uchar x) { uchar i; while(x--) { for(i=0;i<13;i++){} } } void beep(void) { uchar i; for(i=0;i<50;i++) { delay1(4); BEEP=!BEEP; } } */ void keyscan() { if(key1==0) { delay(5); if(key1==0) { while(!key1); TR0=1; } } if(key2==0) { delay(5) ; if(key2==0) { while(!key2); TR0=0; while(!key3); num1=24; TR0=1; BEEP=1; } } } void init() { num1=24; TMOD=0x01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1; ET0=1; TR0=1; } void display(uchar shi,uchar ge) { P0=table[shi]; w1=1;w2=0; delay(2); P2=table[ge]; w1=0;w2=1; delay(3); if(num1==0) { TR0=0; BEEP=0; } } void main() { init(); while(1) { keyscan(); if(num==20) { num=0;num1--; } ge=num1%10; shi=num/10; display(shi,ge); } } void time1() interrupt 1 { TH1=(65536-50000)/256; TL1=(65536-50000)%256; num++; }
|