[求助]命令端口和数据端口的I/O地址怎么确定?

请问提供的例子程序中,MCU的这两句:

unsigned char volatile xdata CH375_CMD_PORT _at_ 0xBDF1; /* CH375命令端口的I/O地址 */ unsigned char volatile xdata CH375_DAT_PORT _at_ 0xBCF0; /* CH375数据端口的I/O地址 */

命令端口的I/O地址和数据端口的I/O地址 是怎么确定的?因为我不太了解51,用其他MCU的,其他MCU都用例子中的数值就可以了吗?另外就是在写命令和读写数据的时候,为什么都要将内容在上面的两个地址写一次,作用是什么?

单片机操作375的时候需要通过这两个地址来进行。这两个地址其实决定于CS和A0这两跟线,也就是在片选线CS为0时选中CH375,在A0=1时,作为操作的命令端口;在A0=0时,作为操作的数据端口。 用其他MCU的话,只要CS和A0线的连接正确,用这两个数值就可以。当然可以根据自己的连线来决定新的命令端口的I/O地址和数据端口的I/O地址。


引用含笑的回复:

按测试电路的接法,P2.1(A9)接CH372片选引脚,P2.0(A8)接CH375的A0脚,因此: 51地址引脚: A15 A14 A13 A12 A11 A10 A09 A08 A07 A06 A05 A04 A03 A02 A01 A00 命令端口可以是: x x x x x x 0 1 x x x x x x x x (Bin) 数据端口: x x x x x x 0 0 x x x x x x x x (Bin) 满足上述组合的端口地址有N种之多,但是命令端口只能是 X1XX,X5XX,X9XX,XDXX (Hex) 数据端口只能是:X0XX,X4XX,X8XX,XCXX (Hex)。

片选决定地址!

你其它地方要使用A00(?)—DFFF地址空间,则应想法使CH375的端口地址处于这些地址之外,例如可以使用译码芯片138,A、B、C、E3分别接51的P2.7、P2.6、P2.5、P2.4,138的Y7接CH375的CS脚;51的P2.3接CH375的A0脚。这样,CH375的命令口地址就是:1111 1xxx xxxx xxxx (Bin),数据口地址就是:1111 0xxx xxxx xxxx (Bin),F800(命令)、F700(数据)就满足 ↓简单引用


o ~!讲得非常的清楚啊~知道了!谢谢两位~共同进步啊


只有登录才能回复,可以选择微信账号登录