[AVR单片机] 求助:最简单的流水灯程序

[复制链接]
 楼主| zhixf-0501 发表于 2011-9-20 11:01 | 显示全部楼层 |阅读模式
#include<iom128v.h>
main()
{
    DDRA=0xff;
   PORTA=0b11111110;//这一步
   while(1)
   {
        PORTA=PORTA<<1;
   }//下一步
}

大家好,我是新手,刚开始学128,刚写得最简单流水灯程序,我想让他只亮一个灯,然后只这个灯顺序闪,但是为什么调试时候会一个一个都点亮了
还有就是当我调试到“这一步”的时候为什么所有的流水灯全部亮了,然后调试到下一步的时候才开始亮一个

另外比如“0b11101110”,为什么是0指示的亮而1指示的灭呢,我看视频怎么是相反的呢
恳求各位大侠帮我解决疑惑,谢上。
老鱼探戈 发表于 2011-9-20 11:39 | 显示全部楼层
还真是新手,LED怎么点亮都不知道~
 楼主| zhixf-0501 发表于 2011-9-20 11:49 | 显示全部楼层
小弟惭愧,还请大侠帮忙
chen3bing 发表于 2011-9-20 13:52 | 显示全部楼层
要看你的硬件是怎么接的。
xwhua188 发表于 2011-9-20 15:11 | 显示全部楼层
首先看硬件的连接方式。然后用定时器配合定时亮,熄灯就可以实现了。
ayb_ice 发表于 2011-9-20 20:10 | 显示全部楼层
PORTA++
ccxlslr 发表于 2011-9-21 13:10 | 显示全部楼层
呵呵,太快.看不清就全点亮了,那个不是循环移位。
diweo 发表于 2011-9-21 19:17 | 显示全部楼层
照你的情况,应该是输出0点亮。
那么,在芯片复位的时候,PORTA=0x00,DDRA=0x00.当执行完DDRA=0xFF后,PORTA还是0x00,当然全亮了。再执行完 PORTA=0b11111110才只点亮最后一个。
而且,在循环中,执行一次循环PORTA=0b11111100,点亮2个,再执行6个循环后,PORTA又变成0x00了,全点亮了,再下去的循环不论再执行多少次,PORTA都是0x00,所以一直是全部点亮的。
fu10 发表于 2011-9-21 19:53 | 显示全部楼层
呵呵......的确是新手,调试跟实时运行是不一样的,调试时能看见结果,运行可能就看不见了,调试是延时很长的运行,还有软件太简单,运行起来就什么都看不见了.......
joyme 发表于 2011-9-22 09:06 | 显示全部楼层
加延时呀,不延时这么快得频率刷新,你将会看到所有的灯都是亮的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

10

帖子

1

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