2020年哈工大单片机实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

哈工大单片机实验报告
Harbin Institute of Technology
单片机原理与应用
实验报告
学生姓名学班专
号级业
任课教师所在单位
软件实验
-1-
在软件实验部分,通过实验程序的调试,使学生熟悉MCS-51的指令系统,了解程序设计过程,掌握汇编语言设计方法以及如何使用实验系统提供的调试手段来排除程序错误。

实验一清零程序
一、实验目的
掌握汇编语言设计和调试方法,熟悉键盘操作。

二、实验内容
把2~2FFh的内容清零。

三、程序框图
四、实验过程
实验中利用MOVX语句,将外部存储器指定内容清零。

利用数据指针DPTR完成数据传送工作。

程序采用用循环结构完成,R移动单元的个数,可用CJNE比较语句判断循环是否结束。

五、实验结果及分析
【问题回答】清零前2H~2FFH中为内存里的随机数,清零后全变为。

-2-
六、实验源程序
;清零程序 ORG 64H
MOV DPTR,#2H ;(2H)送DPTR MOV R,#H
HERE: MOVX @DPTR,A ;送(DPTR)
INC DPTR ;DPTR+1 INC R
CJNE R,#FFH,HERE SJMP $ END
实验二拆字程序
一、实验目的
掌握汇编语言设计和调试方法。

二、实验内容
把2H的内容拆开,高位送21H低位,低位送22H低位,21H、22H高位清零,一般本程
序用于把数据送显示缓冲区时用。

三、程序框图
四、实验过程
将寄存器中内容送入2H,分别将高低四位移到低位,将高四位置零然后移入21H和22H
中。

利用MOVX指令、DPTR指针可实现数据的传送,利用高低四位交换指令SWAP和与指令ANL
可进行对高低位的清零。

五、实验结果及分析
-3-
【问题回答】将ANL A,#FH改为ORL A,#FH可以实现将高位置为1。

六、实验源程序
; 拆字程序
START:MOV DPTR,#2H MOVX A,@DPTR MOV R,A SWAP A
ANL A,#FH INC DPTR MOVX @DPTR,A MOV A,R ANL A,#FH INC DPTR MOVX @DPTR,A ENDEND
实验三拼字程序
一、实验目的
进一步掌握汇编语言设计和调试方法。

二、实验内容
把2H、21H的低位分别送入22H高低位,一般本程序用于把显示缓冲区的数据取出拼装
成一个字节。

-4-
三、程序框图
四、实验过程
本实验主要应用与指令ANL对高四位进行屏蔽,利用SWAP指令将2H低四位交换到高四
位,再用或ORL语句将2H和21H的高低四位组合在一起送入22H中,从而实现两个数低四位
组合。

五、实验结果及分析
【问题回答】本实验运行程序后22H内容为34H,即2H单元中低四位“3”作为22H的
高四位,21H的低四位“4”作为22H的低四位。

六、实验源程序
;拼字程序
START: MOV DPTR,#2H MOVX A,@DPTR ANL A,#FH SWAP A MOV B,A INC DPTR MOVX A,@DPTR
-5-
ANL A,#FH ORL A,B INC DPTR MOVX @DPTR,A
END
实验四数据区传送子程序
一、实验目的
掌握RAM中的数据操作。

二、实验内容
把R2、R3源RAM区首址内的R6、R7字节数据传送到R4、R5目的RAM区。

三、程序框图
四、实验过程
实验要求将一段内存中数据移动到另一段内存中,本次实验通过寄存器内容截图显示,
是把H单元开始2H个字节的内容送到1H开始的连续数据单元中。

先把初始地址分别放入源
地址寄存器和目的地址寄存器,然后利用一组寄存器作为需转移数据区长度计数器,开始数
据转移循环。

每进行一次转移地址寄存器向下加一,计数寄存器内容减一,计数寄存器内容
为退出循环移动结束。

由于计数以及地址寄存器是由两个八位寄存器组成,需要在加一减一
时对其高字节和低字节进行判断。

加一时若低字节加一变为,则高字节加一,否则低字节加
一高字节不变。

减一时若低字节已是则高字节减一,同时低字节变为FFH,否则低字节减一
高字节不变。

-6-
五、实验结果及分析
【问题回答】如图R4、R5定义的目的地址单元中转移之前为随机数,转移后内容与以
R2、R3开始的的源地址单元中2个字节内容相同,即实现了数据的传送。

六、实验源程序
;数据区传送子程序 START: MOV R,#3H MOV R2,#H MOV R3,#H MOV R4,#1H MOV R5,#1H HERE: MOV DPH,R2 MOV DPL,R3 MOVX A,@DPTR MOV DPH,R4 MOV DPL,R5 MOVX @DPTR,A INC R3 INC R5 DEC R
CJNE R,#1H,HERE END
-7-
实验六查找相同数个数
一、实验目的
熟悉汇编语言编程。

二、实验内容
在2~2FH中查出有几个字节是零,把个数放在21H中。

三、程序框图
四、实验过程
实验中利用R放置需查找段长度,即从2H单元开始,每次检查完一个单元R减一,指针下移,直到R等于结束循环。

R1存放等于零数据的个数,程序中利用等于零跳转指令JZ,实现找到则R1加一计数的功能。

循环终止后,将R1内容存入21H中即可。

五、实验结果及分析
-8-
【问题回答】若需查找FFH,只需将语句JZ LOOP1改为CJNZ R, #FFH, LOOP1即可,即数据等于FFH时跳转到计数+1的程序段进行计数。

六、实验源程序
ORG H LJMP MAIN
ORG AAH
MAIN:MOV DPL,#H
MOV DPH,#2H MOV R,#1H
MOV R1,#H
LOOP:MOVX A,@DPTR
JZ LOOP1 DEC R INC DPTR
SJMP LOOP2
LOOP1:INC R1
DEC R
INC DPTR
LOOP2:CJNE R,#H,LOOP
MOV DPL,#H MOV DPH,#21H MOV A,R1 MOVX @DPTR,A
SJMP $ END
-9-
实验七无符号双字节快速乘法子程序
一、实验目的
掌握MCS-51汇编语言程序设计方法。

二、实验内容
将(R2 R3)和(R6 R7)中双字节无符号整数相乘,乘积送R4 R5 R6 R7中。

三、程序框图
四、实验过程
本程序是利用单字节的乘法指令MUL,根据下面的公式实现双字节数的乘法。

(R2 R3)×(R6 R7)
=((R2)×28+(R3))×((R6)×28+(R7))
=(R2)×(R6)×216+(R2)×(R7)+(R3)×(R6)×28+(R3)*(R7)
将乘数与被乘数高低字节拆开分别相乘,然后再将每个高字节因子向前移动8位进行调整,进行加权求和。

利用ADDC语句可实现带进位的加法运算。

得到的最终结果存入R4、R5、R6、R7寄存器中。

五、实验结果及分析
【问题回答】寄存器R2、R3、R6、R7分别输入1、1、11、1,运行程序,即进行11H
-1-。

相关文档
最新文档