请问:
CH372FRM.C 文件中好像没有 诸如 =P0^0 这样的语句?
自定义的连线在程序中无法体现。
如何解决? 谢谢!
请问:
CH372FRM.C 文件中好像没有 诸如 =P0^0 这样的语句?
自定义的连线在程序中无法体现。
如何解决? 谢谢!
(1)CH372FRM.C中,是通过总线方式操作CH372,程序中定义了2个地址:CH375_CMD_PORT和CH375_DAT_PORT,当然不需要定义CS、WR、RD等信号线 (2)您想自定义连线的话,也很简单,以CS为例:sbit CH372_CS = P0^0;
请问,非总线状态下,sbit CH372_CS = P0^0; 定以后,是不是要改动程序的很多部分,比如CH372FRM.C里 的函数?
需要修改的是接口函数。具体的做法你可以去参考CH375LIB\MCS51\FILELIBC\EXAM7
谢谢,请问有现成的可以自定义连线的CH372配套的框架吗?
没有,模拟I/O方式下,CH372的接口函数与CH375完全一样,可以直接参考3楼提供的例程
参考程序: void CH375_WR_CMD_PORT( unsigned char cmd ) { /* 向CH375的命令端口写入命令,周期不小于4uS,如果单片机较快则延时 */ delay2us(); 强制片选 CH375_D0_D7 = cmd; CH375_A0 = 1; 选择CH375的命令口 // CH375_D0_D7_DIR = output; 对于标准双向I/O,请在此设置为输出方向 CH375_RD = 1; 如果I/O默认电平是高电平,那么这是可选操作 CH375_CS = 0; CH375_WR = 0; // CH375_CS = 0; 对于高速单片机,该指令用于延时,以便向CH375_WR产生宽度至少为80nS的低电平脉冲 CH375_WR = 1; CH375_CS = 1; CH375_A0 = 0; // CH375_D0_D7_DIR = input; 对于标准双向I/O,请在此设置为输入方向 CH375_D0_D7 = 0xFF; 对于准双向I/O,请在此设置输出全高电平 delay2us(); }
void CH375_WR_DAT_PORT( unsigned char dat ) { /* 向CH375的数据端口写入数据,周期不小于1.5uS,如果单片机较快则延时 */
CH375_D0_D7 = dat; // CH375_D0_D7_DIR = output; 对于标准双向I/O,请在此设置为输出方向 CH375_CS = 0; CH375_WR = 0; // CH375_CS = 0; 对于高速单片机,该指令用于延时,以便向CH375_WR产生宽度至少为80nS的低电平脉冲 CH375_WR = 1; CH375_CS = 1; // CH375_D0_D7_DIR = input; 对于标准双向I/O,请在此设置为输入方向 CH375_D0_D7 = 0xFF; 对于准双向I/O,请在此设置输出全高电平 /******************** */ // delay1us(); /* 因为MCS51单片机较慢所以实际上无需延时 */ }
unsigned char CH375_RD_DAT_PORT( void ) { /* 从CH375的数据端口读出数据,周期不小于1.5uS,如果单片机较快则延时 */ // delay1us(); /* 因为MCS51单片机较慢所以实际上无需延时 */ /* ******************** 注释中是用普通I/O引脚模拟8位并口的时序*/ // CH375_D0_D7_DIR = input; 对于标准双向I/O,请在此设置为输入方向 CH375_D0_D7 = 0xFF; 对于准双向I/O,请在此设置输出全高电平,便于输入 CH375_CS = 0; CH375_RD = 0; // CH375_CS = 0; 对于高速单片机,该指令用于延时,以便向CH375_RD产生宽度至少为80nS的低电平脉冲 unsigned char dat = CH375_D0_D7; CH375_RD = 1; CH375_CS = 1; CH375_D0_D7 = 0xFF; 对于准双向I/O,请在此设置输出全高电平 return( dat ); /******************** */ }
那么在物理连接CH372时,CS、WR、RD、INT是不是说不用和单片机相连,可以悬空呢。
CS、WR、RD、INT,A0 要和单片机连接,要不怎么操作372啊 可以采用总线方式,也可以采用模拟并口方式.
控制线尽量不要和数据线在同一个IO上,比如CS在P0^0上口而PO有做为数据线,这样的话,需要对数据进行锁存要多加一个芯片.如果你使用的是CH372B的话,INT引脚可以不连接,查询命令端口最高为为1表示有中断,但其余的务必连接.