当用并行方式访问外部器件,如ch375时,有两种方法:
1、按照芯片手册,用三个单片机端口模拟ch375的三个口wr、rd、cs的时序。
2、把ch375当成一个外部存储器地址来来访问,这样的话ch375就相当有外部ram地址,ch375的rd、wr分别连接到单片机的复用引脚rd、wr上,ch375的cs引脚练到单片机P2的一个引脚上。用这种方法是最方便的,程序非常简单,而且不容易出错,单片机可以外挂很多个芯片。逻辑也很简单的。
以前朋友也和我提过这种方法,但是一直没有去留意,呵呵,今天看了别人的程序才想起去看书的。
注意:用方法二的时候,ch375的访问地址不是唯一的,但是和硬件是相关的
ch375驱动方法一:IO模拟方式
/******************************************************************
- 功能描述:向CH375写入命令
- 隶属模块:CH375模块
- 函数属性:内部
- 参数说明:cmd:要写入的命令码
- 返回说明:无返回
******************************************************************/
void CH375_Write_Cmd(unsigned char cmd)
{
CS=0;
A0=1;
P0=cmd;
WR=0;
WR=1;
CS=1;
A0=1;
}
/******************************************************************
- 功能描述:向CH375写入数据
- 隶属模块:CH375模块
- 函数属性:内部
- 参数说明:dat:是要写入到CH375中的一个字节的数据
- 返回说明:无返回
******************************************************************/
void CH375_Write_Dat(unsigned char dat)
{
CS=0;
A0=0;
P0=dat;
WR=0;
WR=1;
CS=1;
A0=1;
}
ch375驱动方法二:总线读写方式
/******************************************************************
- 功能描述:向CH375写入命令
- 隶属模块:CH375模块
- 函数属性:内部
- 参数说明:cmd:要写入的命令码
- 返回说明:无返回
******************************************************************/
本帖隐藏的内容需要回复才可以浏览
void CH375_Write_Cmd(unsigned char cmd)
{
CH375_CMD_PORT=cmd;
for ( cmd = 2; cmd != 0; cmd -- ); /* 发出命令码前后应该各延时2uS */
}
/******************************************************************
- 功能描述:向CH375写入数据
- 隶属模块:CH375模块
- 函数属性:内部
- 参数说明:dat:是要写入到CH375中的一个字节的数据
- 返回说明:无返回
******************************************************************/
void CH375_Write_Dat(unsigned char dat)
{
CH375_DAT_PORT=dat;
}