微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 51单片机中WR和RD的使用

51单片机中WR和RD的使用

时间:11-18 来源:互联网 点击:
例如DAC0832,PDIUSBD12等芯片,都是并行传输的,且芯片上都的WRRD脚。在使用这种芯片时可能把WR和RD接到51的普通IO口上,用普通IO口来模拟芯片的读写时序来进行对芯片的操作(有些单片机只能用此方法如AVR单片机);也可将WR,RD接到单片机的WR和RD上,这时相当于把外部的芯片当外部存储器用。用这种方法还是很方便的,只要定义好外部芯片的地址。直接对该地址读写就可以了。

下面拿51单片机和PDIUSBD12芯片的读写来说明:

硬件接口:51的数据口(P0)和PDIUSBD12的数据口相连;两个WR,RD,ALE对应相连;PDIUSBD12的CS和P2.7口相连。

程序如下:

/*-------------------------------------------------------------------*/

# include

#include

#define D12_COMMAND xbyte[0x7f00]

#define D12_DATA xbyte[0x7f01]

void D12WriteCommand(uint8 Command)

{

D12_COMMAND=Command;

}

void D12WriteData(uint8 Data)

{

D12_DATA=Data;

}

uint8ReadData(void)

{

uint8 i;

i=D12_DATA;

return i;

}

/*-------------------------------------------------------------------------------------------*/

也可以

#include

#include

#define D12_COMMAND 0x7f00

#define D12_DATA 0x7f01

//输出数据
void D12WriteByte(uint16 Addr, uint8 Data)
{
*((uint8 xdata *) Addr) = Data;
}

//输入数据
uint8 D12ReadByte(uint16 Addr)
{
return *((uint8 xdata *) Addr);
}

uint16 D12_ReadChipID(void)
{
uint16 i,j;
D12WriteByte(D12_COMMAND, 0xFD);
i=D12ReadByte(D12_DATA);
j=D12ReadByte(D12_DATA);
i += (j<8);
return i;
}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top