单片机 查表法

单片机 查表法,第1张

0100H、0200H表示的都是51单片机程序存贮器里面的地址,51单片机可寻址最大64k程序存贮器、最大64k内存。程序存贮器和内存不是统一编址。

PC时程序计数器,主要是记录单片机在ROM的执行位置,一般单片机可以访问64K的地址,也就是需要16位的字宽

单片机编址是16进制,看看编程器里怎样表示的。

ORG 0100H 表示程序从这里开始执行

DPTR是一个16位的寄存器,对这个数据寄存器赋值时,对于寄存器寻址方式,我们是把它拆分为高八位,低八位来访问的

由于它是16位,所以我们可以用它来访问64K的ROM空间,也可以访问64K的外表RAM空间

ORG 0200H 表示存放数据的地址从这里开始,这个地址是程序存贮器地址,不可以在运行中改变。

SQU是查表子程序的编号,主程序调用这段查表程序需 LCALL SQU,这时候单片机的pc指向0101h,单片机从0101h开始执行指令 。

ORG 0000H

MOV DPTR,#TABLE

MOV R2,A (暂存A中原来的参数)

MOVC A,@A+DPTR ;到表头地址加A中的偏移量处取数

MOV R0,A (把取来的第一个数放在R0中)

XCH A,R2 (把原暂存的A值和和才取的数进行交换存贮)

INC A (因是二字节的这准备取下一个字节的数)

MOVC A,@A+DPTR

MOV R1,A (把取的第二个字放在的R1中)

SJMP $

ORG 2000H

TABLE: DW 0,1,4,9,16,25,36,49,64,81,100,121,144,169

DW

196,225,256,289,324,361,400,441,484,529,576,625,676,729,784,841,900

END

PIC系列单片机的查表程序可以利用子程序带值返回的特点来实现。

具体是在主程序中先取出表数据地址放入W,接着调用子程序,子程序的第一条指令将W置入PC,则程序跳到数据地址的地方,再由“RETLW”指令将数据返回到主程序。

x data 30h

y data 31h

org 0000h

mov dptr,#tab ;取表首地址

mov a,x ;把x赋给累加器a(可以理解为偏移量为x)

movc a,@a+dptr ;查表指令,把对应的地址的值放到a中 --如果x=0,则对应的表的第0个值,如果x=1,则对应的表的第1个值

mov y,a ;把查表结果放到y

sjmp $

;以下这个表存放的就是0到15的平方的值

tab:db 00h,01h,04h,09h,10h,19h,24h,31h

; 0 1 4 9 16 25 36 49

db 40h,51h,64h,79h,90h,0A9,0c4h,0e1h

; 64 81 100 121 144 1313 1414 1515

以上就是关于单片机 查表法全部的内容,包括:单片机 查表法、51单片机 汇编语言 常用数据处理程序设计 查表送寄存器、PIC 的单片机如何实现查表功能等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址:https://54852.com/zz/9811858.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存