我寫了個程序你看看,沒注釋不過你應該能看懂,達不到亮的要求
因為是雙色點陣,所以在行送數值時,送了2字節一次。
SC1 BIT P1.2 //hang
CLK1 BIT P1.1
SEN1 BIT P1.0
SC2 BIT P2.2 //lie
CLK2 BIT P2.1
SEN2 BIT P2.0
ORG 0000H
AJMP START
NOP
ORG 0030H
MAIN: MOV R0,#00H
MOV R1,#08H
MOV R2,#80H ;第一行地址
MOV R3,#08H ;移八次
MOV R4,#00H
MOV R5,#00H
START: LCALL LIE
LCALL HANG
LCALL DIS
DJNZ R1,CL
MOV R1,#08H
MOV R0,#00H
MOV R2,#80H
AJMP START
CL: MOV A,R2
RR A
MOV R2,A
INC R0
AJMP START
LIE: MOV 30H,R2
CLR C
LIE1: MOV R4,30H
MOV A,R4
RLC A
MOV R4,A
MOV SEN2,C
CLR CLK2
NOP
SETB CLK2
DJNZ R3,LIE1
MOV R4,#00H
MOV R3,#10H
RET
HANG: CLR C
MOV DPTR,#TAB
MOV A,@R0
MOVC A,@A+DPTR
MOV R5,A
HANG1: MOV A,R5
RLC A
MOV R5,A
MOV SEN1,C
CLR CLK1
NOP
SETB CLK1
CJNE R3,#08H,HANG2
INC R0
HANG2: DJNZ R3,HANG1
MOV R5,#00H
MOV R3,#08H
RET
DIS: CLR SC2
NOP
SETB SC2
CLR SC1
NOP
SETB SC1
LCALL DEL
RET
DEL: MOV R7,#10
DEL1: MOV R6,#100
DJNZ R6,$
DJNZ R7,DEL1
RET
TAB: DB 00H,00H,00H,6CH,00H,92H,00H,82H,00H,44H,00H,28H,00H,10H
END |