主要是想用这个实现显示与键盘的,然后IO口真的就不够用,595的时序图我找了半天没找到。
我刚刚写了一个,但还是有点问题
他输出的不是我想要的,本来是想让六个数码管同时输出0~9,但他就是乱码
可以帮我看看吗?
程序如下
SHCP EQU P3.5
STCP EQU P3.6
SD EQU P3.4
ORG 00H
LJMP XS595
ORG 30H
XS595: MOV R0,#10H
LL: MOV DPTR,#TAB595_0_9
MOVC A,@A+DPTR
INC DPTR
MOV 30H,A
MOV R2,#06H
LS: MOV A,30H
MOV R1,#08H ;将A给SD,循环8次
HH:
RRC A
MOV P3.4,C
NOP
CLR P3.5
SETB P3.5
DJNZ R1,HH
CLR P3.6
SETB P3.6
XS: CLR P3.6 ;显示
SETB P3.6
DJNZ R2,HH
LJMP DELAY500MS
DJNZ R0,LL
LJMP XS595
DELAY500MS: ;误差 0us
MOV R7,#17H
DL1:
MOV R6,#98H
DL0:
MOV R5,#46H
DJNZ R5,$
DJNZ R6,DL0
DJNZ R7,DL1
RET
TAB595_0_9: ;0~9~灭 ;将显示信息转化为地址信息
DB 00000010B,10011110B,00100100B,00001100B,10011000B,01001000B,01000000B,00011110B,00000000B,00001000B,11111110B; |