MCS-51单片机查表程序

MCS-51单片机查表程序,第1张

16和7是查表指令时的PC与数据表格之间的字节

MOV A ,@R0 取R0指向的地址中的数据到A

ANL A,#0FH ;高四位清零

ADD A,#16 ;加16

MOVC A, @A+PC ;查表,表的首地址为绝对地址PC+A

MOVC A,@A+PC就需要1个字节啊

查表指令距离表首地址的长度是字节数

用DPTR的汇编程序:

ORG 0100H

MOV 30H,#12H

MOV 31H,#34H

MOV 32H,#56H

MOV 33H,#78H

LCALL SUBRTE

ORG 1000H

SUBRTE: MOV R0,#30H ;置地址指针R0初值

MOV R1,#40H ;置地址指针R1初值

MOV R2,#4 ;置字节数

LOOP:MOV A,@R0 ;取16进制数

ANL A,#0FH ;屏蔽高4位

MOV DPTR,#TABLE ;

MOVC A,@A+DPTR;查表低4位转换为ASCⅡ码

MOV @R1,A ;送结果

INC R1;岩备谨修改指针

MOV A,@R0;从新取16进制数

SWAP A;高4位与低滚拍4位互换

ANL A,#0FH ;取高4位

ADD A,#7

MOVC A,@A+PC ;查表粗基高4位转换为ASCⅡ码

MOV @R1,A

INC R0

INC R1

DJNZ R2,LOOP

DEC R1

RET

TABLE: DB '012345678'

DB '9ABCDEF'

END

MOV DPTR,#TAB

MOVC A,@A+DPTR

CPL A 理解这句

MOV P0,A

MOV DPTR,#TAB 这句是将TAB处的内容的地址移入DPTR寄存器(51单片机中唯一的一个16位的)

MOVC A,@A+DPTR 这句将(A寄存器中的内容+DPTR)中的贺含贺地址处的数据移入A

比如此时 A=0,DPTR=300,这时就将300+0寄存器里的数据移到A

如果A=2,DPTR=300,这时就将(300+2)寄存器里的数据移到A

CPL A A求反,

MOV P0,A 将A的值移入P0口,禅派老败用数码管等显示出来结果


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12549098.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存