太原理工大学单片机实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一双字节加法
一实验目的
(1)熟悉并掌握MCS-51指令系统和程序设计方法。
(2)掌握双字节加法的程序算法。
二实验设备
计算机
操作系统:Windows 98/2000/XP
应用软件:WAVE 6000或其他。
三实验内容
编写一个双字节加法程序并调试,设9930H存在R1R0中,6083H存在R2R3中,计算R1R0+R3R2,最后结果保存在R5R4中。
四实验原理
两数低位相加后保留进位位,高位数相加时,将低位的进位加上。
五实验程序流程图
七实验源程序
ORG 0
LJMP MAIN
ORG 30H
MAIN: MOV 30H,#25H
MOV 31H,#13H
MOV 32H,#14H
MOV 33H,#35H
MOV A,30H
ADDC A,32H
DA A
MOV 40H,A
MOV A,31H
ADD A,33H
DA A
MOV 41H,A
SJMP $
八实验结果与分析
(40H)中的结果为39;(41H)中的结果为48.与计算结果相同说明实验正确。九实验心得与总结
通过实验增强了我们分析问题和解决问题的能力,以实践证实理论,从实践中加深对理论知识的理解和掌握。
实验二数据排序程序
一实验目的
(1)熟悉并掌握MCS-51指令系统和程序设计方法。
(2)掌握排序程序算法。
(3)掌握用循环程序实现数据排序的方法。
二实验设备
计算机
操作系统:Windows 98/2000/XP
应用软件:WAVE 6000或其他。
三实验内容
编写一个通用排序子程序并调试,其功能为将RAM的40H~4FH单元16个字节无符号二进制整数按从小到大顺序排序,将排序后的数据存放在50H~5FH缓冲区中。
四实验原理
从40H单元的第一个数开始依次和相邻单元的另一个数比较,如果顺序正确,则不作任何操作;如果顺序错误,则将这两个数位置对换。这样,在完成第一遍n-1次比较后,最小的数到了最后,所以第二遍比较只需要比较n-2次,最多作n-1遍比较就可完成排序。在比较中设立一个标志位flag清零,在循环结束时,若flag=1说明排序未完成,进入外循环;若flag=0,说明排序完成,程序结束。
五实验程序流程图
六实验源程序
ORG 0000H
MOV R7,#10H
MOV R0,#40H
MOV R1,#50H START: MOV A,R1
MOV @R0,A
INC R0
DEC R1
DJNZ R7,START
MOV R7,#0FH LP0: MOV R0,#40H
MOV A,R7
MOV R6,A
CLR 7FH
LP1: MOV A,@R0
MOV50H,@R0
INC R0
MOV51H,@R0
CLR C
SUBB A,51H
JC LP2
SETB 7FH
MOV @R0,50H
DEC R0
MOV @R0,51H
INC R0
LP2: DJNZ R6,LP1
JNB 7FH,LP3
DJNZ R7,LP0 LP3: MOV R7,#10H
MOV R0,#40H
MOV R1,#80H LP4: MOV A,@R0
MOV @R1,A
INC R1
INC R0
DJNZ R7,LP4
SJMP $
END
七实验结果与分析
排序前的数为:
(40) 40 4F 4E 4D 4C 4B 4A 39
(48) 38 37 36 35 34 33 32 31
八实验心得与总结
通过实验让我深刻体会到实验前的理论知识准备的重要,虽然做实验时,老师会讲解实验步骤,但是如果自己没有一些基础知识,那也是很难做下去的。
实验三子程序调用
一实验目的
1、通过编辑练习常用指令,理解并掌握MCS-51单片机的指令系统。
2、掌握子程序调用的程序设计。
3、掌握子程序调用过程中保护现场与恢复现场以及调用程序与被调用程序之间的参数传递。
4、学习汇编语言的程序设计方法
二实验设备:
计算机
操作系统:Windows xp
应用软件:WAVE6000
三实验内容
编写程序,计算Y=。a1,a2,……,a10存放在内部RAM的20H 开始的存储区内,计算所得结果放入R2和R3中。
四实验源程序
ORG 0000H
MAIN:MOV R0,#20H
MOV R7,#10
MOV R3,#0
MOV R2,#0
LOOP:MOV A,@R0
ACALL SORT ;调用求平方子程序
ADD A,R2
MOV R2,A
CLR A
ADDC A,R3
MOV R3,A
INC R0
DJNZ R7,LOOP ;未完,继续
SJMP $
SORT:MOV DPTR,#TAB ;进入子程序查平方表
MOVC A,@A+DPTR
RET ;返回主程序
TAB:DB 0,1,4,9,16
DB 25,36,49,64,81