51单片机应用从零开始(一)-CSDN博客
51单片机应用从零开始(二)-CSDN博客
51单片机应用从零开始(三)-CSDN博客
51单片机应用从零开始(四)-CSDN博客
51单片机应用从零开始(五)·加减乘除运算-CSDN博客
详解 KEIL C51 软件的使用·建立工程-CSDN博客
详解 KEIL C51 软件的使用·设置工程·编绎与连接程序-CSDN博客
目录
1. P0 口显示逻辑ʺ与ʺ运算结果
2. P0 口显示条件运算结果
3. P0 口显示按位ʺ异或ʺ运算结果
4. 用 P0 显示左移运算结果
5. ʺ万能逻辑电路ʺ实验
6. 总结
1. P0 口显示逻辑ʺ与ʺ运算结果
逻辑运算是根据对真值的操作来判断命题的真假关系的运算。常见的逻辑运算包括:
非(not)运算:对命题取反,表示命题的否定。例如,“今天不下雨”。
与(and)运算:当且仅当所有命题都为真时,结果为真。例如,“今天既不下雨,又不刮风”。
或(or)运算:当且仅当至少有一个命题为真时,结果为真。例如,“今天下雨或刮风”。
异或(xor)运算:当且仅当有且仅有一个命题为真时,结果为真。例如,“今天只下雨或只刮风”。
蕴含(implication)运算:当且仅当条件命题为真时,结果命题为真。例如,“如果今天下雨,那么地面就会湿润”。
双向蕴含(bi-implication)运算:当且仅当条件命题和结果命题都为真或都为假时,结果命题为真。例如,“今天下雨当且仅当地面会湿润”。
C语言中的逻辑运算符包括:
-
逻辑与运算符:&&(也可用and表示)
-
逻辑或运算符:||(也可用or表示)
-
逻辑非运算符:!
这些逻辑运算一般用于判断语句中的条件表达式,例如在if语句和while语句中。逻辑运算的结果通常是一个布尔值,即true或false。在C语言中,true用1表示,false用0表示。
#include<reg51.h> //包含单片机寄存器的头文件
void main(void)
{
P0=(4>0)&&(9>0xab);//将逻辑运算结果送 P0 口
while(1)
; //设置无限循环,防止程序“跑飞”
}
2. P0 口显示条件运算结果
C语言中的条件运算使用三目运算符(?:)来表示。其语法形式如下:
condition ? expression1 : expression2
如果condition为真,则返回expression1的值,否则返回expression2的值。
#include<reg51.h> //包含单片机寄存器的头文件
void main(void)
{
P0=(8>4)?8:4;//将条件运算结果送 P0 口,P0=8=0000 1000B
while(1)
; //设置无限循环,防止程序“跑飞”
}
三目运算符是一种简化条件判断语句的方式,也被称为“三元表达式”。它的语法结构如下:
表达式1 ? 表达式2 : 表达式3
如果表达式1的值为真(即非零),则整个表达式的值为表达式2的值,否则为表达式3的值。可以理解为,如果表达式1成立,执行表达式2,否则执行表达式3。三目运算符通常用于条件赋值或条件返回语句的简化,可以使代码更加简洁和易读。
3. P0 口显示按位ʺ异或ʺ运算结果
按位"异或"运算是指对两个二进制数的每一位进行比较,相同则结果为0,不同则结果为1。例如,对于二进制数1010和1101进行按位"异或"运算,结果为0111。
符号表示为"^",例如a^b表示对a和b进行按位"异或"运算。
具体表现如下所示:
操作数A | 操作数B | 运算结果 |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
#include<reg51.h> //包含单片机寄存器的头文件
void main(void)
{
P0=0xa2^0x3c;//将条件运算结果送 P0 口,P0=8=0000 1000B
while(1)
; //设置无限循环,防止程序“跑飞”
}
4. 用 P0 显示左移运算结果
左移运算是一种位运算,用于将一个二进制数的所有位向左移动指定的位数,同时在右侧补上零。左移运算符是“<<”,例如:
a = 3 << 2
在这个例子中,将数字3左移2位,结果为12。原因是将数字3转换为二进制数为“11”,向左移动2位后变成“1100”,即12的二进制表示。
#include<reg51.h> //包含单片机寄存器的头文件
void main(void)
{
P0=0x3b<<2;//将左移运算结果送 P0 口,P0=1110 1100B=0xec
while(1)
; //无限循环,防止程序“跑飞”
}
5. ʺ万能逻辑电路ʺ实验
万能逻辑电路(Universal Logic Gate,简称ULG),顾名思义是一种具有多种基本逻辑运算功能的电路。在实验中,可以使用多种逻辑门电路的组合,实现任意逻辑函数的计算,因此也被称为“可编程逻辑门电路”(Programmable Logic Gate,简称PLG)。
实验具体流程:
-
准备实验器材和材料,包括逻辑门电路模块、电源、通用电路板、杜邦线、开关和数码管等。
-
根据所需逻辑函数的真值表,确定逻辑门的类型和连接方式,并用杜邦线将它们接在通用电路板上。
-
测试电路的正确性,将输入信号带入电路,观察输出结果,与真值表进行比对,确保电路计算正确。
-
可以将多个逻辑门电路模块和其他电路模块组合使用,实现更复杂的逻辑计算。
-
最后,将逻辑函数的结果显示在数码管上,以检查电路设计的正确性。
通过实验,可以更好地了解逻辑门电路的原理和工作方式,掌握逻辑设计的基本方法和技能。
#include<reg51.h> //包含单片机寄存器的头文件
sbit F=P1^4; //将 F 位定义为 P1.4
sbit X=P1^5; //将 X 位定义为 P1.5
sbit Y=P1^6; //将 Y 位定义为 P1.6
sbit Z=P1^7; //将 Z 位定义为 P1.7
void main(void)
{
while(1)
{
F=((~X)&Y)|Z; //将逻辑运算结果赋给 F
;
}
}
6. 总结
#include<reg51.h> //包含单片机寄存器的头文件
/*****************************
函数功能:延时一段时间
*****************************/
void delay(void)
{
unsigned int n;
for(n=0;n<30000;n++)
;
}
/*****************************
函数功能:主函数
*****************************/
void main(void)
{
unsigned char i;
while(1)
{
P1=0xff;
delay();
for(i=0;i<8;i++)//设置循环次数为 8
{
P1=P1>>1; //每次循环 P1 的各二进位右移 1 位,高位补 0
delay(); //调用延时函数
}
}
}
更多推荐:
时光の尘_千题千解·Java面试宝典,Linux学习,C++学习-CSDN博客