打印

请指教8255的使用

[复制链接]
1937|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lhblast|  楼主 | 2010-9-3 11:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位:8255a的D0-D7连接P0口,cs接P2.5,  A0接P2.4,   A1接P2.7.    /rd  接单片机的/rd.    /wr  接单片机的/wr.

2.7  2.6  2.5  2.4  2.3  2.2  2.1  2.0  0.7  0.6  0.5  0.4  0.3  0.2  0.1   0.0
  A1        cs    A0
  0     0    0     0     0     0     0     0     0     0     0     0    0    0     0      0     0x0000 a8255
  0     0    0     1     0     0     0     0     0     0     0     0    0    0     0      0     0x1000 b8255
  1     0    0     0     0     0     0     0     0     0     0     0    0    0     0      0     0x8000 c8255
  1     0    0     1     0     0     0     0     0     0     0     0    0    0     0      0     0x9000 contro

#define  a8255  XBYTE[0x0000]
#define  b8255  XBYTE[0x1000]
#define  c8255  XBYTE[0x8000]
#define  contro  XBYTE[0x9000]
初始化:
contro  =0x00d0;//A口是输入,工作在方式2。

读A口:
buff  =  a8255;



以上的程序有错误吗?为什么从A口读出得值不对阿?请指教。读的时候还需要控制/rd  和/wr两个口线吗?
以下读法也不对。
rd=0;
wr=1;
buff  =a8255;

相关帖子

沙发
uzb9401| | 2010-9-3 11:57 | 只看该作者
读写的时候不用管RD WR,

排除错误具体的还要看你的全部代码

使用特权

评论回复
板凳
lhblast|  楼主 | 2010-9-3 12:06 | 只看该作者
读取A口的数据,上面的代码有错误吗?

使用特权

评论回复
地板
lhblast|  楼主 | 2010-9-3 12:51 | 只看该作者
还请多多指教

使用特权

评论回复
5
uzb9401| | 2010-9-4 12:17 | 只看该作者
这个错误很好解决
挂仿真器,单步或者断点,找到错误

使用特权

评论回复
6
kusheng176| | 2010-9-4 14:15 | 只看该作者
读PA口的数据,应该是 SBUF=PA;吧?你的buff是什么?

使用特权

评论回复
7
linjing| | 2010-9-4 15:50 | 只看该作者
刚才看了下手册,没发现程序问题,建议这样试下:

首先确保总线上只有8255一个器件,别的RAM,ROM什么的先断开(看你A1接在P27上挺奇怪的:)

8255a工作方式先设成方式0或者方式1,看看结果是否正确,方式2相对来说有点复杂。

试试看先,我也好久没用8255a了,呵呵

使用特权

评论回复
8
lhblast|  楼主 | 2010-9-6 15:38 | 只看该作者
我现在也是什么也没有接。而且我也试了用在方式0状态下,可是还是不对。不知道单片机和8255之间的连接需要加锁存器吗?

使用特权

评论回复
9
linjing| | 2010-9-6 22:47 | 只看该作者
怎么个错法?输入端口不能悬空啊

另外,如果输入不好用,就换成输出状态试试

你可别用了坏芯片啊,8255不知道停产了没,现在市场上有新品吗

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

16

帖子

0

粉丝