单片机原理与应用设计(张毅刚 彭喜元 著)课后 基础实验

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

实验2 单片机数据区传送程序设计

一、实验目的

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

2.了解单片机RAM中的数据操作。

二、实验设备

1.Dais-80958B单片机实验开发系统一套

2.WD990微机专用电源一台

3.PC机一套

三、实验线路

同实验1。

四、实验内容

1.要求:编写程序把R2、R3源RAM区首地址内的R6、R7字节数据传送到R4、R5目的地址的RAM区。

2.框图如下,文件名为:X X X X S2

班级学号

五、实验步骤

1.打开电源,PC机开机正常工作后,进MCS-51仿真开发系统调试平台,编译源文件S2成功。(详细过程同实验1的步骤1~3)

2.在R2、R3中输入源地址(例如:0000H),R4、R5中输入目的地址(例如2000H),R6、R7中输入字节数(例如:1FFFH)。

3.查看RAM 区0000~1FFFH和2000~3FFFH内容,也可自己重新赋值。

4.运行程序XXXXS2,首先单步,然后用自动单步,最后用连续运行方式。

5.记录下运行结果,检查0000~1FFFH中内容是否和2000~3FFFH内容完全一致。六、要求

1.写出自己编写的程序,并写出原理性注释。

2.将检查程序运行的结果,分析一下是否正确。

七、思考题

如果使0000~1000H中内容与2000~3000H内容完全一致,如何来改写程序?

八、参考程序

ORG 0100H

8B82 SE22: MOV DPL,R3

8A83 MOV DPH,R2 ;建立源程序首址

E0 MOVX A,@DPTR ;取数

8D82 MOV DPL,R5

8C83 MOV DPH,R4 ;目的地首址

F0 MOVX @DPTR.A ;传送

BBFF01 CJNE R3,#0FFH,LO42

0A INC R2

0B LO42: INC R3 ;源地址加1

BDFF01 CJNE R5,#0FFH,LO43

OC INC R4

OD LO43: INC R5 ;目的地址加1

BF0006 CJNE R7,#00H,LO44

BE0006 CJNE R6,#00H,LO45 ;字节数减1

80FE SJMP $

00 NOP

1F LO44: DEC R7

80E0 SJMP SE22

1F LO45: DEC R7

1E DEC R6

80DC SJMP SE22 ;未完继续

END

实验3 数据排序实验

一、实验目的

熟悉MCS-51指令系统,掌握数据排序程序的设计方法。

二、实验设备

1.Dais-80958B微机实验开发系统一套

2.WD990微机专用电源一台

3.PC机一套

三、实验线路

同实验1。

四、实验内容

1.编写并调试一个排序程序,其功能为用冒泡法(参见单片机教材84页)将RAM中几个单字节无符号的正整数,按从小到大的次序重新排列。程序框图如下:

五、实验步骤

1.编写程序XXXXS3,满足程序要求,在CPU内部的RAM 50H~5AH中放入不等的

数据。

六、思考题

修改程序S3,将50H~5AH中内容按从大到小排列,并且记录下程序运行前后的结果,分析是否正确。

七、参考程序

ORG 0300H

7B50 QUE: MOV R3,#50H

EB QUE1: MOV A,R3 ;指针送R0

F8 MOV R0,A

7F0A MOV R7,#0AH ;长度送R7

C200 CLR 00H ;标志位为0

E6 MOV A,@R0

08 QL2: INC R0

FA MOV R2,A

C3 CLR C

8622 MOV 22H,@R0 ;取后数

B52201 CJNE A,22H,QL3 ;相等吗?

D3 SETB C

EA QL3: MOV A,R2

4006 JC QL1 ;大于则交换位置

D200 SETB 00H

C6 XCH A,@R0

18 DEC R0

C6 XCH A,@R0

08 INC R0 ;大于则交换位置

E6 QL1: MOV A,@R0

DFEB DJNZ R7,QL2

2000E1 JB 00H,QUE1 ;一次循环中有交换继续

80FE SJMP $ ;无交换退出

END

实验4 查找相同数个数

一、实验目的

熟悉汇编语言编程

二、实验内容

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

三、程序框图

四、实验步骤

在2000~200FH的几个单元中填入零,运行本程序后检查2100H单元中的数是否与2000~200FH中零的个数相同。

五、思考

在1000~100FH的几个单元中填入8H,检查8H的个数,并填入1100H单元中,如何来修改程序?

六、参考程序

ORG 0AA0H

0AA0 7810 L5800: MOV R0,#10H ;查找16个字节

0AA2 7900 MOV R1,#00H

0AA4 902000 MOV DPTR,#2000H

0AA7 E0 L5811: MOVX A,@DPTR

0AA8 B40001 CJNE A,#00H,L5816;取出内容与00H相等吗?

0AAB 09 INC R1 ;取出个数加1

0AAC A3 L5816: INC DPTR

0AAD D8F8 DJNZ R0,L5811 ;未完继续

0AAF 902100 MOV DPTR,#2100H

0AB2 E9 MOV A,R1

0AB3 F0 MOVX @DPTR,A ;相同数个数送2100H

0AB4 80FE L581E: SJMP L581E

END

实验5 P1口转弯灯实验

一、实验目的

相关文档
最新文档