C51中的逻辑非(感叹号)与按位取反(~)

好久没碰单片机了,竟然对!与 ~搞不清了
!:逻辑非,最低位取反
~:按位取反,所有位取反

在开始本篇内容讲解前看如下原理图
C51中的逻辑非(感叹号)与按位取反(~)_第1张图片

思考:
1,当P2 = !P2时8盏LED灯会有什么效果?
2,当P2 = ~P2时8盏LED灯会又有什么效果?
注:51单片机P0-P3口上电/复位后每位都为高电平。

一,P2 = !P2
观察如下代码:

#include 
void main()
{
	unsigned int i=100000;
	while(1)
	{
		unsigned char temp;
		P2=~P2;
		while(--i);
	}
}

开发板演示:

01

可以看到:
8个LED灯闪烁

二,P2 = ~P2
观察如下代码:

#include 
void main()
{
	unsigned int i=100000;
	while(1)
	{
		unsigned char temp;
		P2=!P2;
		while(--i);
	}
}

开发板演示:

02

可以看到:
只有最低位LED灯闪烁

三,总结
!:逻辑非,最低位取反
~:按位取反,所有位取反

你可能感兴趣的:(51单片机,嵌入式硬件,开发语言)