打印

AVR单片机循环左移置位问题

[复制链接]
2519|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
renhuan333|  楼主 | 2011-6-25 09:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <mega16.h>
#include<delay.h>
unsigned char j;
void main(void)
{
PORTB=0xff;
DDRB=0xFF;
while(1)
      {
                PORTB=0x00;
      for(j=7;j>=0;j--)
                {
                PORTB|=(1<<j);
                delay_ms(300);
                 }
          };
}

为什么while(1)里这个for循环只循环一次就停止了呢?
而改成下边的形式就可以无限循环呢:
for(j=7;j>0;j--)
                {
                PORTB|=(1<<j);
                delay_ms(300);
                if(j==1)
                PORTB.0=1;
                }

主要是j>=0和j>0的原因,肯求解释!谢谢

相关帖子

沙发
NE5532| | 2011-6-25 12:00 | 只看该作者
unsigned char型,你用j>=0,可能出现j<0的情况么?你两个描述写翻了吧。

使用特权

评论回复
板凳
老鱼探戈| | 2011-6-25 13:23 | 只看该作者
LZ数据类型都没弄明白~

使用特权

评论回复
地板
renhuan333|  楼主 | 2011-6-26 03:57 | 只看该作者
谢谢楼上回答,知道为什么错了!

使用特权

评论回复
5
bnyuli| | 2011-6-27 15:11 | 只看该作者
知道错误的时候就需要典当了

使用特权

评论回复
6
renhuan333|  楼主 | 2011-6-29 22:49 | 只看该作者
典当什么意思啊?

使用特权

评论回复
7
jamin.x| | 2011-9-27 19:30 | 只看该作者
我没有这样做过左移,PORTB=0X01<<b:b++;……,你的两个左移函数功能不一样啊,位数不一样吧?

使用特权

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

本版积分规则

0

主题

37

帖子

1

粉丝