新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 51單片機中WR和RD的使用

51單片機中WR和RD的使用

作者: 時間:2016-11-18 來源:網(wǎng)絡(luò) 收藏
例如DAC0832,PDIUSBD12等芯片,都是并行傳輸?shù)?,且芯片上都?strong>WR和RD腳。在使用這種芯片時可能把WR和RD接到51的普通IO口上,用普通IO口來模擬芯片的讀寫時序來進行對芯片的操作(有些單片機只能用此方法如AVR單片機);也可將WR,RD接到單片機的WR和RD上,這時相當(dāng)于把外部的芯片當(dāng)外部存儲器用。用這種方法還是很方便的,只要定義好外部芯片的地址。直接對該地址讀寫就可以了。

下面拿51單片機和PDIUSBD12芯片的讀寫來說明:

本文引用地址:http://butianyuan.cn/article/201611/315596.htm

硬件接口:51的數(shù)據(jù)口(P0)和PDIUSBD12的數(shù)據(jù)口相連;兩個WR,RD,ALE對應(yīng)相連;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

//輸出數(shù)據(jù)
void D12WriteByte(uint16 Addr, uint8 Data)
{
*((uint8 xdata *) Addr) = Data;
}

//輸入數(shù)據(jù)
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;
}



關(guān)鍵詞: 51單片機WRR

評論


技術(shù)專區(qū)

關(guān)閉