| ??? 02/29/00 11:09 Read: times |
#1620 - from LED to LCD |
.ORG 0H
JMP MAIN .ORG 50H ; SET PROGRAM ORIGIN 50H MAIN: MOV R1, #10H ; INTIALISE DIGIT '1s MOV R2, #20H ; INTIALISE DIGIT '10s MOV R3, #40H ; INTIALISE DIGIT '100s CALL DISPLAY ; CALL DISPLAY SUBROUTINE MOV P1, #0FFH ; MAKE PORT 1 AS INPUT PORT GET00: MOV A, P1 ; MOVE PORT 1 TO ACC ANL A, #00000011B ; MASK OFF UNUSED BIT CJNE A, #00H, GET00 ; CHECK BOTH CHANNEL A & B SIGNAL LOW DIRECT: MOV A, P1 ; MOVE PORT 1 TO ACC ANL A, #00000011B ; MASK OFF UNUSED BIT CJNE A, #01H, NEXT ; CHECK CHANNEL A = 1 IF NOT JUMP "NEXT" JMP CW ; JUMP TO CLOCKWISE SUBROUTINE NEXT: CJNE A, #02H, DIRECT ; CHECK CHANNEL B = 1 IF NOT JUMP "DIRECT" JMP CCW ; JUMP TO ANTI-CLOCKWISE SUBROUTINE CW: INC R1 ; INCREMENT DIGIT '1s CJNE R1, #1AH, NEXT1 ; CHECK COUNT = 10 MOV R1, #10H ; RESET DIGIT '1s INC R2 ; INCREMENT DIGIT '10s CJNE R2, #2AH, NEXT1 ; CHECK COUNT = 10 MOV R2, #20H ; RESET DIGIT '10s INC R3 ; INCREMENT DIGIT '1s CJNE R3, #4AH, NEXT1 ; CHECK COUNT = 10 MOV R3, #40H ; RESET DIGIT '100s JMP NEXT1 CCW: CJNE R1, #10H, DR1 ; CHECK COUNT = 0 MOV R1, #19H ; WRITE 9 CJNE R2, #20H, DR2 ; CHECK COUNT = 0 MOV R2, #29H WRITE 90 CJNE R3, #40H, DR3 ; CHECK COUNT = 0 MOV R3, #49H ; WRITE 900 DR1: DEC R1 ; DECREMENT DIGIT '1s JMP NEXT1 DR2: DEC R2 ; DECREMENT DIGIT '10s JMP NEXT1 DR3: DEC R3 ; DECREMENT DIGIT '100s JMP NEXT1 NEXT1: CALL DISPLAY ; CALL FOR DISPLAY SUBROUTINE JMP GET00 ; READ INPUT SIGNAL AGAIN DISPLAY: MOV P0, R1 ; DISPLAY DIGIT '1s CALL DELAY MOV P0, R2 ; DISPLAY DIGIT '10s CALL DELAY MOV P0, R3 ; DISPLAY DIGIT '100s CALL DELAY RET DELAY: MOV R6, #35H ; DELAY PROCESS FOR 0.1 SECOND F: MOV R5, #07H E: MOV R4, #0FFH D: DJNZ R4, D DJNZ R5, E DJNZ R6, F RET END |



