单片机实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验项目名称MCS-51系列单片机指令学习实验
实验项目类型验证性
实验时间2013、5、10、星期五、一二节课
一、实验目的
MCS-51系列单片机指令系统共有111条汇编语言指令,这些指令按功能的不同可分为五类:29条数据传送类指令,24条算术运算类指令,24条逻辑运算类指令,17条控制转移类指令和17条位操作类指令。
本实验通过单步执行程序中各类指令,来进一步学习和理解各类主要指令的功能,掌握指令的用法。
通过实验掌握Keil软件的使用方法。
二、实验内容
(一)、数据传送与算术运算
1、体会MOV Rn,direct指令的功能和用法,取n=0,direct=40H。
程序如下:
ORG 0000H
SUBROUT:MOV 40H ,#0FH;
MOV R0 ,40H;
MOV A ,R0;
HERE:LJMP HERE;
END
A=(OFH ),40H=(OFH ),R0=(OFH )
2、体会MOV @Ri,#DATA指令的功能和用法,选择DATA=0FH,i=0。
程序如下:
ORG 0000H
SUBR:MOV R0,#50H;R0←50H
MOV @R0,#0FH;(R0)←0FH
MOV A,50H;A←(50H)
HERE:LJMP HERE;
END
R0=(50H ),50H=(OFH ),A=(OFH )
3、体会查表指令MOVC A,@A+DPTR的功能和用法。
设定40H单元中的内容为0~9之间的一个整数,用查表的方法求出它的平方值(BCD码),结果存入41H单元。
利用MOVC A,@A+DPTR指令查表
程序如下:
ORG 0000H
START:MOV DPTR,#SQR;
MOV A ,40H;
MOVC A ,@A+DPTR;
MOV 41H , A;
HERE:LJMP HERE;
SQR:DB 00H,01H,04H,09H,16H
DB 25H,36H,49H,64H,81H
END
41H=(25 )
4、用加法指令ADD A,R0实现两数相加,如52H+FCH。
程序如下:
ORG 0000H
SUBROUT:MOV A ,#52H ;
MOV R0 ,#0FCH;
ADD A ,R0;
HERE:LJMP HERE
END
A=(4EH ),PSW=(80H )
用带进位加法指令ADDC A,R0实现52H与0CH之和。
程序如下:
ORG 0000H
SUBROUT:MOV A ,#52H;
MOV R0 ,#0CH;
SETB C;
ADDC A ,R0;
HERE:LJMP HERE;
END
执行后A=(5FH ),PSW=(00H )
若将SETB C 指令改为CLR C
执行后A=(5EH ),PSW=(01H )
5、体会十进制调整指令DA A 的功能和用法
程序如下:
ORG 0000H
SUBROUT:MOV A ,#65H;
ADD A ,#58H;
DA A;
HERE:LJMP HERE;
END
执行后A=(23H ),PSW=(85H )
若将DA A 指令用NOP代替,则执行后
A=(BDH ),PSW=(04H )
6、用乘法指令MUL AB 进行0FFH*03H
程序如下:
ORG 0000H
SUBROUT:MOV A ,#0FFH;
MOV B ,#03H;
MUL AB;
NOP;
NOP;
HERE:LJMP HERE
END
执行后A=(FDH ),B=(02H )。
(二)、逻辑运算和循环指令
1、逻辑“与”指令实验。
程序如下:
ORG 0000H
SUBROUT:MOV A,#0FBH;
ANL A,#0FH;
HERE:LJMP HERE;
END
执行后A=( 0BH ),“与”指令有何作用?
2、逻辑“或”指令实验。
程序如下:
ORG 0000H
SUBROUT:MOV R1,#0FH;
MOV A ,#33H;
ORL A,R1;
HERE:LJMP HERE;
END
执行后A=(3FH ),“或”指令有何作用?
3、逻辑“异或”指令实验。
程序如下:
ORG 0000H
SUBROUT:MOV A,#55H;
MOV 40H,#00H;
XRL A,40H;
HERE:LJMP HERE;
END
执行后A=(55H ),将MOV 40H,#00H 改为MOV 40H,#55H,执行后A=(OOH )。
4、利用左移指令实现乘2运算。
程序如下:
ORG 0000H
SUBROUT:MOV A,#29H;
RLC A;
HERE:LJMP HERE;
END
执行后A=(52H )
5、利用循环移位指令实现累加器A中内容高半字节与低半字节互换。
程序如下:
ORG 0000H
SUBROUT:MOV A,#38H;
RL A;
RL A;