河北工业大学 单片机实验 第四次试验 实验八 查表程序设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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