我用定时器做的流水灯为什么起不到延时效果

2019-03-24 17:45发布

      各位大师好,本人刚学单片机,本想用定时器做个流水灯,但却没有流水效果,程序烧进去后,灯是全亮的。不知道定时延时有问题还是自减循环有问题,请各位大师指点迷津,感谢!!
      以下是我写程序
#include<reg52.h>
void TO_chushihua()
{
TMOD=0x01;  
TH0=0;
TL0=0;

ET0=1;
TR0=1;
EA=1;
}
void main()
{
unsigned char i=255;
while(1)
{
   P1=i;
  TO_chushihua();
  i--;
}
}
此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
16条回答
硕果累累
1楼-- · 2019-03-25 02:45
 精彩回答 2  元偷偷看……
dcexpert
2楼-- · 2019-03-25 02:50
这个程序你没有仔细看吧,while中不停初始化,也没有控制LED的代码,这样什么功能也实现不了。
16816
3楼-- · 2019-03-25 05:15
硕果累累 发表于 2015-12-3 21:45
请仔细看定时器的说明,看人家的程序结构和思路。

是一定要加interrupt 1说明吗?
16816
4楼-- · 2019-03-25 07:59
 精彩回答 2  元偷偷看……
飞翔荷兰人号
5楼-- · 2019-03-25 11:44
初始化一次就够了,初始化的函数放到while前面,另外你的程序没提到LED啊
stickler
6楼-- · 2019-03-25 11:55
看楼主的意思,P1口输出连接的是几个led,想让产生流水效果,应该是在中断处理函数中改变P1的输出,控制i自减1。初始化定时器在main中执行一次即可,后面的无限循环可以什么都不干。你的程序中,定时器的延时作用没有起,在主函数中一直被初始化,顺序执行的那几条指令的延时太短,led也在流水点亮,只是人眼反应不过来。

一周热门 更多>