#include<reg51.h> #define uchar unsigned char #define uint unsigned int //0~9的段碼 uchar code DSY_CODE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00}; //計數值分解后各個待顯示的數位 uchar DSY_Buffer[]={0,0,0}; uchar Count=0; sbit Clear_Key=P3^6; //數碼管上顯示計數值 void Show_Count_ON_DSY() { DSY_Buffer[2]=Count/100; //獲取3個數 DSY_Buffer[1]=Count%100/10; DSY_Buffer[0]=Count%10; if(DSY_Buffer[2]==0) //高位為0時不顯示 { DSY_Buffer[2]=0x0a; if(DSY_Buffer[1]==0) //高位為0,若第二位為0同樣不顯示 DSY_Buffer[1]=0x0a; } P0=DSY_CODE[DSY_Buffer[0]]; P1=DSY_CODE[DSY_Buffer[1]]; P2=DSY_CODE[DSY_Buffer[2]]; } //主程序 void main() { P0=0x00; P1=0x00; P2=0x00; IE=0x81; //允許INT0中斷 IT0=1; //下降沿觸發 while(1) { if(Clear_Key==0) Count=0; //清0 Show_Count_ON_DSY(); } } //INT0中斷函數 void EX_INT0() interrupt 0 { Count++; //計數值遞增 } |