#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编辑过]
|