|
5黑幣
- #include <reg52.h>
- #include <intrins.h>#define uchar unsigned char
- #define uint unsigned intuint count=0;
- uint sudu=0;
- uchar time;
- uint num;
- sbit beep = P3^7;
- sbit key1 = P3^5;
- sbit key2 = P3^6;
- uchar dat[4]={0,1,2,3};uchar table[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
- void delayms(unsigned int x)
- {
- unsigned char j;
- while(x--)
- {
- for(j=0;j<123;j++){;}
- }
- }
- void display ()
- {
- uchar i,dis=0x7f;
- for(i=0;i<4;i++)
- {
- P1=~table[dat[i]];
- P0=dis;
- dis=(dis>>1)|0x80;
- delayms(1);
- }
- }
- void process(uint i)
- {
- dat[0]=num/10;
- dat[1]=num%10;
- dat[2]=i/10;
- dat[3]=i%10;}
- void keyClear(){
- if(key1==0)
- {
- delayms(10);
- if(key1==0)
- {
- count=0;
- }
- while(!key1)
- {
- process(count);
- display();
- };
- }
- }
- void keySet(){
- if(key2==0)
- {
- delayms(10);
- if(key2==0)
- {
- num++;
- }
- while(!key2)
- {
- process(count);
- display();
- };
- }
- }
- void BJ()
- {
- if(count>=num)
- beep=0;
- else
- beep=1;
- }
- void main()
- {
- ET0=1;
- IT0=1;
- EX0=1;
- EA=1;
- beep=1;
- num=10;
- while(1)
- {
- keyClear();
- keySet();
- BJ();
- process(count);
- display();
- }
- }
- void ex0(void) interrupt 0 using 0
- {
- count++;
- }
復制代碼 |
|