单片机查表程序编写 急!

单片机查表程序编写 急!,第1张

org 0000h

mov 30h, #1

mov 31h, #3

mov 32h, #5

mov 33h, #7

mov 34h, #9

mov 35h, #2

mov 36h, #4

mov 37h, #6

mov 38h, #8

mov 39h, #10

call SQRT

sjmp $

查表法求平方的程序如下。

SQRT:

MOV R0, #30H

MOV R1, #40H

MOV R2, #10

LOOP:

MOV A, @R0

ADD A, #S_TAB - ($ + 4)

MOVC A, @A + PC

MOV @R1, A

INC R0

INC R1

DJNZ R2, LOOP

RET

S_TAB:

DB 1, 4, 9, 16, 25, 36, 49, 64, 81, 100

ORG 1000H

MOV DPTR,#2100H

LP0: MOVX A,@DPTR

CJNE A,#41H,LP1

MOV R0,DPL

MOV R1,DPH

MOV DPTR,#21A0H

MOV A,R0

MOVX @DPTR,A

INC DPTR

MOV A,R1

MOVX @DPTR,A

SJMP LP3

LP1: CJNE A,#0FFH,LP2

MOV DPTR,#21A0H

MOV A,#0FFH

MOVX @DPTR,A

INC DPTR

MOVX @DPTR,A

INC DPTR

SJMP LP3

LP2: INC DPTR

SJMP LP0

LP3: SJMP $

END

0-9循环显示,经验证完全无误。。谢谢采纳。

ORG 0000H

MOV DPTR,#TAB DPTR此时指向0C0H,以后由于A值的不停加1会不停的往后指,在循环

MAIN:MOV R5,#0 给初值

MOV A,R5A=0

LP: MOVC A,@A+DPTR 查表

MOV P1,A显示

MOV A,R5

INC A 加1

MOV R5,A

LCALL DELAY 延时

CJNE A,#10,LP 是否 到9.

SJMP MAIN

DELAY:MOV R3,#255

DEL1: MOV R4,#255

DEL2: NOP

DJNZ R4,DEL2

DJNZ R3,DEL1

RET

TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H共阳字符。0-9。

END 如有疑问,可以HI我。。


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存