; DOT MATRIX 세로로 한칸씩 이동하기
COLGREEN EQU 0FFC5H
COLRED EQU 0FFC6H
ROW EQU 0FFC7H
ORG 8000H
MOV R1,#00H ; DOT MATRIX LED 끄기
MOV R2,#00H
MOV R0,#00H
CALL DOTCOLG
CALL DOTCOLR
CALL DELAY
INIT: MOV R2,#00000000B
MOV R0,#00000000B
CALL DOTCOLR ; RED COLOR 끄기
MOV R1,#00000001B ; 첫번째 열 ON
MOV R0,#00000001B ; 첫번째 행 ON
CLR C
DROW: CALL DOTCOLG ; GREEN COLOR 켜기
CALL DELAY
MOV A,R0
RLC A ; 다음 행으로 이동
MOV R0,A
JC DCOL ; 열 스캔 으로 분기
JMP DROW ; 행 스캔 반복
DCOL: MOV R0,#00000001B ; 첫번째 행으로 초기화
CLR C
MOV A,R1
RLC A ; 다음 열로 이동
MOV R1,A
JC INIT ; 스캔이 끝났으면 다시 처음 부터
JMP DROW ; 다음 열에서 스캔 시작
DOTCOLG: MOV DPTR,#COLGREEN
MOV A,R1
MOVX @DPTR,A
MOV DPTR,#ROW
MOV A,R0
MOVX @DPTR,A
RET
DOTCOLR: MOV DPTR,#COLRED
MOV A,R2
MOVX @DPTR,A
MOV DPTR,#ROW
MOV A,R0
MOVX @DPTR,A
RET
DELAY: MOV R7,#02H
DELAY1: MOV R6,#0FFH
DELAY2: MOV R5,#0FFH
DELAY3: DJNZ R5,DELAY3
DJNZ R6,DELAY2
DJNZ R7,DELAY1
RET
END
'Technology > Embedded' 카테고리의 다른 글
8051 source code / DOT MATRIX 글자 좌우 이동하기 "ㄱ(기억자)" (0) | 2009.12.05 |
---|---|
8051 source code / DOT MATRIX ㄱ(기억)자 만들기 (0) | 2009.12.05 |
8051 source code / DOT MATRIX 각각의 행 스캔 (0) | 2009.12.05 |
8051 source code / DOT MATRIX Color test (0) | 2009.12.05 |
8051 source code / 7_segment counter(000000~ffffff) (0) | 2009.12.05 |