基于proteus的51单片机仿真实例十八、用单片机端口演示数据的加法和减法运算结果

来源:互联网 发布:推广软件返现金 编辑:程序博客网 时间:2024/05/17 22:26
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、启动仿真,程序运行结果如下图所示:我们可以通过手工计算两数相加和相减后的结果与运行结果进行对照检查。


0 0
原创粉丝点击