版權聲明:本文爲博主原創文章。未經博主贊成不得轉載。 https://blog.csdn.net/u011046042/article/details/37881715
#include<reg52.h> #define uchar unsigned char #define uint unsigned int sbit dula=P2^6; sbit wela=P2^7; sbit led1=P1^0; uchar code table[]= {0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f, 0x77,0x7c,0x39,0x5e,0x79,0x71 }; void delayms(uint); void display(uchar,uchar); uchar num,num1,num2,shi,ge; void main() { TMOD=0x01;//設置定時器0和1爲工做方式1(00010001)TH0=(65536-45872)/256;//裝初值TL0=(65536-45872)%256;TH1=(65536-45872)/256;//裝初值TL1=(65536-45872)%256;EA=1;ET0=1;ET1=1;TR0=1;TR1=1;while(1){display(shi,ge);} } void display(uchar shi,uchar ge) {dula=1;P0=table[shi];dula=0;wela=1;P0=0xfe;wela=0;delayms(5);dula=1;P0=table[ge];dula=0;wela=1;P0=0xfd;wela=0;delayms(5); } void delayms(uint xms) {uint i,j;for(i=xms;i>0;i--)for(j=110;j>0;j--); } void T0_time() interrupt 1 {TH0=(65536-45872)/256;//重裝初值TL0=(65536-45872)%256;num1++;if(num1==4) //假設到了4次,說明200ms的時間到了{num1=0; //而後吧num1清0又一次再計4次led1=~led1; //讓發光管狀態取反} } void T1_time() interrupt 3 {TH1=(65536-45872)/256;//重裝初值TL1=(65536-45872)%256;num2++;if(num2==200) //假設到了20次,說明1秒時間到{num2=0; //清0,再計時num++;if(num==60) //到60歸0num=0;shi=num/10;ge=num%10;} }