MCS-51單片機(jī)與二線制串行E2PROM的接口方法
二線制串行E2PROM是一種非易失存儲器,以其體積小、功耗低、操作靈活、性價比高、存儲數(shù)據(jù)可靠等諸多優(yōu)點(diǎn),是單片機(jī)應(yīng)用系統(tǒng)中非易失存儲器的理想選擇。但二線制串行E2PROM的操作采用I2C總線協(xié)議,而MCS-51系列單片機(jī)沒有I2C接口,我們在研制“GLM-500測濕儀”時,利用MCS-51單片機(jī)的兩條I/O線,通過軟件產(chǎn)生I2C總線所要求的操作時序,可方便地實(shí)現(xiàn)MCS-51對二線制串行E2PROM的讀寫操作。
本文引用地址:http://m.butianyuan.cn/article/172168.htm1 二線制串行E2PROM的引腳功能及基本操作時序
圖1是二線制串行E2PROM 24C01/02/04/08/16的引腳排列圖。
僅SCL和SDA端為基本的總線操作端;SCL是串行時鐘輸入端;SDA是串行數(shù)據(jù)輸入/輸出端;漏極開路輸出需接上拉電阻到VDD;WP是寫保護(hù)端,接高電平時,只能讀出,禁止寫入;A0、A1、A2是片選端,對于24C01/02/04/08/16,內(nèi)部無連接,可接至VSS。
I2C總線協(xié)議運(yùn)用主/從雙向通訊。發(fā)送數(shù)據(jù)到總線上的器件定義為發(fā)送器,接收數(shù)據(jù)的器件定義為接收器。主器件和從器件都可工作于接收器和發(fā)送器狀態(tài),但總線必須由主器件(通常為微處理器)控制,主器件產(chǎn)生串行時鐘(SCL),控制總線上數(shù)據(jù)傳送的方向,并產(chǎn)生開始和停止信號。
總線從主器件產(chǎn)生開始條件后到產(chǎn)生停止條件期間有效,微處理器對串行E2PROM的讀寫操作在開始位控制下開始,在停止位控制下結(jié)束。
當(dāng)SCL和SDA均為高電平時,定義為總線空閑狀態(tài),數(shù)據(jù)的傳送必須在總線空閑時才能開始。當(dāng)SCL為高電平時,SDA由高到低的變化為傳送數(shù)據(jù)的開始位;而當(dāng)SCL為高電平時,SDA由低到高的變化為停止位。在開始條件以后,SDA上數(shù)據(jù)的改變必須在SCL為低電平期間進(jìn)行,在SCL為高電平期間, SDA必須保持穩(wěn)定。每傳送一位數(shù)據(jù),主器件必須發(fā)出一個時鐘脈沖。開始與停止條件如圖2所示。
一次讀操作讀出的字節(jié)數(shù)由主器件決定,沒有限制,多到一次可以讀出整個存儲器的內(nèi)容;而對于寫操作,一次最多可以寫入一個頁面的字節(jié)數(shù),如果超過了節(jié)),則前面接收到的數(shù)據(jù)將被覆蓋。
數(shù)據(jù)傳送過程中,每接收一個數(shù)據(jù),接收器必須產(chǎn)生一個低電平的確認(rèn)信號,主器件必須產(chǎn)生一個與此確認(rèn)位相應(yīng)的時鐘脈沖。
開始位以后,主器件需送出8位的控制字節(jié),其格式請參考有關(guān)的文獻(xiàn)。
MCS-51系列單片機(jī)由于沒有I2C總線接口,可利用兩條I/O線P1.0和P1.1分別連至串行E2PROM的SCL和SDA端,通過軟件產(chǎn)生E2PROM所要求的讀寫時序,MCS-51系列單片機(jī)與24C04的硬件連接如圖3所示。
3 讀寫程序
MCS-51系列單片機(jī)對二線制串行E2PROM讀寫時,必須產(chǎn)生開始位,發(fā)送控制字節(jié),控制數(shù)據(jù)傳送,產(chǎn)生停止位。按照圖3的連接,MCS-51系列單片機(jī)對24C04的讀寫程序如下:
①字節(jié)讀子程序
入口條件:R0中存放塊內(nèi)寫入單元的地址;R1中存放待寫入的數(shù)據(jù);R2中存放控制字節(jié)。
BYWR:SETBP1.0 ?。划a(chǎn)生開始位
CLRP1.1
CLRP1.0
MOV A,R2 ??;發(fā)送控制字節(jié)
LCALLSBWR
SETBP1.1
SETBP1.0
NOP
JBP1.1,BYWR
??;判有無確認(rèn)信號,接收器沒確認(rèn)重新開始
CLRP1.0
MOV A,R0 ?。话l(fā)送塊內(nèi)寫入字節(jié)地址
LCALLSBWR
SETBP1.1
SETBP1.0
JBP1.1,$ ;判確認(rèn)信號
CLRP1.0
MOV A,R1 ??;發(fā)送寫入數(shù)據(jù)
LCALLSBWR
SETBP1.1
SETBP1.0
JBP1.1,$ ??;判確認(rèn)信號
CLRP1.0
CLRP1.1 ??;產(chǎn)生停止位
SETBP1.0
SETBP1.1
CLRP1.0
RET
②字節(jié)寫子程序
入口條件:R0中存放塊內(nèi)讀出字節(jié)的地址;R2中存放控制字節(jié),其最低位為0。
返回結(jié)果:讀出的數(shù)據(jù)存于R1中。
BYRD:SETBP1.0 ??;產(chǎn)生開始位
CLR P1.1
CLR P1.0
MOV A,R2 ;發(fā)送控制字節(jié)
LCALLSBWR
SETBP1.1
SETBP1.0
NOP
JBP1.1,BYRD
??;判確認(rèn)信號,接收器未確認(rèn)重新開始
CLR P1.0
MOV A,R0 ;發(fā)送塊內(nèi)讀出字節(jié)地址
LCALLSBWR
SETBP1.1
SETBP1.0
nbs
51單片機(jī)相關(guān)文章:51單片機(jī)教程
評論