完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
单片机为stc宏晶单片机,8位单片机。我给一个状态变量赋值是。当我位操作是:
status |= 0x00800000; status |= 0x00400000; 结果正确。 先预定义 #define POS_STATUS_USECD 1<<18 #define POS_STATUS_USEBD 1<<19 status |= POS_STATUS_USEBD; status |= POS_STATUS_USECD; status 18 19位结果为0。不能达到我位或的结果 这个是怎么回事。希望知道的给个答复。谢谢。 |
|
相关推荐
4个回答
|
|
不好意思。18、19位数据应该为:
status |= 0x00080000; status |= 0x00040000; 坐等大神解答。不知道是不是只能操作16数据。 |
|
|
|
把十六进制改成二进制吧
|
|
|
|
|
|
|
|
你是不是用的uvsion软件来编程的?在uvison中整型常量默认为2个字节16位(可通过a=sizeof(1);语句来进行验证,在debug中查看a的值为2),1<<15后就变为1000 0000 0000 0000,再继续左移则高位的1溢出,以后一直为0000 0000 0000 0000,因此,1<<18和1<<19后16位上全为0(十进制0),再与status进行按位或运算就得不到正确结果。可将1改为长整形数据1L或1UL,此时1L或1UL为4字节数据32位,左移18位或19位后,1不会溢出,此时可得到正确结果。
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
《DNESP32S3使用指南-IDF版_V1.6》第三十章 DHT11数字温湿度传感器
122 浏览 0 评论
565 浏览 0 评论
【敏矽微ME32G070开发板免费体验】之原厂2812测试例程解析
772 浏览 0 评论
948 浏览 2 评论
《DNESP32S3使用指南-IDF版_V1.6》第二十六章 INFRARED_RECEPTION实验
658 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12043 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-27 01:46 , Processed in 0.603365 second(s), Total 78, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号