#include<reg52.h> #define uchar unsigned char #define uint unsigned int sbit dula=P2^6; //數(shù)選 sbit wela=P2^7; //位選 sbit led1=P1^0; //led燈 uchar code table[]={ 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71 }; uchar num,num1,num2,shi,ge; /*==========================延時(shí)函數(shù)=================================*/ void delayms(uint k) { uint i,j; for(i=k;i>=0;i--) for(j=110;j>=0;j--); } /*===========================數(shù)碼管動(dòng)態(tài)顯示函數(shù)======================*/ void display(uchar shi,uchar ge) { dula=1; P0=table[shi]; dula=0; P0=0xff; // 消影 wela=1; P0=0xfe; wela=0;/////// delayms(5);
dula=1; P0=table[ge]; dula=0; P0=0xff; wela=1; P0=0xfd; wela=0; delayms(5); }
/*=================T0中斷函數(shù)================*/ /*=========二極管200毫秒閃爍==========*/ void T0_time()interrupt 1 { TH0=(65536-45872)/256; //(65536-50/(12*(1/11.0592))) TL0=(65536-45872)%256; //重裝初值(uint)(65536-50/(12*(1/11.0592))) num1++; if(num1==4) { num1=0; led1=~led1; } }
/*=============T1中斷函數(shù)===================*/ /*===============數(shù)碼管59秒循環(huán)計(jì)時(shí)==========*/ void T1_time()interrupt 3 { TH1=(65536-45872)/256; TL1=(65536-45872)%256; //重裝初值 num2++; if(num2==20) { num2=0; num++; if(num==60) num=0; ge=num%10; shi=num/10; } ; ////////////////////////// }
/*============main============*/ void main() { TMOD=0x11; 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); } } /*顯示程序花費(fèi)的時(shí)間是多少,中斷程序執(zhí)行的時(shí)間是多少,有可能沖突了!!!*/ /*不知道是什么原因使得中斷一直在執(zhí)行,跳不出去了!!!!!!!!!!!!!!!*/
[此貼子已經(jīng)被作者于2012-4-28 11:31:40編輯過(guò)]
|