例如DAC0832,PDIUSBD12等芯片,都是并行传输的,且芯片上都的WR和RD脚。在运用这种芯片时可能把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_DA
void D12WriteCommand(uint8 Command)
{
D12_COMMAND=Command;
}
void D12WriteData(uint8 Da
{
D12_DA
}
uint8ReadData(void)
{
uint8 i;
i=D12_DA
return i;
}
/*——————————————————————————————-*/
也能够
#include
#include
#define D12_COMMAND 0x7f00
#define D12_DA
//输出数据
void D12WriteByte(uint16 Addr, uint8 Da
{
*((uint8 xdata *) Addr) = Da
}
//输入数据
uint8 D12ReadByte(uint16 Addr)
{
return *((uint8 xdata *) Addr);
}
uint16 D12_ReadChipID(void)
{
uint16 i,j;
D12WriteByte(D12_COMMAND, 0xFD);
i=D12ReadByte(D12_DA
j=D12ReadByte(D12_DA
i += (j<<8);
return i;
}