51单片机拆字程序实验

一、实验内容

1.基本要求

熟悉51仿真系统;设计并单步调试,实现将R5中数值(初值为本人学号后两位)拆分成两位独立的数据分别存于R6,R7中;

2.扩展要求

将R6,R7中的被拆出来的一位HEX数据转换为可显示的ASCII编码;

3.思考要求

分析BIN,HEX,BCD, ASCII等不同编码的数学意义及表现形式上的异同。

二、理论分析或算法分析

要求将R5中的数值分开高四位和低四位显示在R6和R7当中,R5的二进制有八位,需要将R5拆成两部分,变成两个独立的数据,分别保存在R6,R7当中,R6保存R5的高四位,R6的高四位为0000,;R7保存R5的低四位,R7的高四位为0000;

实现拆字实验有以下方法:

  1. XCHD、SWAP使用累加器互换,将7654的值与3210的值进行交换;
  2. 使用除法,R5除以10H,可以得到商是7654,余数是3210;
  3. 使用逻辑运算,R5与0F0H  以及R5 与0FH;

R5:7654 3210  27H

R6:xxxx 7564

R7:xxxx 3210

扩展要求:

R5:7654 3210   27H

R6:xxxx 7564   02H

R7:xxxx 3210   07H

对应的数据是3和5,对应的数据取值范围是从0到15,0到9的转化结果是30H到39H,10到15转化的结果需要转化为A到F的转变;

实现的办法:

  1. 直接进行数学计算;R6和R7大于等于10,就把内容变成+41H-10=55,反之,直接加30H=48;
  2. 可以使用查表的方法,“0123456789ABCDEF”,movc  A,@A+DPTR

三、实现方法

基本要求代码

使用方法一的代码:

51单片机拆字程序实验_第1张图片

使用方法二的代码:

51单片机拆字程序实验_第2张图片

扩展要求代码

51单片机拆字程序实验_第3张图片

四.实验结果分析

基本要求结果

方法一执行过程:

取R5为27H.

51单片机拆字程序实验_第4张图片

单步运行:(R7赋值为00H)

51单片机拆字程序实验_第5张图片

(R0赋值为07H) 

51单片机拆字程序实验_第6张图片      51单片机拆字程序实验_第7张图片     51单片机拆字程序实验_第8张图片

执行结果:(R6为02,R7为07)

51单片机拆字程序实验_第9张图片

方法二执行过程:

取R5为27H,

51单片机拆字程序实验_第10张图片

单步执行:

51单片机拆字程序实验_第11张图片   51单片机拆字程序实验_第12张图片    51单片机拆字程序实验_第13张图片

实现结果:(R6中保存2,R7中保存7)

51单片机拆字程序实验_第14张图片

扩展要求结果

51单片机拆字程序实验_第15张图片

出现的问题

(1)表达语法错误:

51单片机拆字程序实验_第16张图片

51单片机拆字程序实验_第17张图片

(2)表达语法错误:

51单片机拆字程序实验_第18张图片

51单片机拆字程序实验_第19张图片

解决方法

1.将A5保存到A当中,将R7保存到B当中;

2.使用寄存器间接寻址;

五、结论

在本次实验中,学会了如何使用medwin编程来实现对字节的拆分,使用了两种算法来将一个字节的数拆分成两个数值,将其高四位存于一个数,将其低四位存于一个数,了解到了medwin的操作以及窗口平铺等功能。

思考题:分析BIN,HEX,BCD, ASCII等不同编码的数学意义及表现形式上的异同。

BIN在数字上表示的是二进制。其数值为0和1,是计算机中的最小的存储单位;而HEX表示的是十六进制。其数值范围为0到9、A到F,便于在计算机中进行计算ASCII是单字节编码系统,定义字符表示;而BCD码是用来解决二进制和十进制之间的一些转换。

你可能感兴趣的:(51单片机实验,51单片机,嵌入式硬件,单片机)