基于proteus的51单片机仿真实例十八、用单片机端口演示数据的加法和减法运算 4000 结果
2017-04-30 07:09
363 查看
1、通过上一节的实例,我们了解到即使相同的数据,如果采用不同的数据类型来表示,最终的运行结果也可能有很大的区别。
在用C51进行程序设计时,对于变量的数据类型选择有如下经验:
1)尽量预算一下变量的数据变化范围,根据变量长度来选择变量类型。尽量选择长度短的数据类型来定义变量。这样不但可以提高代码效率,还能节省CPU时间,减少内存的消耗。
2)尽量使用无符号类型的变量,如果用到负数,则尽可能把符号和数据分开定义,可以用一个位变量来表示数值的正负。
3)如果程序中不需要浮点数,则尽量避免使用浮点数。要知道,浮点数要占用32位数据空间,而51单片机的数据处理能力是8位,不难看出,51单片机处理浮点数会浪费大量时间。
2、本例使用单片机的P0口和P1口分别显示两个无符号字符型数据的加法和减法的运算结果
3、在kei c51中新建工程文件ex6,输入如下的程序代码,编译并生成ex6.hex文件
//实例6:使用P0口和P1口分别显示加法和减法的运算结果
#include <reg51.h> //包含单片机寄存器定义的头文件
void main(void)
{
unsigned char num1,num2,add,sub; //定义无符号型字符变量,注意这里的变量都有比较明确的含义
//num1,num2表示数1和数2;add表示两数相加后的和,sub表示两数
//相减后的差。这样定义变量可以很清晰地表示出变量的意义
num1 = 100; //将数1赋值
num2 = 50; //将数2赋值
add = num1 + num2; //数1+数2所得的和保存到变量add中
sub = num1 - num2; //数1-数2所得的差保存到变量sub中
P0 = add; //P0显示两数相加后的和
P1 = sub; //P1显示两数相减后的差
while(1) //无限循环,防止程序跑飞。在单片机的C语言程序中,主函数中的这个
{ //无限循环函数是必须的,建议尽量不要省略
//之前有些程序中没有这个无限循环函数,是为了演示方便,实际使用中
} //必须要有这个无限循环函数
}
4、在proteus中绘制仿真电路图ex6.dsn,电路图如下所示。将上面编译好的ex6.hex文件载入AT89C51。
5、启动仿真,程序运行结果如下图所示:我们可以通过手工计算两数相加和相减后的结果与运行结果进行对照检查。
在用C51进行程序设计时,对于变量的数据类型选择有如下经验:
1)尽量预算一下变量的数据变化范围,根据变量长度来选择变量类型。尽量选择长度短的数据类型来定义变量。这样不但可以提高代码效率,还能节省CPU时间,减少内存的消耗。
2)尽量使用无符号类型的变量,如果用到负数,则尽可能把符号和数据分开定义,可以用一个位变量来表示数值的正负。
3)如果程序中不需要浮点数,则尽量避免使用浮点数。要知道,浮点数要占用32位数据空间,而51单片机的数据处理能力是8位,不难看出,51单片机处理浮点数会浪费大量时间。
2、本例使用单片机的P0口和P1口分别显示两个无符号字符型数据的加法和减法的运算结果
3、在kei c51中新建工程文件ex6,输入如下的程序代码,编译并生成ex6.hex文件
//实例6:使用P0口和P1口分别显示加法和减法的运算结果
#include <reg51.h> //包含单片机寄存器定义的头文件
void main(void)
{
unsigned char num1,num2,add,sub; //定义无符号型字符变量,注意这里的变量都有比较明确的含义
//num1,num2表示数1和数2;add表示两数相加后的和,sub表示两数
//相减后的差。这样定义变量可以很清晰地表示出变量的意义
num1 = 100; //将数1赋值
num2 = 50; //将数2赋值
add = num1 + num2; //数1+数2所得的和保存到变量add中
sub = num1 - num2; //数1-数2所得的差保存到变量sub中
P0 = add; //P0显示两数相加后的和
P1 = sub; //P1显示两数相减后的差
while(1) //无限循环,防止程序跑飞。在单片机的C语言程序中,主函数中的这个
{ //无限循环函数是必须的,建议尽量不要省略
//之前有些程序中没有这个无限循环函数,是为了演示方便,实际使用中
} //必须要有这个无限循环函数
}
4、在proteus中绘制仿真电路图ex6.dsn,电路图如下所示。将上面编译好的ex6.hex文件载入AT89C51。
5、启动仿真,程序运行结果如下图所示:我们可以通过手工计算两数相加和相减后的结果与运行结果进行对照检查。
相关文章推荐
- 基于proteus的51单片机仿真实例二十、用单片机端口演示数据的除法运算结果
- 基于proteus的51单片机仿真实例十九、用单片机端口演示数据的乘法运算结果
- 基于proteus的51单片机仿真实例二十一、C语言的自增和自减运算演示实例
- 基于proteus的51单片机仿真实例四十七、C语言的指针演示实例
- 基于proteus的51单片机仿真实例二十五、C51中移位位运算符演示实例
- 基于proteus的51单片机仿真实例二十八、C语言的if条件语句演示实例
- 基于proteus的51单片机仿真实例四十八、C语言的指针数组演示实例
- 基于proteus的51单片机仿真实例四十九、C语言数组的指针演示实例
- 基于proteus的51单片机仿真实例四十五、C语言的共用体演示实例
- 基于proteus的51单片机仿真实例四十二、C语言的二维数组演示实例
- 基于proteus的51单片机仿真实例二十七、C语言的语句演示实例
- 基于proteus的51单片机仿真实例二十三、C51条件运算符演示实例
- 基于proteus的51单片机仿真实例二十二、C51逗号运算符演示实例
- 基于proteus的51单片机仿真实例十七、用不同的数据类型控制LED灯的闪烁频率
- 基于proteus的51单片机仿真实例五十五、外部中断1演示实例
- 基于proteus的51单片机仿真实例四十六、C语言的枚举类型演示实例
- 基于proteus的51单片机仿真实例五、第一个proteus仿真实例(续)
- 基于proteus的51单片机仿真实例十、51单片机的P0口的工作原理
- 基于proteus的51单片机仿真实例二十九、C语言的switch-case多分支选择语句
- 基于proteus的51单片机仿真实例一、说明