哈工大 单片机第一次试验报告.docx
- 文档编号:28731910
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:52
- 大小:192.36KB
哈工大 单片机第一次试验报告.docx
《哈工大 单片机第一次试验报告.docx》由会员分享,可在线阅读,更多相关《哈工大 单片机第一次试验报告.docx(52页珍藏版)》请在冰豆网上搜索。
哈工大单片机第一次试验报告
HarbinInstituteofTechnology
单片机原理与应用
实验报告
学生姓名
:
学号
:
班级
:
专业
:
通信工程
任课教师
:
所在单位
:
电子与信息工程学院
2013年5月
软件实验
在软件实验部分,通过实验程序的调试,使学生熟悉MCS-51的指令系统,了解程序设计过程,掌握汇编语言设计方法以及如何使用实验系统提供的调试手段来排除程序错误。
实验一清零程序
一、实验目的
掌握汇编语言设计和调试方法,熟悉键盘操作。
二、实验内容
把2000~20FFh的内容清零。
三、程序框图
四、实验过程
1、LED环境
⑴在“P.”状态下按“0→EV/UN”,装载实验所需的代码程序。
⑵在“P.”状态下键入0640,然后按“STEP”或“EXEC”进入实验项目的调试与运行。
2、PC环境
在与PC联机状态下,编译、连接、下载PH51\se01.asm,用连续或单步方式运行程序。
3、运行结果检查
⑴在单步运行时,每走一步可观察其运行结果。
⑵在连续运行状态下,应按“暂停图标”或实验箱上的“暂停按钮”,使系统无条件退出用户运行状态返回监控,然后再用相应的命令键观察与检查2000H以后的存储空间中执行程序前后的内容变化。
五、实验结果及分析
运行程序前如下图
运行程序后如下图:
六、实验源程序
ORG0640H
MOVDPTR,#2000H
MOVR0,#00H
LOOP:
MOVX@DPTR,A
INCDPTR
INCR0
CJNER0,#00H,LOOP
SJMP$
END
实验二 拆字程序
一、实验目的
掌握汇编语言设计和调试方法。
二、实验内容
把2000h的内容拆开,高位送2001h低位,低位送2002h低位,2001h、2002h高位清零,一般本程序用于把数据送显示缓冲区时用。
三、程序流程
四、实验步骤
1、LED环境
⑴在“P.”状态下按“0→EV/UN”,装载实验所需的代码程序。
⑵在“P.”状态下键入0660,然后按“STEP”或“EXEC”进入实验项目的调试与运行。
2、PC环境
在与PC联机状态下,编译、连接、下载PH51\se02.asm,用连续或单步方式运行程序。
3、运行结果检查
⑴在单步运行时每走一步可观察其运行结果。
⑵在连续运行状态下,应按“暂停图标”或实验箱上的“暂停按钮”,使系统无条件退出用户运行状态返回监控,然后再用相应的命令键观察与检查2000~2002h中内容变化情况。
五、实验结果及分析
运行程序前2000H中内容为34,运行程序后2001H中内容为03,2002H中内容为04.
如果将2001h、2002h高位置1,将源程序中的ANLA,#0FH语句改为ORLA,#0F0H
六实验源程序
ORG0000;
MOVDPTR,#2000H;
MOVXA,@DPTR;
ANLA,#0FH;
MOVR1,A;
MOVXA,@DPTR;
SWAPA;
ANLA,#0FH;
INCDPTR;
MOVX@DPTR,A;
INCDPTR;
MOVA,R1;
MOVX@DPTR,A;
END;
实验三 拼字程序
一、实验目的
进一步掌握汇编语言设计和调试方法。
二、实验内容
把2000h、2001h的低位分别送入2002h高低位,一般本程序用于把显示缓冲区的数据取出拼装成一个字节。
三、程序流程
四、实验步骤
1、LED环境
⑴在“P.”状态下按"0→EV/UN",装载实验所需的代码程序。
⑵在“P.”状态下键入0680,然后按“STEP”或“EXEC”进入实验项目的调试与运行。
2、PC环境
在与PC联机状态下,编译、连接、下载PH51\se03.asm,用连续或单步方式运行程序。
3、运行结果检查
⑴在单步运行时每走一步可观察其运行结果。
⑵在连续运行状态下,应按“暂停图标”或实验箱上的“暂停按钮”,使系统无条件退出用户运行状态返回监控,然后再用相应的命令键观察与检查2002h内容变化情况。
五、实验结果及分析
运行程序后2002h的最终内容是2B.
六实验源程序
ORG0000H;
MOVDPTR,#2000H;
MOVXA,@DPTR;
ANLA,#0FH;
SWAPA;
MOVR1,A;
INCDPTR;
MOVXA,@DPTR;
ANLA,#0FH;
ORLA,R1;
INCDPTR;
MOVX@DPTR,A;
END;
实验四 数据区传送子程序
一、实验目的
掌握RAM中的数据操作。
二、实验内容
把R2、R3源RAM区首址内的R6、R7字节数据传送到R4、R5目的RAM区。
三、程序流程
四、实验步骤
1、LED环境
⑴在“P.”状态下按“0→EV/UN”,装载实验所需的代码程序。
⑵在“P.”状态下键入07B0,然后按“STEP”或“EXEC”进入实验项目的调试与运行。
2、PC环境
在与PC联机状态下,编译、连接、下载PH51\se04.asm,用连续或单步方式运行程序。
3、运行结果检查
⑴在单步运行时每走一步可观察其运行结果。
⑵在连续运行状态下,应按“暂停图标”或实验箱上的“暂停按钮”,使系统无条件退出用户运行状态返回监控,然后再用相应的命令键检查由R4、R5所定义的目的地址单元。
五、实验结果及分析
R2、R3所定义的目的地址单元内容是20、00.
R4、R5所定义的目的地址单元内容是20、90.
R6、R7所定义的目的地址单元内容是00、00.
六实验源程序
ORG07B0H
MOVR2,#20H
MOVR3,#00H
MOVR4,#20H
MOVR5,#90H
MOVR6,#00H
MOVR7,#00H
START:
CLRC
MOVDPL,R3
MOVDPH,R2;建立源程序首址
MOVXA,@DPTR;取数
MOVDPL,R5
MOVDPH,R4;目的地首址
MOVX@DPTR,A
INCR3;源地址加1
MOVA,R2
ACALLADB
MOVR2,A
INCR5;目的地址加1
MOVA,R4
ACALLADB
MOVR4,A
INCR7;转移数加1
MOVA,R6
ACALLADB
MOVR6,A
CJNER6,#00H,START
CJNER7,#2FH,START
ADB:
ADDCA,#00H
CLRC
RET
END
实验六 查找相同数个数
一、实验目的
熟悉汇编语言编程。
二、实验内容
在2000~200Fh中查出有几个字节是零,把个数放在2100h中。
三、程序框图
四、实验步骤
1、LED环境
⑴在“P.”状态下按“0→EV/UN”,装载实验所需的代码程序。
⑵在2000~200Fh的若干单元中填入零
⑶在“P.”状态下键入0AA0,然后按“STEP”或“EXEC”进入实验项目的调试与运行。
2、PC环境
在与PC联机状态下,编译、连接、下载PH51\se06.asm,用连续或单步方式运行程序。
3、运行结果检查
⑴在单步运行时每走一步可观察其运行结果。
⑵在连续运行状态下,应按“暂停图标”或实验箱上的“暂停按钮”,使系统无条件退出用户运行状态返回监控,然后再用相应的命令键观察与检查2100h中是几个单元数。
五、实验结果及分析
如需查找0FF,则需在源程序JNZ LOOP前增加语句CLP A.
六实验源程序
ORG2000H;
MOVR0,#0FH;
MOVR1,#00H;
MOVDPTR,#2000H;
START:
MOVXA,@DPTR;
JNZLOOP;
INCR1;
LOOP:
INCDPTR;
DJNZR0,START;
MOVA,R1;
MOVDPTR,#2100H;
MOVX@DPTR,A;
END;
实验七 无符号双字节快速乘法子程序
一、实验目的
掌握MCS-51汇编语言程序设计方法。
二、实验内容
将(R2R3)和(R6R7)中双字节无符号整数相乘,积送R4R5R6R7中。
三、程序框图
四、实验步骤
1、LED环境
⑴在“P.”状态下按“0→EV/UN”,装载实验所需的代码程序。
⑵对R2、R3所定义的源地址单元从首址开始输入无符号整数。
⑶在“P.”状态下键入0970,然后按“STEP”或“EXEC”进入实验项目的调试与运行。
2、PC环境
在与PC联机状态下,编译、连接、下载PH51\se07.asm,用连续或单步方式运行程序。
3、运行结果检查
⑴在单步运行时每走一步可观察其运行结果。
⑵在连续运行状态下,应按“暂停图标”或实验箱上的“暂停按钮”,使系统无条件退出用户运行状态返回监控,然后再用相应的命令键检查R4R5R6R7中内容。
五、实验结果及分析
寄存器R2、R3、R6、R7分别输入01、21、02、22,运行程序,R6、R7中的内容是68、62
结果已经过验证。
六实验源程序
ORG0000H
MOVR2,#01H
MOVR3,#21H
MOVR6,#02H
MOVR7,#22H
MOVA,R3
MOVB,R7
MULAB
XCHA,R7
MOVR5,B
MOVB,R2
MULAB
ADDA,R5
MOVR4,A
CLRA
ADDCA,B
MOVR5,A
MOVA,R6
MOVB,R3
MULAB
ADDA,R4
XCHA,R6
XCHA,B
ADDCA,R5
MOVR5,A
MOVF0,C
MOVA,R2
MULAB
ADDA,R5
MOVR5,A
CLRA
MOVACC.0,C
MOVC,F0
ADDCA,B
MOVR4,A
SJMP$
END
实验八 多分支程序
一、实验目的
掌握汇编语言的编程。
二、实验内容
编写程序,根据送入的数据转移运行。
三、程序框图
四、实验步骤
1、LED环境
⑴在“P.”状态下按“0→EV/UN”,装载实验所需的代码程序。
⑵在20H中分次送入00、01、02、03。
⑶在“P.”状态下键入0A10,然后按“STEP”或“EXEC”进入实验项目的调试与运行。
2、PC环境
在与PC联机状态下,编译、连接、下载PH51\se08.asm,用连续或单步方式运行程序。
3、运行结果检查
(1)在单步运行时每走一步可观察其运行结果。
(2)在连续运行状态下,应按“暂停图标”或实验箱上的“暂停按钮”,使系统无条件退出用户运行状态返回监控,然后观察每次运行程序后,数码管上数字循环情况。
五实验结果及分析
循环变慢改变延时子程序
DELAY:
MOVR5,#0FFH
LP0:
MOVR6,#0FFH
LP1:
NOP
NOP
DJNZR6,LP1
DJNZR5,LP0
RET
变为四字循环程序改为:
LOOP0:
MOV20H,#0C0H;0字循环
LJMPSOX0
LOOP1:
MOV20H,#0F9H;1字循环
LJMPSOX0
LOOP2:
MOV20H,#0A4H;2字循环
LJMPSOX0
LOOP3:
MOV20H,#0B0H;3字循环
LJMPSOX0
LOOP3:
MOV20H,#099H;4字循环
LJMPSOX0
六、实验源程序
MAIN:
MOV20H,#00H
MOVA,20H
MOVDPTR,#SZ;散转首址
RLA;(20)*2
JMP@A+DPTR;转到(20)*2+DPTR
SZ:
AJMPLOOP0
AJMPLOOP1
AJMPLOOP2
AJMPLOOP3
LOOP0:
MOV20H,#0C0H;0字循环
LJMPSOX0
LOOP1:
MOV20H,#0F9H;1字循环
LJMPSOX0
LOOP2:
MOV20H,#0A4H;2字循环
LJMPSOX0
LOOP3:
MOV20H,#0B0H;3字循环
LJMPSOX0
SOX0:
MOVA,20H
MOVR0,#0DCH
MOVR1,#0DDH
MOVX@R0,A
MOVA,#01H
SOX1:
MOVX@R1,A
MOVR2,#20H
LCALLDELY
RLA;显示子程序
SJMPSOX1
DELY:
MOVR5,#1AH
LP0:
MOVR6,#7DH
LP1:
NOP
NOP
DJNZR6,LP1
DJNZR5,LP0
RET
END
实验十 电脑时钟(定时器、中断器综合实验)
一、实验目的
熟悉MCS-51定时器,串行口和中断初始化编程方法,了解定时器的应用实时程序的设计与调试技巧。
二、实验内容
编写程序,从本实验系统键盘上输入时间初值,用定时器产生0.1S定时中断,对时钟计数器计数,并将数值实时地送数码管显示。
三、程序框图
四、实验步骤
1、LED环境
⑴在“P.”状态下按“0→EV/UN”,装载实验所需的代码程序。
⑵在“P.”状态下键入0030,然后按“EXEC”进入该实验项目的运行。
2、PC环境
在与PC联机状态下,编译、连接、下载PH51\se10.asm,用连续方式运行该程序。
3、在键盘上输入时间初值,按执行键EXEC执行,数码管上实时显示时间值。
4、按“暂停图标”或实验箱上的“暂停按钮”,系统无条件退出该程序运行返回监控状态。
五、实验结果及分析
修改程序使定时器工作方式改变(实现12小时制)
将语句CJNEA,#24H,DONE改为CJNEA,#12H,DONE
六 实验源程序
ORG0000H
SJMPCHK00
ORG000BH
LJMPCLOCK;INT_T0
ORG0030H
CHK00:
MOVSP,#60H
LCALLLEDP
CHK0:
LCALLLCK0;键扫,显示子程序
LCALLPTDS0;显示缓冲区放数子程序
MOVTMOD,#01H
ORLIE,#10000010b;EA=1,IT0=1
MOVTL0,#0
MOVTH0,#4ch;定时中断初始化
MOV23H,#00H
SETBTR0;开定时
LOO5:
LCALLDIS;SSEE;显示
LCALLPTDS0
SJMPLOO5
PTDS0:
MOVR0,#79H
MOVA,22H
ACALLPTDS
MOVA,21H
ACALLPTDS
MOVA,20H
ACALLPTDS
RET
;---------------------------------------
PTDS:
MOVR1,A;拆送显示缓冲区
ACALLPTDS1
MOVA,R1
SWAPA
PTDS1:
ANLA,#0FH
MOV@R0,A
INCR0
RET
;---------------------------------------
CLOCK:
MOVTL0,#0B7H
MOVTH0,#3CH;恢复初值
PUSHPSW
PUSHACC
SETB0D3H;保护
INC23H;0.1秒加1
MOVA,23H
CJNEA,#20,DONE;1秒到吗?
MOV23H,#00H;清0.1秒单元
MOVA,22H
INCA;秒加1
DAA
MOV22H,A;十进制调整
CJNEA,#60H,DONE;60秒到吗?
MOV22H,#00H;秒单元清零
MOVA,21H
INCA
DAA;分加1.十进制调整
MOV21H,A
CJNEA,#60H,DONE;60分到吗?
MOV21H,#00H;分单元清零
MOVA,20H
INCA
DAA;时加1.十进制调整
MOV20H,A
CJNEA,#24H,DONE;24小时到吗?
MOV20H,#00H;时单元清零
DONE:
POPACC;退栈
POPPSW
RETI
;----------------------------------------------
SSEE:
SETBRS1;换工作区
MOVR5,#05H
SSE2:
MOV30H,#20H
MOV31H,#7EH
MOVR7,#06H
SSE1:
MOVR1,#0DDH
MOVA,30H
MOVX@R1,A;字位送入
MOVR0,31H
MOVA,@R0
MOVDPTR,#DDFF
MOVCA,@A+DPTR;取字形代码
MOVR1,#0DCH
MOVX@R1,A;字形送入
MOVA,30H;右移
RRA
MOV30H,A
DEC31H
MOVA,#0FFH
MOVX@R1,A;关显示
DJNZR7,SSE1;6位显示完了吗?
DJNZR5,SSE2;5次显示完了吗?
CLRRS1
RET
;-------------------------------------------------------
DDFF:
DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
DB88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,89H,0DEH
;-------------------------------------------------------
X3:
MOVR4,A
MOVR0,#50H
MOVA,@R0
MOVR1,A
MOVA,R4
MOV@R1,A
CLRA
POPDPH
POPDPL
MOVCA,@A+DPTR
INCDPTR
CJNEA,01H,X30
decr1
clra
MOVCA,@A+DPTR
X31:
MOV@R0,A
INCDPTR
PUSHDPL
PUSHDPH
RET
X30:
DECR1
MOVA,R1
SJMPX31
;--------------------------
X2:
MOVR6,#50H
X0:
ACALLXLE
JNBACC.5,XX0
DJNZR6,X0
MOVR6,#20H
MOVR0,#50H
MOVA,@R0
MOVR0,A
MOVA,@R0
MOVR7,A
MOVA,#10H
MOV@R0,A
X1:
ACALLXLE
JNBACC.5,XX1
DJNZR6,X1
MOVA,R7
MOV@R0,A
SJMPX2
XX1:
MOVR6,A
MOVA,R7
MOV@R0,A
MOVA,R6
XX0:
RET
;----------------------------
XLE:
ACALLDIS
ACALLKEY
MOVR4,A
MOVR1,#48H
MOVA,@R1
MOVR2,A
INCR1
MOVA,@R1
MOVR3,A
MOVA,R4
XRLA,R3
MOVR3,04H
MOVR4,02H
JZX10
MOVR2,#88H
MOVR4,#88H
X10:
DECR4
MOVA,R4
XRLA,#82H
JZX11
MOVA,R4
XRLA,#0EH
JZX11
MOVA,R4
JZX12
MOVR4,#20H
DECR2
SJMPX13
X12:
MOVR4,#0FH
X11:
MOVR2,04H
NOP
NOP
MOVR4,03H
X13:
MOVR1,#48H
MOVA,R2
MOV@R1,A
INCR1
MOVA,R3
MOV@R1,A
MOVA,R4
JBACC.5,X113
JBACC.4,X113
MOVDPTR,#LS3
MOVCA,@A+DPTR
X113:
RET
;---------------------------------
LS3:
DB07H,04H,08H,05H,09H,06H,0AH
DB0BH,01H,00H,02H,0FH,03H,0EH
DB0CH,0DH
;-----------------------------------
DIS:
PUSHDPH
PUSHDPL
SETBRS1
MOVR0,#7EH
MOVR2,#20H
MOVR3,#00H
MOVDPTR,#LS0
LS2:
MOVA,@R0
MOVCA,@A+DPTR
MOVR1,#0DCH
MOVX@R1,A
MOVA,R2
incR1
MOVX@R1,A
LS1:
DJNZR3,LS1
CLRC
RRCA
MOVR2,A
DECR0
JNZLS2
movx@r0,a
decr0
cpla
movx@r0,a
CLRRS1
POPDPL
POPDPH
RET
;---------------------------------------------
LS0:
DB0C0H,0F9H,0A4H,0B0H,99H,92H
DB82H,0F8H,80H,90H,88H,83H,0C6H
DB0A1H,86H,8EH,0FFH,0CH,89H,7FH,0BFH
;---------------------------------------------
KEY:
SETBRS1
MOVR2,#0FEH
MOVR3,#08H
MOVR0,#00H
LP1:
MOVR1,#0DDH
MOVA,R2
MOVX@R1,A
RLA
MOVR2,A
incr1
MOVXA,@R1
CPLA
ANLA,#0FH
JNZLP0
INCR0
DJNZR3,LP1
XP33:
MOVA,#20H
XP3:
movr
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 哈工大 单片机第一次试验报告 单片机 第一次 试验报告