河北工业大学 单片机实验 第四次试验 实验八 查表程序设计

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

实验八查表程序设计

一、实验目的

1.进一步熟悉MCS-51指令系统和汇编语言程序设计。

2.学会用MOVC指令编写查表程序。

二、实验内容

1.设计并调试一个查平方表的程序,其功能为应用查表指令MOVC A,@A+PC,求累加器A中数的平方值,结果平方值送A。要求待查的(A)≤15。

2.设计并调试一个根据电压值查与其对应的温度值的查表程序,其功能为应用查表指令MOVC A,@A+DPTR,求(A)中电压值对应的温度值,将温度值送R2R3(温度值为二字节的压缩BCD码),电压值的范围为(A)≤0FFH。实验程序参考框图如3-8所示。

三、实验步骤

1.键入程序和预定表后;

2.通过修改自变量参数启动并调试程序,直至正确为止。

3.边调试边体会用PC或DPTR作指针查表的区别。

四、实验报告要求

根据实验内容和程序参考流程,编出所需查表程序,列出实验程序清单。

五、思考题

1.当表的长度〉255个字节时应选哪一条指令查表?

答:当表的长度〉255个字节时应选“MOVC A,@A+DPTR”指令查表,并且需要对DPH、DPL进行运算处理,求出表目地址,再用“MOVC A,@A+DPTR”指令查表。

2.用PC指针查表编程时应注意什么?

答:应先用传送指令把所查数据的项数送入累加器A,并用“ADD A,#data”对A进行修正data值等于查表指令和数据表格之间的字节数,然后用“MOVC A,@A+PC”查表,同时用PC指针查表的表的范围不能大于255个字节。

六、参考程序清单

1.求平方值查表程序:

ORG 0000H

ADD A,#02H

MOVC A,@A+PC

SJMP $

DB 0,1,4,9,16,25 36,49

DB 64,81,100,121,144,169,196,225

END

本程序实现通过查表得A累加器中数的平方值并将结果送A,根据A中数值采用基址加变址方法找到所查数的地址得所对应的平方数。例:当(A)=5时,执行过程如下:

D:0XE0(A)

PC指针 ORG 0000H 05H

C:0X0000 ADD A,#02H 07H

C:0X0002 MOVC A,@A+PC 19H ;A+PC=A(10),查表的19H(25) C:0X0003 SJMP $

C:0X0005 DB 0,1,4,9,16,25 36,49

DB 64,81,100,121,144,169,196,225

END

2.测量温度查表程序:

双字节查表程序刘程序如图3-8所示:

双字节查表参考程序清单:

ORG 0000H

MOV DPTR,#TAB

MOV R0,A

ADD A,R0

MOV F0,C

ADD A,DPL

MOV DPL,A

CLR A

ADDC A,DPH

MOV C,F0

ADDC A,#0

MOV DPH,A

CLR A

MOVC A,@A+DPTR ;查第一个字节

MOV R2,A

CLR A

INC DPTR

MOVC A,@A+DPTR ;查第二个字节

MOV R3,A

SJMP $

TAB:DW 0100H,0110H,0120H,0130H,0140H,0150H,0160H ;温度表

END

本程序实现根据A中电压查表中与之对应的温度值,表中温度均为2字节故

(A)*2+DPTR(表首地址)即可查的对应温度值。例:温度表如上,当电压为

3时执行过程如下:

DPTR

PC 指针A(D:0X0E0) DPH DPL R2(D:0X02) R3(D:0X03)

C:0X0000 ORG 0000H 03H

C:0X0000 MOV DPTR,#TAB 00H 1EH

C:0X0003 CLR C

C:0X0004 MOV R0,A

C:0X0005 ADD A,R0 06H

C:0X0006 MOV F0,C

C:0X0008 ADD A,DPL 24H

C:0X000A MOV DPL,A 00H 24H

C:0X000C CLR A 00H

C:0X000D ADDC A,DPH 00H

C:0X000F MOV C,F0

C:0X0011 ADDC A,#0 00H

C:0X0013 MOV DPH,A

C:0X0015 CLR A

C:0X0016 MOVC A,@A+DPTR 01H

C:0X0017 MOV R2,A 01H

C:0X0018 CLR A 00H

C:0X0019 INC DPTR 00H 25H

C:0X001A MOVC A,@A+DPTR 30H

C:0X001B MOV R3,A 30H

C:0X001C SJMP $ (R2)=01H,(R3)=30H,电压为3时对应温度为0130H。

C:0X001E TAB:DW

0100H,0110H,0120H,013

0H,0140H,0150H,0160H

END

实验九散转程序设计

一、实验目的

1.进一步熟悉MCS-51指令系统和汇编语言程序设计。

2.学会用三种不同的方法设计散转程序,并掌握它们的区别。

二、实验内容

设计并调试一个程序,其功能为根据(20H)的值i (i≤7)取相应的处理程序P i的入口地址并转移到程序P i,P i的处理程序的功能为(Ri)+1→(Ri),[(20H)+1]^7 (20H),再重复地根据(20H)散转。参考程序框图如图3-9所示:

三、实验步骤

1.输入编好的程序,汇编成功;

2.调试程序,使用修改寄存器的方法,使R0—R7初值为0,然后启动系统,带断点运行,运行一个循环后检查运行结果,观察R0—R7是否依次计数,排除程序中错误,直至R0—R7同步计数为止。

四、实验报告要求

1.列出根据流程图编写的程序清单,写出程序执行的结果。

2.采用另外两种不同的方法编写程序,列出调试通过的程序清单。

五、参考程序清单

散转程序清单:请将程序补充完整后运行。

ORG 0000H

MOV 20H,#00H

TB0: MOV DPTR,#TABL

MOV A, 20H

ADD A,20H

MOV F0,C

ADD A,DPL

MOV DPL,A

CLR A

相关文档
最新文档