Email: Password: Remember Me | Create Account (Free)

Back to Subject List

Old thread has been locked -- no new posts accepted in this thread
???
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


No replies in thread

Back to Subject List