紫川吧 关注:68,594贴子:2,233,665
  • 0回复贴,共1

求助,8X8点阵输出X的问题!!!

只看楼主收藏回复

CLK EQU P3.2 
DINA EQU P3.3 
DINB EQU P3.4 
CLEAR EQU P3.5 


ORG 0000H 
AJMP MAIN 
ORG 0100H 


MAIN: 


MOV SP,#70H ;设置堆栈指针 
MOV 50H,#07EH ;设置发送的列数据 
MOV 51H,#0BDH 
MOV 52H,#0DBH 
MOV 53H,#0E7H 
MOV 54H,#0E7H 
MOV 55H,#0DBH 
MOV 56H,#0BDH 
MOV 57H,#07EH 




CLR CLEAR ;初始化 IO口 
SETB CLK 
SETB DINA 
SETB DINB 
SETB CLEAR 


MAINLOOP: 

MOV R6,#8H ;设置扫描次数 
MOV DPTR,#09000H ;读数扫描端口数据 
MOV R1,#50H ;指定列数据指针 

Flashcy: 

MOV A,@R1 ;读取列数据 
MOV R0,A 
INC R1 ;列数据指针加1 
CLR A 
MOVC A,@a+ DPTR ;读取扫描端口数据 
MOV P1,0FFH 
LCALL SENDTO ;发送列数据 
MOV P1,a 
INC DPTR 
LCALL DELAY 
DJNZ R6,flashcy 
SJMP mainloop 


Sendto: 

PUSH ACC 
CLR CLK 


SENDTIME: 


MOV R7,#08H 
MOV A,R0 
CLR C 


SENDCY: 




RRC A 
MOV DINA,C 
SETB CLK 
CLR CLK 
DJNZ R7,SENDCY 
POP ACC 
RET 


DELAY: 


MOV R7,@01 


DELAY0: 


MOV R4,#17 


DELAY1: 


MOV R3,#28 
DJNZ R3,$ 
DJNZ R4,DELAY1 
DJNZ R7,DELAY0 
RET 


ORG 09000H 
DB 0FEh,0FDh,0FBh,0F7H,0EFh,0DFh,0BFh,07Fh 
:
上面那段程序中,我想问下,最后LED点亮的话是怎么点亮的,第一次扫描,列数据应该是01111110,但行数据堆栈后输出应该是01111111,这怎么亮呢?而且程序中,MOV P1 ,0FFH,这条指令我也不懂,有人讲是清屏用,麻烦高手解释下。。




1楼2008-11-18 14:57回复