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 |