|
- #include<reg52.h>
- #define uchar unsigned char
- #define uint unsigned int
- uint x;
- sbit P34=P3^4; //T0的控制管腳
- uchar tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //段碼表
- void delay1ms(uchar n) //1ms基準(zhǔn)延時(shí)
- {
- uchar i;
- while(n--)
- for(i=0;i<125;i++);
- }
- void display(uint x) //顯示函數(shù)
- {
- P2=0xdf; //DS5點(diǎn)亮
- P0=tab[x/100]; //顯示百位
- delay1ms(5);
- P2=0xbf; //DS6點(diǎn)亮
- P0=tab[x%100/10]; //顯示十位
- delay1ms(5);
- P2=0x7f; //DS7點(diǎn)亮
- P0=tab[x%10]; //顯示個(gè)位
- delay1ms(5);
- }
- void main()
- {
- TMOD=0x06; //0000 0110 使用計(jì)數(shù)器T0的工作方式2 自動(dòng)重裝
- EA=1; //開(kāi)總中斷
- ET0=1; //允許計(jì)時(shí)器T0的中斷
- EX0=1; //允許外中斷INT0
- IT0=1; //INT0為負(fù)跳變觸發(fā)
- TR0=1; //啟動(dòng)T0
- TH0=TL0=255; //計(jì)數(shù)器T0高8位賦值255
- //按鍵一下就溢出中斷,轉(zhuǎn)中斷服務(wù)程序
- while(1){ //無(wú)限循環(huán),不停的將TL0計(jì)數(shù)結(jié)果送向P1口
- //x=TL0
- display(x);
- }
- }
- void clear0() interrupt 0 //INT0中斷函數(shù)
- {
- x=0;
- }
- void key_counter() interrupt 1 //定時(shí)器中斷
- {
- if(P34==0){
- delay1ms(20); //消陡
- if(P34==0){
- x=(x+1)%1000;
- }
- }
- }
復(fù)制代碼
|
|