当前位置:文档之家› 单片机按键程序(汇编)

单片机按键程序(汇编)

单片机按键程序(汇编)
单片机按键程序(汇编)

;P0.0为键盘,P2.0为LED指示,按下LED亮,再按0.5秒,LED灭

;00h为识别LED状态的标志位,当00H为1时LED亮,当00H为0时,LED灭。初始化00H为0

LED_OFF BIT P2.0

K0 BIT P0.0

LED_STATE EQU 00H

ORG 0000H

SJMP MAIN

ORG 0030H

MAIN: CLR LED_STA TE ;清标志位

START:

JNB K0,LOOP

SJMP START ;判断K0状态,若KO不为0,则继续检测K0状态,若k0为0,则跳到loop

LOOP:

CLR LED_OFF

SETB LED_STATE ;点亮LED以及置标志位,CHECK1:

LCALL DELAY

JNB K0,CHECK1 ;若开关未弹起,则一直循环,直至开关弹起。

CHECK_LED_ON:

LCALL DELAY

JB K0,CHECK_LED_ON ;检查开关是否被按下,若未被按下则一直循环,若被按下,则判断标志位

MOV C,LED_STATE

JC CHECK_LED_OFF ;若标志位为1,则跳转到CHECK_LED_OFF

CLR LED_OFF

SETB LED_STATE ;若标志位为0,则点亮LED,同时置标志位为1

CHECK2:

LCALL DELAY

JNB K0,CHECK2 ;检查开关是否被弹起,一直循环

JMP CHECK_LED_ON ;开关弹起后,跳到CHECK_LED_ON,检查开关是否被按下

CHECK_LED_OFF:

JB K0,CHECK_LED_ON

LCALL DELAY

JB K0,CHECK_LED_ON

LCALL DELAY

JB K0,CHECK_LED_ON

LCALL DELAY

JB K0,CHECK_LED_ON

LCALL DELAY

JB K0,CHECK_LED_ON

LCALL DELAY

JB K0,CHECK_LED_ON

LCALL DELAY

JB K0,CHECK_LED_ON ;检查开关是否被按下0.5s,若中途弹起则跳转到CHECK_LED_ON。

SETB LED_OFF

CLR LED_STA TE ;若开关未弹起,则关闭LED,清标志位

CHECK_LED:

LCALL DELAY

JNB K0,CHECK_LED

JMP CHECK_LED_ON ;检查开关是否弹起,弹起后进入CHECK_LED_ON,继续判断开关是否按下

DELAY:

MOV R4,#0FFH

F2: MOV R5,#0FFH

F1: DJNZ R5,F1

DJNZ R4,F2

RET ;延时子程序

END

相关主题
文本预览
相关文档 最新文档