51单片机汇编语言编程独立按键
电路原来是两个按键的(一个按键是按下后十位加1,一个是个位加1),用的是中断方式,想改成旁边的四个按键电路(一个按下后十位加1,一个是个位加1,一个十位减1,一个个位减1...
电路原来是两个按键的(一个按键是按下后十位加1,一个是个位加1),用的是中断方式,想改成旁边的四个按键电路(一个按下后十位加1,一个是个位加1,一个十位减1,一个个位减1),不一定要中断实现,单片机可用的I/O口也只剩P2和P3的一些剩余I/O(如上图)
两个按键的程序如下:
/****************中断程序,按键设定温度模块*********************/
ZINT0: PUSH ACC
INC 75H
MOV A,76H
CJNE A,#10,L1
MOV A,75H
CJNE A,#10,ZINT01
MOV 75H,#0
L1: MOV A,75H
CJNE A,#10,ZINT01
MOV 75H,#0
ZINT01:POP ACC
RETI
ZINT1: PUSH ACC
INC 76H
MOV A,76H
CJNE A,#10,ZINT11
MOV 76H,#0
ZINT11:POP ACC
RETI
ZZZ1: MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV P0,A
RETI
END
请大神帮忙改一下啊 展开
两个按键的程序如下:
/****************中断程序,按键设定温度模块*********************/
ZINT0: PUSH ACC
INC 75H
MOV A,76H
CJNE A,#10,L1
MOV A,75H
CJNE A,#10,ZINT01
MOV 75H,#0
L1: MOV A,75H
CJNE A,#10,ZINT01
MOV 75H,#0
ZINT01:POP ACC
RETI
ZINT1: PUSH ACC
INC 76H
MOV A,76H
CJNE A,#10,ZINT11
MOV 76H,#0
ZINT11:POP ACC
RETI
ZZZ1: MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV P0,A
RETI
END
请大神帮忙改一下啊 展开
1个回答
展开全部
四个按键,定义如下:
KEY1 BIT P3.0
KEY2 BIT P3.1
KEY3 BIT P3.2
KEY4 BIT P3.3
按键处理程序:
;-----------------------------------
READ_KEY:
JB KEY1, K2
CALL DELAY
JB KEY1, K2
JNB KEY1, $
PUSH ACC
INC 75H
MOV A, 75H
CJNE A, #10, ZINT01
MOV 75H, #0
ZINT01:
POP ACC
JMP K_EXIT
;---------------
K2: JB KEY2, K3
CALL DELAY
JB KEY2, K3
JNB KEY2, $
PUSH ACC
INC 76H
MOV A, 76H
CJNE A, #10, ZINT01
MOV 76H, #0
ZINT01:
POP ACC
JMP K_EXIT
;---------------
K3: JB KEY3, K4
CALL DELAY
JB KEY3, K4
JNB KEY3, $
PUSH ACC
DEC 75H
MOV A, 75H
CJNE A, #255, ZINT03
MOV 75H, #9
ZINT03:
POP ACC
JMP K_EXIT
;---------------
K4: JB KEY4, K_EXIT
CALL DELAY
JB KEY4, K_EXIT
JNB KEY4, $
PUSH ACC
DEC 76H
MOV A, 76H
CJNE A, #255, ZINT04
MOV 76H, #9
ZINT04:
POP ACC
K_EXIT:
RET
;---------------
DELAY:
DJNZ R7, $
DJNZ R7, $
RET
;-----------------------------------
KEY1 BIT P3.0
KEY2 BIT P3.1
KEY3 BIT P3.2
KEY4 BIT P3.3
按键处理程序:
;-----------------------------------
READ_KEY:
JB KEY1, K2
CALL DELAY
JB KEY1, K2
JNB KEY1, $
PUSH ACC
INC 75H
MOV A, 75H
CJNE A, #10, ZINT01
MOV 75H, #0
ZINT01:
POP ACC
JMP K_EXIT
;---------------
K2: JB KEY2, K3
CALL DELAY
JB KEY2, K3
JNB KEY2, $
PUSH ACC
INC 76H
MOV A, 76H
CJNE A, #10, ZINT01
MOV 76H, #0
ZINT01:
POP ACC
JMP K_EXIT
;---------------
K3: JB KEY3, K4
CALL DELAY
JB KEY3, K4
JNB KEY3, $
PUSH ACC
DEC 75H
MOV A, 75H
CJNE A, #255, ZINT03
MOV 75H, #9
ZINT03:
POP ACC
JMP K_EXIT
;---------------
K4: JB KEY4, K_EXIT
CALL DELAY
JB KEY4, K_EXIT
JNB KEY4, $
PUSH ACC
DEC 76H
MOV A, 76H
CJNE A, #255, ZINT04
MOV 76H, #9
ZINT04:
POP ACC
K_EXIT:
RET
;---------------
DELAY:
DJNZ R7, $
DJNZ R7, $
RET
;-----------------------------------
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询