哈工大单片机实验报告

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

软件实验

在软件实验部分,通过实验程序的调试,使学生熟悉MCS-51的指令系统,了解程序设计过程,掌握汇编语言设计方法以及如何使用实验系统提供的调试手段来排除程序错误。

实验一清零程序

一、实验目的

掌握汇编语言设计和调试方法,熟悉键盘操作。

二、实验内容

把2000~20FFh的内容清零。

三、程序框图

四、实验过程

(1)实验中定义R0为循环次数,利用定义了初值的数据指针DPTR不断加1指向需要被清零的外部数据存储器单元。

(2)再利用MOVX语句,将外部存储器指定内容清零。

(3)用CJNE比较语句判断循环是否结束。

五、实验结果及分析

问题回答:清零前2000H~20FFH中为内存里的随机数,清零后全变为0。

六、实验源程序

;清零程序

ORG 0000H

MOV DPTR,#2000H

MOV R0,#0FFH

ORG 0660H

MAIN: MOV A,#00H

MOVX @DPTR,A

INC DPTR

DJNZ R0,MAIN

END

实验二拆字程序

一、实验目的

掌握汇编语言设计和调试方法。

二、实验内容

把2000h的内容拆开,高位送2001h低位,低位送2002h低位,2001h、2002h高位清零,一般本程序用于把数据送显示缓冲区时用。

三、程序框图

四、实验过程

(1)定义数据指针DPTR为2000H,将其中内容送入累加器A中,利用高低四位交换语句SWAP可将高四位移至低四位,再用语句ANL与0FH进行与操作取出高四位送入2001H低位

(2)再次让数据指针DPTR为2000H,将其中内容送入累加器A中,直接与0FH相与取出低四位送入2002H低位。

五、实验结果及分析

问题回答:将ANL A,#0FH改为ORL A,#0F0H可以实现将高位置为1。

六、实验源程序

;拆字程序

ORG 0000H

MAIN: MOV DPL, #00H

MOV DPH, #20H

MOVX A, @DPTR

SWAP A

ANL A, #0FH

INC DPTR

MOVX @DPTR, A

MOV DPL,#00H

MOVX A, @DPTR

ANL A, #0FH

INC DPTR

INC DPTR

MOVX @DPTR, A

END

实验三拼字程序

一、实验目的

进一步掌握汇编语言设计和调试方法。

二、实验内容

把2000h、2001h的低位分别送入2002h高低位,一般本程序用于把显示缓冲区的数据取出拼装成一个字节。

三、程序框图

四、实验过程

(1)首先利用数据指针DPTR 取出2000H中的内容给累加器A,交换高低位后再进行与操作取出2000H中的低位,但在A 中是位于高位,将其送入B中。

(2)再利用数据指针取出2001H 中的内容送给累加器A,直接进行与操作取出其低位数据。

(3)再用或ORL语句将2000H和2001H的高低四位组合在一起送入2002H中,从而实现两个数低四位组合。

五、实验结果及分析

问题回答:本实验运行程序后2002H内容为0CEH,即2000H单元中低四位“C”作为2002H 的高四位,2001H的低四位“E”作为2002H的低四位。

六、实验源程序

;拼字程序

ORG 0000H

AJMP MAIN

ORG 0680H

MAIN: MOV DPL, #00H

MOV DPH, #20H

MOVX A, @DPTR

ANL A, #0FH

SWAP A

MOV B, A

INC DPTR

MOVX A, @DPTR

ANL A, #0FH

ORL A, B

INC DPTR

MOVX @DPTR, A

END

实验四数据区传送子程序

一、实验目的

掌握RAM中的数据操作。

二、实验内容

把R2、R3源RAM区首址内的R6、R7字节数据传送到R4、R5目的RAM区。三、程序框图

四、实验过程

实验要求将一段内存中数据移动到另一段内存中,这个程序在开始定义源RAM首址为0000H,目的区首址为0030H,但是在进行搬移的子程序中选择将INC语句置于开始,所以结果是把0001H单元开始20H个字节的内容送到0031H开始的连续数据单元中。

(1)先把初始地址分别放入源地址寄存器和目的地址寄存器,因为转移区的长度定义的较小,所以就是只利用了R3作为数据转移循环条件。

(2)每进行一次转移地址寄存器向下加一,由于转移区较短所以整个程序的源RAM和目的RAM区的指针加1 的操作只需要对R3、R5进行。

五、实验结果及分析

问题回答:R4、R5定义的目的地址单元中转移之前为随机数,转移后内容与以R2、R3开始的的源地址单元中20个字节内容相同,即实现了数据的传送。

六、实验源程序

ORG 0000H

AJMP MAIN

ORG 07B0H

MAIN: MOV R7, #20H

MOV R6, #00H

MOV R2, #00H

MOV R3, #00H

MOV R4, #00H

MOV R5, #30H

LOOP: INC R3

INC R5

MOV DPL,R3

MOV DPH, R2

MOVX A, @DPTR

MOV DPL, R5

MOV DPH, R4

MOVX @DPTR, A

CJNE R3, #021H, LOOP

END

实验六查找相同数个数

一、实验目的

熟悉汇编语言编程。

二、实验内容

在2000~200Fh中查出有几个字节是零,把个数放在2100h中。

相关文档
最新文档