单片机怎么实现一个开关控制八个灯按一下亮一个按八下八个灯都亮汇编语言程序

急急急,,谢谢
2024-12-02 15:34:20
推荐回答(3个)
回答1:

用一个寄存器做变量就可以。

假如按键是一个开个,接在P1.0,八个灯在P0,低电平灯亮
程序是这样的
MOV 30H ,#00
LOP :
SETB P1.0
JNB P1.0, PRESS
AJMP LOP
PRESS:
INC 30H
MOV A,30H
CJNE A,#9,L_NEXT
MOV 30H,#1
L_NEXT:
JNB P1.0,$
MOV A,30H
CJNE A,#1 ,LED1_ON
CJNE A,#2, LED2_ON
CJNE A,#3, LED3_ON
CJNE A,#4, LED4_ON
CJNE A,#5, LED5_ON
CJNE A,#6, LED6_ON
CJNE A,#7, LED7_ON
CJNE A,#8, LED8_ON
LJMP LOP

LED1_ON: MOV P0,#0FEH //亮一个灯
LJMP LOP
LED2_ON: MOV P0,#0FDH //亮一个灯
LJMP LOP
LED3_ON: MOV P0,#0F8H //亮一个灯
LJMP LOP
LED4_ON: MOV P0,#0F0H //亮一个灯
LJMP LOP
LED5_ON: MOV P0,#0E0H //亮一个灯
LJMP LOP
LED6_ON: MOV P0,#0D0H //亮一个灯
LJMP LOP
LED7_ON: MOV P0,#080H //亮一个灯
LJMP LOP
LED8_ON: MOV P0,#00H //亮一个灯
LJMP LOP

回答2:

;一个开关控制八个灯
;按一下亮一个
;按八下八个灯都亮

;按键接在P1.0
;八个灯在P0,低电平灯亮

KEY EQU P1.0

ORG 0000H
MOV A, #11111111B
WAIT:
MOV P0, A
JB KEY, $
DJNZ R7, $
DJNZ R7, $
JB KEY, WAIT
JNB KEY, $
CLR C
RLC A
JC WAIT
JMP 0000H
END

回答3:

C语言才会,汇编不会。。。。。

一个IO作KEY,再用一个全局变量判断亮灯状态,随按键反转。另外可以使用一P1 IO连接8个LED