|
樓主要實現(xiàn)的功能:
1.開機(jī)不顯示,數(shù)碼管不亮,蜂鳴器不響。
2.按下一號按鍵,數(shù)碼管亮,顯示01233.按下二號按鍵,蜂鳴器響此時數(shù)碼管還亮,一秒后復(fù)位,數(shù)碼管不亮,蜂鳴器不響。
- #include<reg51.h>
- #define uchar unsigned char
- #define uint unsigned int
- uchar smg[]={0xc0,0xf9,0xa4,0xb0};
- sbit a1=P2^0;
- sbit a2=P2^1;
- sbit a3=P2^2;
- sbit a4=P2^3;
- sbit feng=P2^5;
- sbit jian0=P3^2;
- sbit jian1=P3^3;
- uchar i;
- uint j;
- void delay()
- {
- int i;
- for(i=600;i>0;i--);
- }
- void main()
- {
- TMOD=0X01;
- TH0=(65536-1000)/256;
- TL0=(65536-1000)%256;
- // TR0=1;
- EA=1;
- ET0=1;
- P2=0xf0;
- while(1)
- {
- if(jian1==0)
- {
- delay();
- if(jian1==0)
- {
- while(!jian1);
- TR0=1;
- }
- }
- if(jian0==0)
- {
- delay();
- if(jian0==0)
- {
- while(!jian0);
- feng=0;
- }
- }
- }
- }
- void t0(void) interrupt 1
- {//重裝初值
- TH0=(65536-1000)/256;
- TL0=(65536-1000)%256;
- //數(shù)碼管顯示
- P2&=0xf0;
- P0=smg[i];
- P2|=0x01<<i;
- i++;i%=4;
- //蜂鳴器計時
- if(feng==0)
- {
- j++;
- if(j>=1000)//1s
- {
- j=0;
- P0=0xff;
- P2&=0xf0;
- feng=1;
- TR0=0;
- }
- }
- }
復(fù)制代碼
|
|