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