各位: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; |