单片机实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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;

相关文档
最新文档