[AVR单片机] 关于C语言交通灯的编写出了点问题

[复制链接]
2486|1
 楼主| 初学者007 发表于 2007-4-26 16:00 | 显示全部楼层 |阅读模式
这个程序能显示数字但是不能倒记时,数字一直显示15,请高手帮忙找找原因,谢谢!
#include<reg51.h>
#include<absacc.h>
#define zhiwei XBYTE [0x3fff]    //字位的地址
#define zhixing XBYTE [0x5fff]   //字型的地址
#define deng XBYTE [0x1fff]      //灯的地址
#define uchar unsigned char
#define uint unsigned int
light(uchar a)  ;
xianshi(uint b);
void delay();

uint e,b;
//===============中断服务程序===================
time() interrupt 1 using 1
{TH0=0x3c;
TL0=0xb0;
if(--e==0)
{--b;
e=20;}
}
void delay()
{uint i;
for(i=0;i<100;++i);
}
//====灯显示程序====
light(uchar a)
{deng=a;
}
//===倒记时程序========
xianshi(uint b)
{while(b)
{const unsigned char design[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xf8,0x80,0x90};
zhiwei=0x02;            //确定字位
zhixing=design[b/10];     //确定字型
zhiwei=0x00;
delay();
zhiwei=0x01;
zhixing=design[b%10];
zhiwei=0x00;
delay();

}
}

void main()
{
e=20;
TMOD=0X01; //定时和中断的初始化
EA=1;
TR0=1;
ET0=1;
TH0=0x3c;
TL0=0xb0;
while(1)
{light(0x80);
xianshi(15);
light(0x40);
xianshi(6);
light(0x20);
xianshi(7);
}
}
lbk708 发表于 2007-4-26 16:42 | 显示全部楼层

xianshi(15);

xianshi(15);
主程序里每次都把15发过去,然后每次都会把15传给b,所以每次都把b刷新为15
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

10

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部