ORG 0000H AJMP MAIN ORG 0030H MAIN: MOV P1, #0FFH MOv P3, #0FFH JNB P3.3,ON AJMP OFF ON: JB P1.6,L1 AJMP MAIN L1: ACALL ONKEY ACALL OPEN OFF: JB P1.7,LOOP1 AJMP MAIN LOOP1: ACALL OFFKEY ACALL CLOSE AJMP MAIN ONKEY: ACALL DELAY JB P1.6, KEY3 AJMP MAIN KEY3: RET OPEN: CLR P1.3 SETB P1.0 SETB P1.1 SETB P1.2 UP_LS:JNB P3.2,UP_LS1 AJMP UP_LS UP_LS1:ACALL DELAY JNB P3.2, UP AJMP UP_LS UP: SETB P1.3 CLR P1.1 SETB P1.0 SETB P1.2 UP_STOP:JNB P3.4, UP_STOP1 UP_STOP1:ACALL DELAY UP_STOP2:JNB P3.4,UP_STOP3 AJMP UP_STOP UP_STOP3:ACALL STOP RET STOP: SETB P1.0 SETB P1.1 SETB P1.2 SETB P1.3 RET OFFKEY: ACALL DELAY JB P1.7, KEY5 AJMP OFFKEY_RET KEY4: AJMP KEY5 KEY5: JB P1.7,KEY4 OFFKEY_RET:RET CLOSE: CLR P1.0 SETB P1.1 SETB P1.2 SETB P1.3 DON_STOP:JNB P3.5,DON_STOP1 AJMP DON_STOP DON_STOP1:ACALL DELAY JNB P3.5, LOOP AJMP DON_STOP LOOP: SETB P1.0 CLR P1.2 SETB P1.1 SETB P1.3 L6: JNB P3.3, CLOSE_STOP JNB P3.0,L7 AJMP L6 L7: ACALL DELAY JNB P3.0,L9 AJMP L6 L9: ACALL STOP ACALL OPEN1 ACALL DELAY1 ACALL STOP AJMP MAIN CLOSE_STOP:ACALL DELAY JB P3.3,L6 ACALL STOP RET DELAY: MOV R7,#100 D1: MOV R6,#100 DJNZ R6,$ DJNZ R7,D1 RET OPEN1: CLR P1.3 SETB P1.0 SETB P1.1 SETB P1.2 RET DELAY1: MOV R4,#20 ; 2S 延时子程序 DEL2: MOV R3,#200 DEL3: MOV R2,#250 DJNZ R2,$ DJNZ R3,DEL3 DJNZ R4,DEL2 RET END
|