单片机 c语言小问题

来源:百度知道 编辑:UC知道 时间:2024/05/15 03:50:45
if((PIND&0x10)==1)这个语句我想知道PIND是D端口的值,那么这个值和和0x10与时什么意思啊,有时又和0x20这个地址与?

这个事按位与运算,0x10 的二进制表示是0001,0000,PIND&0x10是只判断第五位的数值是不是1,其他位全部不管,不过这样写if((PIND&0x10)==1)好像不对呀,应该写成if((PIND&0x10)==0x10)这样才能读出第五位的数值。
同理,与0x20与就是只保留第六位的值呀!

0x10=00010000,跟0x01相与也就是取它的第4位的值,if((PIND&0x10)==1)意思是判断PIND的第4位等不等于1,0x20也是同样的意思

语句说明PIND的值与十六进制数0x10也就是0001 0000 相与之后输出的值,是否为1。

PIND&0x10 是取出PIND的第5位
PIND&0x20 是取出PIND的第6位