单片机的问题

发布网友 发布时间:2022-04-22 07:46

我来回答

4个回答

热心网友 时间:2022-06-18 00:14

~是位运算符,表示按位取饭,而!是逻辑运算符,输出结果只有0和1.
P1是个8位的寄存器,如果你用~,就表示把这个字节的8个bit反或来,如果你用!,如果P1非0,得到的就是1,否则就是0,也就是说只对P1.0的控制有效。

一个LED只需要用1位,所以建议你用你后面提到的那种定义方式,运算的时候用~会好点。

热心网友 时间:2022-06-18 00:14

1.不是一样,“!”的结果要么是0要么是1,“~”的结果就是把原来的数各位取反。
“!”是逻辑非运算符;
“~”是位取反运算符;
2.
#define LED P1^0只把LED对应到P1.0口上,只有一位,LED=0x0f,怎么能把8为值赋给1位呢,会产生不正确的结果。

热心网友 时间:2022-06-18 00:14

'!'是取反;但'~'是按位取反;
在C 语言里除了0都按真算的!所以"!35"是等于0的!
但'~'是按位取反:比如说:
4--> 用二进制表示:0100
~4-->按位取反后:1011了-->十进制就是11了呀!所以不一样的!
你把P1按位异或了:0^0=0,1^0=1,0^1=1,1^1=1;
你算算不就知道了?不行的!

热心网友 时间:2022-06-18 00:15

我也在搞单片机,加我百度好友吧,以后经常讨论。。。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com