Mình đang làm bài tập lớn với đề điều chỉnh hướng xuất dữ liệu của chữ xuất ra LED ma trận, với các phím mũi tên dịch trái, phải, lên, xuống(#34h,#36h,#38h,#32h). Dữ liệu của mình là chữ A, S nhập từ bàn phím xuất ra LED ma trận. Đây là code mình làm, còn về phần proteus thì mới cài chưa biết làm mong mấy bạn thông cảm. Với dịch trái, phải thì phụ thuộc vào R1; dịch lên, xuống thì mình RR, RL dữ liệu nhập từ bảng.
ORG 2000H
MOV SCON,#52H
MOV TMOD,#20H
MOV TH1,#-3
SETB TR1
MAIN:
INCHAR:
JNB RI, IN_CHAR
CLR RI
MOV A, SBUF
RET
MOV R0, #0
MOV R1, #0
CALL INCHAR
CJNE A,#34h,DICHTRAI
CALL INCHAR
CJNE A,#36h,DICHPHAI
MOV A, #01H
LAP: ACALL QUET_COT
ACALL QUET_HANG
INC R0
ACALL DELAY
CJNE R0, #7, LAP
SJMP MAIN
QUET_COT:
RR A
MOV DPTR, #0C000H
MOVX @DPTR, A
RET
QUET_HANG:
PUSH ACC
MOV DPTR, #0A000H
CALL INCHAR
CJNE A,#41h,DU_LIEU_HANG_A
CALL INCHAR
CJNE A,#42h,DU_LIEU_HANG_S
CALL INCHAR
CJNE A,#38h,DICHLEN
CALL INCHAR
CJNE A,#32h,DICHXUONG
MOVX @DPTR, A
POP ACC
RET
DU_LIEU_HANG_A:
PUSH DPH
PUSH DPL
MOV A, R1
MOV DPTR, #CHAR_A
MOVC A, @A+DPTR
POP DPH
POP DPL
RET
DU_LIEU_HANG_S:
PUSH DPH
PUSH DPL
MOV A, R1
MOV DPTR, #CHAR_S
MOVC A, @A+DPTR
POP DPH
POP DPL
RET
DICHLEN:
RR A
RET
DICHXUONG:
RL A
RET
DICHTRAI:
DEC R1
RET
DICHPHAI:
INC R1
RET
DELAY:
MOV R7, #4
LAPC1: MOV R6, #250
DJNZ R6, $
DJNZ R7, LAPC1
RET
CHAR_A: DB 0FFH, 03H, 0EDH, 0EEH, 0EEH, 0EDH, 03H, 0FFH
CHAR_S: DB 0FFH, 70H, 76H, 76H, 76H, 76H, 06H, 0FFH
END
Cảm ơn vì các bạn đã đọc bài, hic.
ORG 2000H
MOV SCON,#52H
MOV TMOD,#20H
MOV TH1,#-3
SETB TR1
MAIN:
INCHAR:
JNB RI, IN_CHAR
CLR RI
MOV A, SBUF
RET
MOV R0, #0
MOV R1, #0
CALL INCHAR
CJNE A,#34h,DICHTRAI
CALL INCHAR
CJNE A,#36h,DICHPHAI
MOV A, #01H
LAP: ACALL QUET_COT
ACALL QUET_HANG
INC R0
ACALL DELAY
CJNE R0, #7, LAP
SJMP MAIN
QUET_COT:
RR A
MOV DPTR, #0C000H
MOVX @DPTR, A
RET
QUET_HANG:
PUSH ACC
MOV DPTR, #0A000H
CALL INCHAR
CJNE A,#41h,DU_LIEU_HANG_A
CALL INCHAR
CJNE A,#42h,DU_LIEU_HANG_S
CALL INCHAR
CJNE A,#38h,DICHLEN
CALL INCHAR
CJNE A,#32h,DICHXUONG
MOVX @DPTR, A
POP ACC
RET
DU_LIEU_HANG_A:
PUSH DPH
PUSH DPL
MOV A, R1
MOV DPTR, #CHAR_A
MOVC A, @A+DPTR
POP DPH
POP DPL
RET
DU_LIEU_HANG_S:
PUSH DPH
PUSH DPL
MOV A, R1
MOV DPTR, #CHAR_S
MOVC A, @A+DPTR
POP DPH
POP DPL
RET
DICHLEN:
RR A
RET
DICHXUONG:
RL A
RET
DICHTRAI:
DEC R1
RET
DICHPHAI:
INC R1
RET
DELAY:
MOV R7, #4
LAPC1: MOV R6, #250
DJNZ R6, $
DJNZ R7, LAPC1
RET
CHAR_A: DB 0FFH, 03H, 0EDH, 0EEH, 0EEH, 0EDH, 03H, 0FFH
CHAR_S: DB 0FFH, 70H, 76H, 76H, 76H, 76H, 06H, 0FFH
END
Cảm ơn vì các bạn đã đọc bài, hic.