#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ù)碼管全部是黑的 求高手解答。
[此貼子已經(jīng)被作者于2012-4-5 16:54:44編輯過]
|