#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};//分別對應相應的數碼管點亮,即位碼 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 //定時器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++; //顯示分鐘數碼管 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; } } } } 不知道哪兒錯了 定時器能正正常運行(LED會閃爍說明可以進到IF(20=k)程序)可結果 不是按 我預想的 電子鐘表 而是 秒的 十位 的數碼管計數 其他的數碼管全部是黑的 求高手解答。
[此貼子已經被作者于2012-4-5 16:54:44編輯過]
|