运用散转表能够尽可能的削减程序的编写,便利。
削减判别次数。
程序名:散转程序实验
;阐明: 开使后led1亮,按下任何按键,寄存器r0从零加起,依据r0内容,程序散转到
;相应处履行,以点亮不同的led
;进口: p3.0–p3.3
;出口: P0
;操练日期:2007–06–17 好心境
;批改日期:2007–06–18
;批改内容:将原来用ljmp的部分换为ajmp,将R0完毕值改为08
;**************************************************************************
org 0000h
ljmp main
org 0030h
main: mov p0, #07fh ;初始化p0口,led1点亮
mov r0, #00h ;初始化R0,使R0置1
;**********************按键检测********************************************
st: mov P3, #0Fh ;设置P3口,为检测按键做准备,将p3低3方位0
mov a, p3 ;读p3口状况
cjne a, #0fh, F1 ;判别是否有按键按下,若有则跳到F1 处(比较搬运,比较a与#0fh的巨细
;若不持平,责搬运,不然次序往下履行,假如榜首个数大于第二个数,则CY
;清零,不然置1,不影响其它操作位,3字节指令
acall del
ajmp st
;**********************去颤动***********************************************
F1: acall del ;延时
cjne a, #0fh, f2 ;再次判别按键,若按下,则区按键处理程序,不然为搅扰
ajmp st
;**********************按键处理*********************************************mov
F2: inc r0 ;r0加1
cjne r0, #08h, F3 ;判别R0是否=8,若等于,则次序履行并将R0,清0,不然跳转到散转程序
mov r0, #00h ;R0清零
ajmp main
;**********************散转处理*********************************************
F3: mov DPTR, #TAB ;将数据表地址传送到DPTR
mov a, R0 ;将偏移量送入a
clr c ;清零进位位
rlc a ;累加器a内容左移,(相当于*2)
jnc nadd ;若cy为零,则跳转到NADD,不然次序履行
inc dph ;若cy为1时,DPH+1(由于DPTR为16位地址,a为8位,在此处加一,相当于DPTR低8位
;向高8位进位)批改地址
NADD: jmp @a+DPTR ;散装指令,将a中的无符号数与数据指针DPTR的16位相加,相加之和做为下一条指令的
;地址送入PC中,不改动a和dptr,也不影响标志位,选用变址方法完成无条件搬运
;其特色时搬运地址能够在程序中加以改动
;***********************数据表************************************************
TAB: nop
nop ;空指令,批改地址
ajmp pb1
ajmp pb2
ajmp pb3
ajmp pb4
ajmp pb5
ajmp pb6
ajmp pb7
;***********************延时***************************************************
del: mov R1, #014h
d1: mov R2, #0FFH
d2: mov r5, #01fh
djnz R5, $
djnz R2, d2
djnz R1, d1
ret
;***********************显现**************************************************
pb1: mov p0, #03fh
acall del
ljmp st
pb2: mov p0, #01fh
acall del
ljmp st
pb3: mov p0, #0fh
acall del
ajmp st
pb4: mov p0, #07h
acall del
ajmp st
pb5: mov p0, #03h
acall del
ajmp st
pb6: mov p0, #01h
acall del
ajmp st
pb7: mov p0, #00h
acall del
ajmp st
end
声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/news/guandian/260891.html