完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
程序的大意是,前面部分7脚亮灭(目的是看看程序是否运行),然后左移n位--脚亮灭。用temp来左移实现位操作置高熄灭。但是实际是temp左移1,2位可以实现灭,大于3后就一直亮着,程序仍然循环,只是n脚不灭。 不至于能够左移2位,不能左移大于3位吧!我直接把PORTA=PORTA|(3< |
|
相关推荐
10个回答
|
|
写反了,应该是temp<<3
最佳答案
|
|
|
|
我的目的是想进行IO口的位赋值。听说有个头文件可以直接位赋值,但是不知道是什么头文件,网上也找不到,
|
|
|
|
|
|
|
|
在51里,直接对引脚进行位赋值的话,得这个引脚可以进行位寻址,否则只能对整个端口赋值。进行位赋值时,可以用***it对想赋值的引脚进行命名,然后对这个名称进行赋值就可以了。
比如***it led_0 = P1^0;led_0 = 1;这样就可以置P1.0为1了。这是51里的 |
|
|
|
人中狼 发表于 2017-6-15 14:24 所以我觉得51比AVR方便啊,像1602里面写IO口时序的时候,AVR的位控制用起来太不方便了。 AVR里面我要把一个变量(不确定的0,1)赋给位,应该怎么实现呢? |
|
|
|
没用过AVR,你需要查一下芯片手册,STM32是有专门的寄存器来给引脚置1和置0,51里可以用与和或的方法赋值,比如置P1.0为1,可以是P1 |= 0X01,置P1.0为0,可以是P1 &=0XFE。
|
|
|
|
人中狼 发表于 2017-6-15 18:56 51可以直接P1.1=a,但是AVR不可以,只能是PORTA=0xnn,也就是只能8位一起操作,而且还是赋常量,变量我还没想出来怎么用逻辑来实现,貌似逻辑实现不了。PORTA |= (a< |
|
|
|
51可以直接P1.1=a,但是AVR不可以,只能是PORTA=0xnn,也就是只能8位一起操作,而且还是赋常量,变量我还没想出来怎么用逻辑来实现,貌似逻辑实现不了。PORTA |= (a<
|
|
|
|
这样的话,你只能先读一次端口到变量里,然后修改相应的位,之后再写到端口里
|
|
|
|
只有先读端口,然后判断端口相应位是0还是1,然后在用与或来赋值。我估计这种为赋值变量应该用得少,碰到再说了 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
875 浏览 2 评论
【youyeetoo X1 windows 开发板体验】+ 影音处理和AI模型移植
730 浏览 5 评论
I.MX6ULL-飞凌 ElfBoard ELF1板卡- 移植zbar的方法
888 浏览 0 评论
1566 浏览 3 评论
由于 Windows 无法加载这个设备所需的驱动程序,导致这个设备工作异常?
2452 浏览 1 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
3773 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-3-29 19:34 , Processed in 0.503038 second(s), Total 49, Slave 40 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 深圳华秋电子有限公司
电子发烧友 (电路图) 粤公网安备 44030402000349 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号