发表于:2008/8/11 13:37:00
#0楼
//2个2位数码管分别实现分、秒显示程序
#include //包括一个52标准内核的头文件
#define uchar unsigned char //定义一下方便使用
#define uint unsigned int
#define ulong unsigned long
uchar code dx516[3] _at_ 0x003b;//这是为了仿真设置的
//共11个字模:依次为
//0,1,2,3,4,5,6,7,8,9,
uchar code numcode[11]={0x84,0xee,0x45,0x46,0x2e,0x16,0x14,0xce,0x04,0x0e,0xff};
//定义分,秒
uchar min=0; //分
uchar miao=0; //秒
uchar fm=0; //记数
uchar dis[4]; //4位显示缓存
void main(void) // 主程序
{
rcap2h =0xf6; //1/400秒中断一次
rcap2l =0x3c;
tr2=1; //启动定时器
et2=1; //打开定时器2中断
pt2=1; //定时器2优先
ea=1; //打开总中断
while(1) //程序循环
{
//显示数据
dis[3]=min/10; //显示分
dis[2]=min%10;
dis[1]=miao/10; //显示秒
dis[0]=miao%10;
}
}
//定时器2中断,兼led扫描和时钟
timer2() interrupt 5
{
uchar code p1line[4]={0xfe,0xfd,0xf7,0xfb}; //p0扫描线,轮流用低点品扫描4条线,扫描4个数码管
static uchar t;
tf2=0;
t++;
//时间计时
if(t==4)
{
t=0;
fm++; //分秒加1
if(fm==100)
{
fm=0;
miao++; //秒加1
if(miao==60)
{
miao=0;
min++; //分加1
if(min==60)
{
min=0;
}
}
}
}
//扫描数码管
p0= 0xff; //这句是防止出现鬼影,
p2=numcode[dis[t]];
p0= p1line[t];
}
----------------------------------------------
此篇文章从博客转发
原文地址: Http://blog.gkong.com/more.asp?id=58503&Name=fww666