当0≤X≤255时,单片机如何用查表法编程求Y=X²

如题所述

很好处理呀,首先这个表应该做成16位的,用C的话就简单了,下面用汇编做个示范:
DEAL:
MOV DPTR,#TAB
MOV A,R0
RLC A
JC DEALH
PUSH ACC ;X<128时直接查表
MOVC A,@A+DPTR
MOV R2,A
POP ACC
INC A
MOVC A,@A+DPTR
MOV R3,A
RET
DEALH: ;当X大于127时的处理,此时DPH+1
INC DPH
PUSH ACC
MOVC A,@A+DPTR
MOV R2,A
POP ACC
INC A
MOVC A,@A+DPTR
MOV R3,A
RET
;表你自己补充全
TAB:
DW 0,1,4,9,16,25,36,49,64,81,100
DW ...............
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-09-17
用查表指令MOVC A,@A+DPTR
用DPTR指到表的首址,通过A来查表.
第2个回答  2012-09-17
使用无符号整形建立一个255个的表即可,因为最大值是255*255=65535正好是整形的最大值!
第3个回答  2012-09-17
const unsigned int XX[] = {0, 1, 4, 9, ...};

XX[n] 即为查表法得到的平方数。
相似回答