新闻中心

EEPW首页>嵌入式系统>设计应用> 单片机 散转表程序的使用

单片机 散转表程序的使用

作者: 时间:2016-11-23 来源:网络 收藏
使用散转表可以尽可能的减少程序的编写,方便。

减少判断次数。

本文引用地址://m.amcfsurvey.com/article/201611/320137.htm程序名:散转程序试验
;说明: 开使后led1亮,按下任何按键,寄存器r0从零加起,根据r0内容,程序散转到
;相应处执行,以点亮不同的led
;入口: p3.0--p3.3
;出口: P0
;练习日期:2007--06--17好心情

;修正日期:2007--06--18
;修正内容:将原来用ljmp的部分换为ajmp,将R0结束值改为08
;**************************************************************************
org0000h
ljmpmain
org0030h
main:movp0,#07fh;初始化p0口,led1点亮
movr0,#00h;初始化R0,使R0置1
;**********************按键检测********************************************
st:movP3,#0Fh;设置P3口,为检测按键做准备,将p3低3位置0
mova,p3;读p3口状态
cjnea,#0fh,F1;判断是否有按键按下,若有则跳到F1 处(比较转移,比较a与#0fh的大小
;若不相等,责转移,否则顺序往下执行,如果第一个数大于第二个数,则CY
;清零,否则置1,不影响其它操作位,3字节指令
acalldel
ajmpst
;**********************去抖动***********************************************
F1:acalldel;延时
cjnea,#0fh,f2;再次判断按键,若按下,则区按键处理程序,否则为干扰
ajmpst
;**********************按键处理*********************************************mov
F2:incr0;r0加1
cjner0,#08h,F3;判断R0是否=8,若等于,则顺序执行并将R0,清0,否则跳转到散转程序
movr0,#00h;R0清零
ajmpmain
;**********************散转处理*********************************************
F3:movDPTR,#TAB;将数据表地址传送到DPTR
mova,R0;将偏移量送入a
clrc;清零进位位
rlca;累加器a内容左移,(相当于*2)
jncnadd;若cy为零,则跳转到NADD,否则顺序执行
incdph;若cy为1时,DPH+1(因为DPTR为16位地址,a为8位,在此处加一,相当于DPTR低8位
;向高8位进位)修正地址
NADD:jmp@a+DPTR;散装指令,将a中的无符号数与数据指针DPTR的16位相加,相加之和做为下一条指令的
;地址送入PC中,不改变a和dptr,也不影响标志位,采用变址方式实现无条件转移
;其特点时转移地址可以在程序中加以改变
;***********************数据表************************************************
TAB:nop
nop;空指令,修正地址
ajmppb1
ajmppb2
ajmppb3
ajmppb4
ajmppb5
ajmppb6
ajmppb7


;***********************延时***************************************************
del:movR1,#014h
d1:movR2,#0FFH
d2:movr5,#01fh
djnzR5,$
djnzR2,d2
djnzR1,d1
ret
;***********************显示**************************************************
pb1:movp0,#03fh
acalldel
ljmpst
pb2:movp0,#01fh
acalldel
ljmpst
pb3:movp0,#0fh
acalldel
ajmpst
pb4:movp0,#07h
acalldel
ajmpst
pb5:movp0,#03h
acalldel
ajmpst
pb6:movp0,#01h
acalldel
ajmpst
pb7:movp0,#00h
acalldel
ajmpst
end



关键词:单片机散转表程

评论


技术专区

关闭