ICC AVR 左移问题

2019-07-15 10:27发布

屏幕截图(33).png
程序的大意是,前面部分7脚亮灭(目的是看看程序是否运行),然后左移n位--脚亮灭。用temp来左移实现位操作置高熄灭。但是实际是temp左移1,2位可以实现灭,大于3后就一直亮着,程序仍然循环,只是n脚不灭。
不至于能够左移2位,不能左移大于3位吧!我直接把PORTA=PORTA|(3<<temp)改为PORTA=PORTA|0x08后又是可以熄灭的。

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
8条回答
追风逐月
2019-07-16 06:47
人中狼 发表于 2017-6-15 14:24
在51里,直接对引脚进行位赋值的话,得这个引脚可以进行位寻址,否则只能对整个端口赋值。进行位赋值时,可以用sbit对想赋值的引脚进行命名,然后对这个名称进行赋值就可以了。
比如sbit led_0 = P1^0;led_0 = 1;这样就可以置P1.0为1了。这是51里的 ...

所以我觉得51比AVR方便啊,像1602里面写IO口时序的时候,AVR的位控制用起来太不方便了。
AVR里面我要把一个变量(不确定的0,1)赋给位,应该怎么实现呢?

一周热门 更多>