打印
[AVR单片机]

大哥大姐来帮帮忙啊,关于C语言的交通灯

[复制链接]
2080|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
初学者007|  楼主 | 2007-4-27 21:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
为什么我的程序会连续不断的传送xianshi(15)呢????????
我怎么也想不到会这样的啊!程序应该运行到xianshi(15);时跳到哪个子程序中了啊!怎么回还在传送xianshi(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);
}
}

相关帖子

沙发
孤傲雕| | 2010-11-23 10:14 | 只看该作者
在显示子程序中为什么用while(b) 呢???什么意思???是什么循环啊??死循环码??、怎么跳出啊???你那程序中为什么没有b--呢???
不太理解你的程序

使用特权

评论回复
板凳
板砖横飞| | 2010-11-23 12:19 | 只看该作者
07年的帖子怎么出来了?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

10

帖子

0

粉丝