um dài mà phải động não nữa

B_MODE EQU R7 MODE EQU P1.0 START EQU P1.1 STOP EQU P1.2 ORG 00H MAIN: MOV P1,#0FFH MOV B_MODE,#00H MODE0: MOV P2,#00001111B CALL DELAY MOV P2,#11110000B CALL DELAY JMP MODE0 MODE1: MOV P2,#00000000B CALL DELAY MOV P2,#00000001B CALL DELAY MOV P2,#00000011B CALL DELAY MOV P2,#00000111B CALL DELAY MOV P2,#00001111B CALL DELAY MOV P2,#00011111B CALL DELAY MOV P2,#00111111B CALL DELAY MOV P2,#01111111B CALL DELAY MOV P2,#11111111B CALL DELAY JMP MODE1 DELAY: MOV R0,#255 LOOP1: MOV R1,#255 LOOP0: CALL BUTTON DJNZ R1,LOOP0 DJNZ R0,LOOP1 RET BUTTON: JB MODE,NB0 CALL DEBOUNCE_BUTTON ;chống rung phím INC B_MODE CJNE B_MODE,#2,NBC0 MOV B_MODE,#00H NBC0: CJNE B_MODE,#0,NBC1 JMP MODE0 NBC1: CJNE B_MODE,#1,NBC2 JMP MODE1 NBC2: ;mở rộng thêm nhiều mode NB0: JB STOP,NB1 JB START,$ NB1: RET DEBOUNCE_BUTTON: MOV 30H,#5 MOV TMOD,#11H SETB TR0 LDB0: JNB TF0,$ CLR TF0 DJNZ 30H,LDB0 CLR TR0 RET END
B_MODE EQU R7 B_STOP EQU R6 B_START EQU R5 MODE EQU P1.0 START EQU P1.1 STOP EQU P1.2 ORG 00H DOI: JNB B_START,MAIN JNB B_STOP,DOI MAIN: MOV P1,#0FFH MOV B_MODE,#00H MODE0: MOV P2,#00001111B CALL DELAY MOV P2,#11110000B CALL DELAY JMP MODE0 MODE1: MOV P2,#00000000B CALL DELAY MOV P2,#00000001B CALL DELAY MOV P2,#00000011B CALL DELAY MOV P2,#00000111B CALL DELAY MOV P2,#00001111B CALL DELAY MOV P2,#00011111B CALL DELAY MOV P2,#00111111B CALL DELAY MOV P2,#01111111B CALL DELAY MOV P2,#11111111B CALL DELAY JMP MODE1 MODE2: MOV P2,#00000000B CALL DELAY MOV P2,#10000000B CALL DELAY MOV P2,#11000000B CALL DELAY MOV P2,#11100000B CALL DELAY MOV P2,#11110000B CALL DELAY MOV P2,#11111000B CALL DELAY MOV P2,#11111100B CALL DELAY MOV P2,#11111110B CALL DELAY MOV P2,#11111111B CALL DELAY JMP MODE2 MODE3: MOV P2,#00000000B CALL DELAY MOV P2,#11000000B CALL DELAY MOV P2,#11110000B CALL DELAY MOV P2,#11111100B CALL DELAY MOV P2,#11111111B CALL DELAY JMP MODE3 DELAY: MOV R0,#255 LOOP1: MOV R1,#255 LOOP0: CALL BUTTON DJNZ R1,LOOP0 DJNZ R0,LOOP1 RET BUTTON: JB MODE,NB0 CALL DEBOUNCE_BUTTON ;CHONG RUNG PHIM INC B_MODE CJNE B_MODE,#2,NBC0 CJNE B_MODE,#3,NBC1 CJNE B_MODE,#3,NBC2 CJNE B_MODE,#4,NBC3 MOV B_MODE,#00H NBC0: CJNE B_MODE,#0,NBC1 JMP MODE0 NBC1: CJNE B_MODE,#1,NBC2 ;MO RONG THEM NHIEU CODE JMP MODE1 NBC2: CJNE B_MODE,#0,NBC3 JMP MODE2 NBC3: CJNE B_MODE,#0,NBC4 JMP MODE3 NB0: JB STOP,NB1 JB START,$ NB1: RET DEBOUNCE_BUTTON: MOV 30H,#5 MOV TMOD,#11H SETB TR0 LDB0: JNB TF0,$ CLR TF0 DJNZ 30H,LDB0 CLR TR0 RET END
B_MODE EQU R7 B_STOP EQU R6 B_START EQU R5 MODE EQU P1.0 START EQU P1.1 STOP EQU P1.2 ORG 00H DOI: JNB B_START,MAIN JNB B_STOP,DOI MAIN: MOV P1,#0FFH MOV B_MODE,#00H MODE0: MOV P2,#00001111B CALL DELAY MOV P2,#11110000B CALL DELAY JMP MODE0 MODE1: MOV P2,#00000000B CALL DELAY MOV P2,#00000001B CALL DELAY MOV P2,#00000011B CALL DELAY MOV P2,#00000111B CALL DELAY MOV P2,#00001111B CALL DELAY MOV P2,#00011111B CALL DELAY MOV P2,#00111111B CALL DELAY MOV P2,#01111111B CALL DELAY MOV P2,#11111111B CALL DELAY JMP MODE1 MODE2: MOV P2,#00000000B CALL DELAY MOV P2,#10000000B CALL DELAY MOV P2,#11000000B CALL DELAY MOV P2,#11100000B CALL DELAY MOV P2,#11110000B CALL DELAY MOV P2,#11111000B CALL DELAY MOV P2,#11111100B CALL DELAY MOV P2,#11111110B CALL DELAY MOV P2,#11111111B CALL DELAY JMP MODE2 MODE3: MOV P2,#00000000B CALL DELAY MOV P2,#11000000B CALL DELAY MOV P2,#11110000B CALL DELAY MOV P2,#11111100B CALL DELAY MOV P2,#11111111B CALL DELAY JMP MODE3 DELAY: MOV R0,#255 LOOP1: MOV R1,#255 LOOP0: CALL BUTTON DJNZ R1,LOOP0 DJNZ R0,LOOP1 RET BUTTON: JB MODE,NB0 CALL DEBOUNCE_BUTTON ;CHONG RUNG PHIM INC B_MODE CJNE B_MODE,#2,NBC0 CJNE B_MODE,#3,NBC1 CJNE B_MODE,#3,NBC2 CJNE B_MODE,#4,NBC3 MOV B_MODE,#00H NBC0: CJNE B_MODE,#0,NBC1 JMP MODE0 NBC1: CJNE B_MODE,#1,NBC2 ;MO RONG THEM NHIEU CODE JMP MODE1 NBC2: CJNE B_MODE,#0,NBC3 JMP MODE2 NBC3: CJNE B_MODE,#0,NBC4 JMP MODE3 NB0: JB STOP,NB1 JB START,$ NB1: RET DEBOUNCE_BUTTON: MOV 30H,#5 MOV TMOD,#11H SETB TR0 LDB0: JNB TF0,$ CLR TF0 DJNZ 30H,LDB0 CLR TR0 RET END
B_MODE EQU R7 B_STOP EQU R6 B_START EQU R5 MODE EQU P1.0 START EQU P1.1 STOP EQU P1.2 ORG 00H MAIN: MOV P1,#0FFH MOV B_MODE,#00H MODE0: MOV P2,#00001111B CALL DELAY MOV P2,#11110000B CALL DELAY JMP MODE0 MODE1: MOV P2,#00000000B CALL DELAY MOV P2,#00000001B CALL DELAY MOV P2,#00000011B CALL DELAY MOV P2,#00000111B CALL DELAY MOV P2,#00001111B CALL DELAY MOV P2,#00011111B CALL DELAY MOV P2,#00111111B CALL DELAY MOV P2,#01111111B CALL DELAY MOV P2,#11111111B CALL DELAY JMP MODE1 MODE2: MOV P2,#00000000B CALL DELAY MOV P2,#10000000B CALL DELAY MOV P2,#11000000B CALL DELAY MOV P2,#11100000B CALL DELAY MOV P2,#11110000B CALL DELAY MOV P2,#11111000B CALL DELAY MOV P2,#11111100B CALL DELAY MOV P2,#11111110B CALL DELAY MOV P2,#11111111B CALL DELAY JMP MODE2 MODE3: MOV P2,#00000000B CALL DELAY MOV P2,#11000000B CALL DELAY MOV P2,#11110000B CALL DELAY MOV P2,#11111100B CALL DELAY MOV P2,#11111111B CALL DELAY JMP MODE3 DELAY: MOV R0,#180 LOOP1: MOV R1,#180 LOOP0: CALL BUTTON DJNZ R1,LOOP0 DJNZ R0,LOOP1 RET BUTTON: JB MODE,NB0 CALL DEBOUNCE_BUTTON ;CHONG RUNG PHIM INC B_MODE CJNE B_MODE,#2,NBC0 CJNE B_MODE,#3,NBC1 CJNE B_MODE,#4,NBC2 CJNE B_MODE,#5,NBC3 MOV B_MODE,#00H NBC0: CJNE B_MODE,#0,NBC1 JMP MODE0 NBC1: CJNE B_MODE,#1,NBC2 JMP MODE1 NBC2: CJNE B_MODE,#2,NBC3 JMP MODE2 NBC3: CJNE B_MODE,#3,NBC4 JMP MODE3 NBC4: DEC B_MODE DEC B_MODE DEC B_MODE JMP MODE0 NB0: JNB START,$ JNB STOP,NB1 NB1: RET DEBOUNCE_BUTTON: MOV 30H,#5 MOV TMOD,#11H SETB TR0 LDB0: JNB TF0,$ CLR TF0 DJNZ 30H,LDB0 CLR TR0 RET END
Comment