在程序中这两句怎么也不能理解. 请各位指教. unsigned char volatile xdata CH375_CMD_PORT _at_ 0xBDF1; /* CH375命令端口的I/O地址 */ unsigned char volatile xdata CH375_DAT_PORT _at_ 0xBCF0; /* CH375数据端口的I/O地址 */
是指单片机与375相连,它的数据端口地址和命令端口地址 当WR#为高电平并且CS#和RD#及A0 都为低电平时,CH375 中的数据通过D7~D0输出;当RD#为 高电平并且CS#和WR#及A0 都为低电平时,D7~D0上的数据被写入CH375 芯片中;当RD#为高电平并 且CS#和WR#都为低电平而A0 为高电平时,D7~D0 上的数据被作为命令码写入CH375 芯片中,所以端口地址与你的硬件连接是相对应的,是通过你的硬件连接计算得出的。
这个地址是根据楼上的说的进行定义的 数据端口时A0为0,CS为0,命令端口时A0为1,CS为0.
我的是单片机直接和CH375连接。 P0口接数据口。 WR接MCU的WR,RD接MCU的RD, A0接P2.0口。 不知道这样设计可行? MCU用的是STC89LE52AD 一直都没有调通, 请高手指教这个端口的IO地址是怎么写的。
搞了很久了,搞得没有一点信心了。
可以的,如果P2.0接A0,P2.1接CS#时,数据端口地址是BCF0,命令端口地址是BDF1
拨打电话:52638370技术支持
好好看一下375的资料,上面写的很详细,看懂了也就觉得不难 要有信心!
如果总线上没有其他器件,如RAM,那么这种硬件连接是可以的,此时CH375的地址有多种组合,数据端口地址(BCF0)和命令端口地址(BDF1)是其中之一。否则要考虑总线地址冲突
总线上没有其他器件。 我的CS是直接接地的。 谢谢大家。
试过了,输出是F9 但是,写入命令是正确的,读数据就不正确了。 不管 写入的是多少,读出的总是F9.
在读写数据时,用示波器测量测不出变化的信号。
做一下测试命令,可能还是你的硬件有问题,检查一下有没有管脚虚焊
拿这小段程序去测试一下你的CH375是否正常工作了: #ifdef TEST_CH375_PORT/* 这一段程序用来测试CH375是否正常工作*/ unsigned char c; CH375_WR_CMD_PORT( CMD_CHECK_EXIST ); /* 测试工作状态 */ CH375_WR_DAT_PORT( 0x55 ); /* 测试数据 */ c = CH375_RD_DAT_PORT( ); /* 返回数据应该是测试数据取反 */ if ( c != 0xaa ) { /* CH375出错 */ for ( i = 100; i != 0; i -- ) { /* 强制数据同步 */ CH375_WR_CMD_PORT( CMD_RESET_ALL ); /* CH375执行硬件复位 */ c = CH375_RD_DAT_PORT( ); } mDelaymS( 50 ); /* 延时至少30mS */ } #endif
硬件的可能性大些,但是,我检查了好几遍了。 因为我是用引脚引到单片机上的。 原来做那块板子设计有问题。
早起的鸟有虫吃 我一直就是用这个很简单的小程序测的。 结果就是这样。 现在用示波器测量各引脚起码是跳动的了。