2014单片机实验报告

  • 格式:doc
  • 大小:421.50 KB
  • 文档页数:11

下载文档原格式

  / 11
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

计算机硬件技术基础实验报告二

班级_________姓名__________学号__________成绩_________

在Keil环境下运行以下程序,查看相关内存数据单元,并完成相应的题目。

1.编写程序,两位压缩的BCD码转换成相应的ASCII码

提示:算法1 ANL 拆字、ORL #30H 拼字

算法2 DIV 拆字、 ORL #30H 拼字

存储两位BCD数指压缩的BCD码占一个单元,相应的ASCII码占二个单元。

2.数据块传送程序:

(1)把内部RAM 40H~4FH置初值0A0H~0AFH;

(2)而后把40H~4FH内容传送到外部RAM 9800H~980FH中;

(3)再把 9800H~980FH内容传送到 50H~5FH中。

ORG 0000H

MAIN: MOV R0,#40H

MOV R2,#10H

MOV A,#0A0H

A1: MOV @R0, A

INC R0

INC A

DJNZ R2, A1; [1]解释本条命令含义(在程序中的作用)。

MOV R0, #40H

MOV DPTR, #9800H

MOV R2, #10H

A2: MOV A, @R0

MOVX @DPTR, A

INC R0

INC DPTR

DJNZ R2, A2; [2] 解释本条命令含义(在程序中的作用)。

MOV R0, #50H

MOV DPTR, #9800H

MOV R2, #10H

A3: MOVX A, @DPTR; [3]为什么使用MOVX指令。

MOV @R0, A

INC DPTR

INC R0

DJNZ R2, A3

SJMP $

END

3.多字节十进制加法:

加数放在30H开始的单元中(最低位放在30H,按从小到大的顺序存放),被加数和结果存放在20H开始的单元(最低位在20H中),字节数放在2FH中,最高进位位放在位地址7FH单元中。(需要提前在30H开始的存储单元中存入数据,2FH存储单元中的数据说明了相加的字节数。)

注意:在数据存储器指定的单元中存入数据的方法

方法一:在KEIL环境中,在右下角数据存储器中找到指定的单元,双击,在其中直接输入数据。

方法二:使用MOV为数据存储器指定的存储单元存入数据。

小心:不能使用DB或DW为数据存储器赋值。

DB和DW伪指令只能用于在程序存储器指定的单元中定义常数。

ORG 0000H

MAIN: MOV R0, #30H

MOV R1, #20H

MOV 2FH,#04H

CLR C

DA1: MOV A,@R0

ADDC A, @R1

DA A; [4] 解释本条命令含义(在程序中的作用)。

MOV @R1, A

INC R0

INC R1

DJNZ 2FH, DA1; [5] 解释本条命令含义(在程序中的作用)。

MOV 7FH, C

SJMP $

END

4.字节逻辑运算程序

在片内RAM 的FIRST 和SECOND 单元中各有一符号数X 和Y,要求按下列条件算出Z ,存入RESULT 单元中(设运算结果仍为8位数)。

注意:在程序运行前,首先在数据存储器30H 和31H 存储单元中存入数据,在32H 存储单元中读结果。可参考上一题在数据存储器中存入数据的方法。

FIRST EQU 30H

SECOND EQU 31H

RESULT EQU 32H

ORG 0000H

START :MOV R0,FIRST

MOV A , R0

JB ACC.7, NEG; [6] 解释本条命令含义(在程序中的作用)。 MOV B, #2

DIV AB

MOV A, B

JZ TEMP1; [7] 解释本条命令含义(在程序中的作用)。 MOV A,R0

ADD A, SECOND

SJMP RES

TEMP1: MOV A, R0

ANL A, SECOND

SJMP RES

NEG: CPL ACC.7

MOV B, #2

DIV AB

MOV A, B

JZ TEMP2; [8] 解释本条命令含义(在程序中的作用)。 MOV A, R0

ORL A, SECOND; [9] 解释本条命令作用。

SJMP RES

TEMP2: MOV A, R0

XRL A, SECOND

RES: MOV RESULT, A

SJMP $

END

Z=

5.位操作程序

布尔电路图如下:

注意:程序中00H,01H,02H,03H都是位地址,在片内数据存储器低128字节中的位寻址区中的20H单元中,分别对应20H.0, 20H.1, 20H.2, 20H.3 .

程序运行前需在X,Y,Z中存入数据,用来验证F的输入结果是否正确。即在20H.0, 20H.1, 20H.2,中存入数据,查看20H.3得到的结果是否正确,例如:X,Y,Z分别赋值为1、0、1, 20H 字节地址的其它位默认为0,则在右下角数据存储器20H字节地址中输入05(十六进制数),程序运行后,再次读取20H字节地址的内容,判断20H.3的值就是F对应的运算结果。

X BIT 00H

Y BIT 01H

Z BIT 02H

F BIT 03H

ORG 0000H

START: MOV C, Z

ANL C, /Y

MOV F, C

MOV C, Y

ANL C, /Z

ORL C, F

MOV F, C

MOV C, X

ANL C, Y

ORL C, /F

MOV F, C

SJMP $

END

[10]如果XYZ对应的值为1、1、0。经过运算后,20H字节的内容为______.

变量F的值为______.