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