kobebasket
驱动牛犊
驱动牛犊
  • 注册日期2004-04-14
  • 最后登录2005-03-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1743回复:11

请问对8255的三个IO口操作,可以写进去,在读回来吗?

楼主#
更多 发布于:2004-07-14 11:06
在端口是输出的状态下,可以把数先写进寄存器,在回读回来吗?

最新喜欢:

HuYuguangHuYugu...
winter
驱动小牛
驱动小牛
  • 注册日期2001-03-23
  • 最后登录2013-08-15
  • 粉丝4
  • 关注0
  • 积分5分
  • 威望40点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-07-15 14:27
可以读回来,但是我的感觉读回来的是端口实际的电平,比如你的某一位被连接到VCC上,那读回来的就是1
请原谅我的无知与直率
rickdu
驱动牛犊
驱动牛犊
  • 注册日期2004-07-15
  • 最后登录2004-11-16
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-07-16 09:17
8255的io端口在设置为输出状态的时候如果用debug命令写入是无效的,它不能将数据锁存。这时写入后读出的肯定是它的实际电平值。
希望能多学习
winter
驱动小牛
驱动小牛
  • 注册日期2001-03-23
  • 最后登录2013-08-15
  • 粉丝4
  • 关注0
  • 积分5分
  • 威望40点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-07-16 10:45
to rickdu
我觉得8255输出是锁存了的,要不然它怎么能够保持固定的状态呢。
8255端口设置为输出状态时再对相应的端口进行写入操作,它将锁存数据,并将数据数值体现到端口上,但是当它的驱动能力不可以改变端口状态时,它会将实际的电平值返回到端口寄存器上。
请原谅我的无知与直率
kobebasket
驱动牛犊
驱动牛犊
  • 注册日期2004-04-14
  • 最后登录2005-03-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-07-16 14:40
二位,分我已经给了,请注意查收!
我现在得出的结论:
8255的端口在输出的状态下,写入数据至寄存器,端口各位上就是写入数据值,此时可以进行读操作,读回来的是寄存器中的值!
因此我想要想从总线上读数据的话,一定是先要设置端口的状态为输入,然后在读,
我现在的问题是,按照这种想法,确从总线上把数据读不上来啊,这是怎么回事?难道从寄存器中读数据和从总线上读数据的代码不一样么?我是用单片机+8255进行读写操作的!
请高手不吝指点!!!!
kobebasket
驱动牛犊
驱动牛犊
  • 注册日期2004-04-14
  • 最后登录2005-03-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-07-16 14:44
我顶!
kobebasket
驱动牛犊
驱动牛犊
  • 注册日期2004-04-14
  • 最后登录2005-03-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-07-16 14:45
再顶!
winter
驱动小牛
驱动小牛
  • 注册日期2001-03-23
  • 最后登录2013-08-15
  • 粉丝4
  • 关注0
  • 积分5分
  • 威望40点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-07-16 14:49
你是将8255设置成总线方式了吗?使用8255作为单片机的总线扩展?
这种方式我没有用过。但是应该设置成方式2就可以了吧
请原谅我的无知与直率
kobebasket
驱动牛犊
驱动牛犊
  • 注册日期2004-04-14
  • 最后登录2005-03-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-07-16 14:59
如何将8255设置成总线方式啊?
我用的是方式0,需要输入的时候,通过改变8255的控制口的方式字来改变端口的状态!
winter
驱动小牛
驱动小牛
  • 注册日期2001-03-23
  • 最后登录2013-08-15
  • 粉丝4
  • 关注0
  • 积分5分
  • 威望40点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2004-07-16 16:10
总线方式就是将A口设置成双向的,也就是方式2
哦,你那样做也是可以得,你加延时试试吧
请原谅我的无知与直率
chengjunjie
驱动小牛
驱动小牛
  • 注册日期2004-06-05
  • 最后登录2012-06-05
  • 粉丝0
  • 关注0
  • 积分41分
  • 威望44点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2004-07-17 00:08
不知道你所说的总线是单片机的总线还是另外的总线?
 8255只有A口在方式2时,是双向I/O,即总线方式.其他方式下,A/B/C只能做I/O口,要么输入要么输出不能当总线使用,不知你的8255工作在什么方式?
kobebasket
驱动牛犊
驱动牛犊
  • 注册日期2004-04-14
  • 最后登录2005-03-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2004-07-17 09:12
是外部总线,
我用的是方式0,当单片机需要向外部总线输出数据时,8255端口的状态要设置为输出状态,写数据至端口,注意此时仍然可以读数据,但读上来的是寄存器中的值而并非总线上的值,因为端口处于输出状态,相当于和总线隔离;当外部总线需要向单片机输入数据时,8255的状态要设置为输入状态,从外部总线上读入数据至单片机中!
这个问题我已经弄明白了,写了一段测试程序测试过了,谢谢各位大侠的指点!
游客

返回顶部