汇编P1口输出

[复制链接]
查看11 | 回复1 | 2008-11-18 14:03:34 | 显示全部楼层 |阅读模式
先是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

:

回复

使用道具 举报

千问 | 2008-11-18 14:03:34 | 显示全部楼层
当然是送什么数据到P1口,P1口就输出什么了。
先送的FFh是用来清屏的,显示完第一行数据后如果不清屏就直接列选到第二行,那么第一行的数据不就显示到第二行了吗?
程序的意思是:先选中第一列,送第一列的数据(MOV P1,a),然后延时,然后关掉显示(MOV P1,0FFH ),接着选中第二列,送第二列数据。。。。。。。
不明白再问我。...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行