RET ;16次到,退出
;
KEYOK: MOV A,R7 ;查表次数入A(即键号值)
MOV B,A ;放入B
RL A ;左移
ADD A,B ;相加(键号乘3处理JMP 3字节指令)
MOV DPTR,#KEYFUNTAB ;取键功能散转表首址
JMP @A+DPTR ;查表
KEYFUNTAB: LJMP KEYFUN00 ; 键功能散转表。跳至0号键功能程序
LJMP KEYFUN01 ; 跳至01号键功能程序
LJMP KEYFUN02 ; 跳至02号键功能程序
LJMP KEYFUN03
LJMP KEYFUN04
LJMP KEYFUN05
LJMP KEYFUN06
LJMP KEYFUN07
LJMP KEYFUN08
LJMP KEYFUN09
LJMP KEYFUN10
LJMP KEYFUN11
LJMP KEYFUN12
LJMP KEYFUN13
LJMP KEYFUN14
LJMP KEYFUN15 ; 跳至15号键功能程序
RET ;散转出错返回
;
;键号对应P1口数值表(同时按下两键为无效操作)
KEYTAB: DB 0EEH,0DEH,0BEH,7EH,0EDH,0DDH,0BDH,7DH
DB 0EBH,0DBH,0BBH,7BH,0E7H,0D7H,0B7H,77H,0FFH,0FFH
;
;0号键功能程序
KEYFUN00: INC 29H ;百位数加1
MOV A,29H ;入A
CLR C ;清进位标志
CJNE A,#02H,FUN00 ;
FUN00: JC FUN00OUT ;百位小于2转FUNOO0UT
MOV 29H,#00H ;大于等于2清为0(百位只能是0或1)
FUN00OUT: MOV A,29H ; 判断百位是0还是1
XRL A,#01H ;
JNZ F00OUT1 ;若百位为0转FOOOUT1
MOV 28H,#00H ;若百位为1,十位为0
AJMP F00OUT ;
F00OUT1: MOV 28H,#08H ;若百位为0,十位数改为8
F00OUT: LCALL DISPUPDAT ;写入控制芯片(修改发射频率)
RET ;返回
;
;01号键功能程序
KEYFUN01: INC 28H ;十位数加1
MOV A,28H ;入A
CLR C ;清进位标志
CJNE A,#0AH,FUN01 ;判断是否小于10
FUN01: JC FUN01OUT ;十位数小于10转FUN01OUT
MOV 28H,#00H ;十位数大于或等于10清为0
上一页 [1] [2] [3] [4] [5] [6] [7] [8] 下一页
本文关键字:数控 51单片机,单片机-工控设备 - 51单片机