#include<reg52.h>
sbit wei=P2^3;
sbit duan=P2^2;
unsigned char code duanma[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};// 顯示段碼值0~9
unsigned char code weima[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//分別對(duì)應(yīng)相應(yīng)的數(shù)碼管點(diǎn)亮,即位碼
unsigned char fen,shi,miao,k;
void main (void)
{ P0=0x24;
wei=1;
wei=0;
P0=duanma[0];
duan=1;
duan=0;
k=0;
P1=0x01;
TMOD=0x01;
EA=1;
ET0=1;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TR0=1;
while(1);
}
void dingshi0() interrupt 1 //定時(shí)器0中斷程序
{ TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
k++;
if(k==20)
{ miao++;
k=0;
P0=weima[7];
wei=1;
wei=0;
P0=duanma[miao%10];
duan=1;
duan=0;
P0=weima[6];
wei=1;
wei=0;
P0=duanma[miao/10];
duan=1;
duan=0;
P1=~P1;
if(59==miao)
{ miao=0;
P0=weima[7];
wei=1;
wei=0;
P0=duanma[miao%10];
duan=1;
duan=0;
P0=weima[6];
wei=1;
wei=0;
P0=duanma[miao/10];
duan=1;
duan=0;
fen++; //顯示分鐘數(shù)碼管
P0=weima[4];
wei=1;
wei=0;
P0=duanma[fen%10];
duan=1;
duan=0;
P0=weima[3];
wei=1;
wei=0;
P0=duanma[fen/10];
duan=1;
duan=0;
if(59==fen)
{
fen=0;
P0=weima[4];
wei=1;
wei=0;
P0=duanma[fen%10];
duan=1;
duan=0;
P0=weima[3];
wei=1;
wei=0;
P0=duanma[fen/10];
duan=1;
duan=0;
shi++;
P0=weima[1];
wei=1;
wei=0;
P0=duanma[shi%10];
duan=1;
duan=0;
P0=weima[0];
wei=1;
wei=0;
P0=duanma[shi/10];
duan=1;
duan=0;
}
if(24==shi)
{
P0=0x24;
wei=1;
wei=0;
P0=duanma[0];
duan=1;
duan=0;
}
}
}
}
不知道哪兒錯(cuò)了 定時(shí)器能正正常運(yùn)行(LED會(huì)閃爍說(shuō)明可以進(jìn)到IF(20=k)程序)可結(jié)果 不是按 我預(yù)想的 電子鐘表 而是 秒的 十位 的數(shù)碼管計(jì)數(shù) 其他的數(shù)碼管全部是黑的 求高手解答。
求幫忙
嘿。。。。中斷服務(wù)函數(shù)為么要做這么多事啊。
歡迎光臨 (http://www.torrancerestoration.com/bbs/) | Powered by Discuz! X3.1 |