打印
[AVR单片机]

关于C语言交通灯的编写出了点问题

[复制链接]
1895|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

粉丝