各位大侠有没有单片机读写CH421的例程啊

搞了一段时间搞不出来啊

CH421就相当于一个双口的RAM,硬件上只占2个地址,有CS,A0决定 (1)总线方式,假设索引口地址和数据口地址分别为0xDE00,0xDF01,那么读写过程如下: unsigned char xdata CH421_INDEX_PORT; unsigned char xdata CH421_DATA_PORT; unsigned char dat; CH421_INDEX_PORT = dat; /* 向索引口写入索引地址 */ dat = CH421_DATA_PORT; /* 从指定的地址读取数据,地址由上条语句指定 */ (2)模拟I/O口方式:以X端为例 /* 单片机的引脚 CH421芯片的引脚 P3.2 INT# P1.0 XA0 P1.1 XCS# P1.2 XWR# P1.3 XRD# P0(8位端口) XD7-XD0 */ sbit CH421_XA0 = P1^0; sbit CH421_XCS = P1^1; sbit CH421_XWR = P1^2; sbit CH421_XRD = P1^3;

void CH421_PORT_INIT( ) /* 由于使用通用I/O模块并口读写时序,所以进行初始化 */ { CH421_XCS = 1; CH421_XWR = 1; CH421_XRD = 1; CH421_XA0 = 1; P0 = 0xFF; /* 并口输入 */ }

void xWriteCH421Index( UINT8 mIndex ) /* 向CH421写索引地址 */ { P0 = mIndex; /* 向CH421的并口输出数据 */ CH421_XA0 = 0; CH421_XCS = 0; CH421_XWR = 0; /* 输出有效写控制信号, 写CH421芯片的索引端口 */ CH421_XCS = 0; /* 该操作无意义,仅作延时,CH421要求读写脉冲宽度大于70nS */ CH421_XWR = 1; /* 输出无效的控制信号, 完成操作CH421芯片 */ CH421_XCS = 1; CH421_XA0 = 1; P0 = 0xFF; /* 禁止数据输出 */ }

void xWriteCH421Data( UINT8 mData ) /* 向CH421写数据 */ { P0 = mData; /* 向CH421的并口输出数据 */ CH421_XA0 = 1; CH421_XCS = 0; CH421_XWR = 0; /* 输出有效写控制信号, 写CH421芯片的数据端口 */ CH421_XCS = 0; /* 该操作无意义,仅作延时,CH421要求读写脉冲宽度大于70nS */ CH421_XWR = 1; /* 输出无效的控制信号, 完成操作CH421芯片 */ CH421_XCS = 1; P0 = 0xFF; /* 禁止数据输出 */ }

UINT8 xReadCH421Data( void ) /* 从CH421读数据 */ { UINT8 mData;

P0 = 0xFF; /* 输入 */ CH421_XA0 = 1; CH421_XCS = 0; CH421_XRD = 0; /* 输出有效写控制信号, 读CH421芯片的数据端口 */ CH421_XCS = 0; /* 该操作无意义,仅作延时,CH421要求读写脉冲宽度大于70nS */ mData = P0; /* 从CH421的并口输入数据 */ CH421_XRD = 1; /* 输出无效的控制信号, 完成操作CH421芯片 */ CH421_XCS = 1; return( mData ); }


有没有用cpld控制的 啊,谢谢


很抱歉,我们这里好象没有。


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