8255D口连接51单片机P0口,8255A口连接数码管。

我一边要将51单片机P0口的数据写入8255D口,又要8255的数据D口的数据输出到A口再输出给数码管,那到底8255是工作于输入状态还是输出状态啊?8255初始化程序怎么写?

8255 的数据接口 DB,并不区分输入、输出方式。
这个口是和单片机连接的,需要双向传输信息。

8255 的外部接口 PA、PB、PC,它们才有输入、输出方式的问题。
究竟是输入,还是输出,这要看你在 PA、PB、PC 分别连接了什么设备。追问

如下程序是否可行?第一步先初始化8255,接着将FF给B口。
SETB P2.0;
CLR P2.1; 选中B口
MOV P0,#0ffh;
CLR P3.6;
SETB P3.6;
LCALL DELAY ;调用延时子程序
LJMp $
初始化程序你已经看过了。
我测试的结果是B口的所有管脚不为0也不为1,预期结果应该B口管脚全为1的。

追答

上次,看过的初始化,是不是,都设置成输入了?
现在,应该先设置 PB 为输出方式。

----
输出高电平,一般都需要外接上拉电阻。
否则,测试的时候,往往就是非0非1。

你再试试输出低电平,看看输出,是不是低电平。

追问

你能否用我的程序修改一下,发一个能够令B口的管脚为1或者为0的程序?我不论怎么试B口输出的都是非0非1,我有用上拉电阻。

追答

先看看这个:

http://hi.baidu.com/do_sermon/item/f0829d71288bdd306e29f6b3

有空,再编写8255的,

追问

您好,我想知道7F00H、7F01H、7F02H、7F03H这些8255的端口地址是如何得来的?怎么算?

如果硬件连接像这样端口地址又是多少?怎么算?

追答

上图中,没有用到 P2。
那么,16 位的地址,高八位就随便了:
A15 ~ A8
XXXX XXXX

只是把 /CS,连接到了 A7,它应该为0;
A1A0 用来选择 PA、PB...控制,共有四种组合。

那么,低四位:
A7 A6~A2 A1 A0
0 XXX XX 0 0 PA
0 XXX XX 0 1 PB
0 XXX XX 1 0 PC
0 XXX XX 1 1 控制

把写成X的,都看做是1,那么:
FF7CH:PA
FF7DH:PB
FF7EH:PC
FF7FH:控制

就是这样。

温馨提示:答案为网友推荐,仅供参考
相似回答