|
無標(biāo)題.jpg (144.3 KB, 下載次數(shù): 0)
下載附件
2024-12-7 15:04 上傳
- #include <reg52.h>
- sbit key0 = P2^7;
- unsigned char code table[]={//共陽數(shù)碼管段碼
- 0xc0,0xf9,0xa4,0xb0,
- 0x99,0x92,0x82,0xf8,
- 0x80,0x90,0x88,0x83,
- 0xc6,0xa1,0x86,0x8e};
- unsigned char num=0;
- unsigned int temp=0;
- bit flag=0;
- bit mark=0;
- void InitTimer0(void)
- {
- TMOD = 0x01;
- TH0 = 0xD8;
- TL0 = 0xF0;
- EA = 1;
- ET0 = 1;
- TR0 = 1;
- }
- void key()
- {
- static int count=0;
- static bit sign=0;
- if(!key0)
- {
- if(++count>=100 && sign==0)//消抖+自鎖
- {
- sign=1;
- flag=~flag;
- }
- }
- else
- {
- count=0;
- sign=0;
- }
- }
- void Timer0Interrupt(void) interrupt 1//中斷周期10ms
- {
- static int i;
- TH0 = 0xD8;
- TL0 = 0xF0;
- if(++i>=100)//1秒
- {
- i=0;
- if(!flag)num=++num%10;//循環(huán)計(jì)數(shù)0~9
- mark=~mark;
- }
- }
- void main(void)
- {
- InitTimer0();
- while (1)
- {
- key();
- if(!flag)
- {
- temp=0x01<<num;
- P0=temp; //P0顯示temp的低8位
- P1=temp>>8|0xfc; //P1.0、P1.1顯示temp的9、10位,P1.2~1.7保持原來電平不變
- P2=table[num]|0x80;//P2.7保持高電平不變
- }
- else
- {
- if(mark)
- {
- P0=0x00;
- P1&=0xfc;//P1.2~1.7保持原來電平不變
- }
- else
- {
- P0=0xff;
- P1|=0x03;//P1.2~1.7保持原來電平不變
- }
- }
- }
- }
復(fù)制代碼
|
|