先是movP1,0ffh,然后中间隔了段程序后又输入MOVP1, 07Fh,问下,那现在P1口应该是输出什么呢,完整程序如下:是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
:
|