打印
[技术问题解答]

怎么判断具体某一位

[复制链接]
466|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
小帅哥哥|  楼主 | 2015-9-16 11:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
现在想实现这样一个功能:串口接收到一个八位的数据,比如0x0000 1111,八位对应八个LED。。现在想实现的是,当为 0 时LED闪烁,当为 1 时 LED常亮。比如0x1111 1111 就是八个LED全部常亮,0x0000 0000 就是八个LED全部在闪烁。0x0000 1111 就是前四个在闪烁,后四个在常亮。。串口接收到任何一个八位数据,怎么去判断这八位具体的是 0 还是 1 。。我不可能将所有的情况(0x00000000,0x00000001,0x00000010.......)在程序里全部列举出来的呀。  有什么办法可以实现我的想法么。求大神。。。

相关帖子

沙发
香水橙| | 2015-9-16 11:36 | 只看该作者
楼主刚开始学C语言吧?

提示:使用移位操作和循环。

使用特权

评论回复
板凳
小帅哥哥|  楼主 | 2015-9-16 12:02 | 只看该作者
香水橙 发表于 2015-9-16 11:36
楼主刚开始学C语言吧?

提示:使用移位操作和循环。

比如判断第一位。接收到的数据是 00010011  是不是先和01111111相或得到01111111 然后再和11111111相与得到01111111,是这样的么,但是这样得到的结果还是一大串啊。程序里怎么读出这第一位啊

使用特权

评论回复
地板
FSL_TICS_ZJJ| | 2015-9-16 12:37 | 只看该作者
小帅哥哥 发表于 2015-9-16 12:02
比如判断第一位。接收到的数据是 00010011  是不是先和01111111相或得到01111111 然后再和11111111相与得 ...

先取具体位,然后再根据位值去控制其他的IO状态。
很简单的一个举例,比如你值是A=00010011(b), 取最高位,可以(A&0x80)这样就可以取到值了,然后判断这个值是0X80还是0X00,再分别控制LED状态。
楼主可以先找点单片机的书看看。

使用特权

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

本版积分规则

22

主题

71

帖子

0

粉丝