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

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条回答
dcexpert
1楼-- · 2019-03-25 13:52
 精彩回答 2  元偷偷看……
ywlzh
2楼-- · 2019-03-25 17:20
看来什么程序都会有啊,一点都不严谨的思路,就一个流水灯,又是定时器又想延时,基础不好啊,首先,初始化的部分不能让CPU一直干,如果一直都在弄初始化,程序就像是没有启动过。既然用定时器,就别用延时了,中断时间到了改变下P1的输出状态不就行了,
huaiqiao
3楼-- · 2019-03-25 20:13
建议楼主仔细看下51的定时器是这么用的吗?如果不知道的话,看看郭天祥的那本书中怎么用
16816
4楼-- · 2019-03-25 23:38
 精彩回答 2  元偷偷看……
鹏鹏0830
5楼-- · 2019-03-26 02:44
TO_chushihua();很明显是初始化,既然是初始化只要执行一次就够了,就不要放while(1)里了,而且你配了定时器,又不写中断入口,就是你说的interrupt 1,你这个东西不写,你配定时器配了干嘛呢,你这个程序只会一直在while(1)里跑,你的本意应该是想定时去减i,减i的工作应该在中断里做,很明显你没有写中断。
你应该还没有弄清延时和定时器的区别,可能你延时也没理解的很明白,定时器需要花点时间去理解的,好好看看书。定时器是非常重要的,和你认为的延时完全是两码事
ienglgge
6楼-- · 2019-03-26 08:23
前面的坛友,说得差不多了。初始化,和延时的使用。另外,即使加了延时,也不是流水灯吧。IO直接连的led的话。不是依次变亮或熄灭。

一周热门 更多>