KEY BIT P1.0 ;按键低电平有效 LED BIT P2.0 ;LED高电平亮 MOV P1,#0FFH ;置P1为输入方式 CHECK_KEY: JB P1.0,$ ;等待按键 LCALL DELAY10MS ;去抖动10ms JB P1.0,CHECK_KEY ;确定有按键 LCALL DELAY1S ;延时1S后检测按键 JB P1.0,short ;若已为高电平为短按 LCALL LED_FLASH ;若仍然为低电平为长按 LCALL LED_FLASH JNB P1.0,$ ;等键松开 LCALL DELAY10MS ;去抖动 SJMP CHECK_KEY ;返回循环
short: LCALL LED_FLASH ;闪烁1次 SJMP CHECK_KEY ;循环
LED_FLASH: SETB LED ;闪烁程序 LCALL DELAY500MS ;延时500ms CLR LED LCALL DELAY500MS RET DELAY10MS: MOV R2,#100 L1: MOV R3,#50 DJNZ R3,$ DJNZ R2,L1 RET DELAY500MS: MOV R2,#100 L2: MOV R3,#250 DJNZ R3,$ DJNZ R2,L1 RET DELAY1S: MOV R2,#200 MOV R3,#250 DJNZ R3,$ DJNZ R2,L1 RET END |