单片机原理与应用设计(张毅刚 彭喜元 著)课后 基础实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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口转弯灯实验
一、实验目的