單片機(jī)實(shí)現(xiàn)通用存貯器IC卡讀寫
3.6 字節(jié)寫入模式寫數(shù)據(jù)(WRITE_BYTE)
下列程序中的參數(shù)為:R6= =目的地址,A= =數(shù)據(jù);數(shù)據(jù)如下:
WRITE_BYTE:PUSH ACC ;保存A中的數(shù)據(jù)
LCALL START_IC ;發(fā)開始信號(hào)
MOV A,#DEVICEAD_W;寫入器件地址
LCAL WR_BYTE
MOV A,R6 ;寫入字節(jié)地址
LCALL WR_BYTE
POP ACC ;恢復(fù)A中數(shù)據(jù)
LCALL WR_BYTE ;寫入數(shù)據(jù)
LCALL STOP_IC
RET
在收到8位數(shù)據(jù)后,EEPROM將通過SDA來回送確認(rèn)信號(hào),而傳送設(shè)備必須用停止?fàn)顟B(tài)來終止寫操作。這時(shí),EEPROM將進(jìn)入一個(gè)內(nèi)時(shí)固定存貯器的寫入周期并且禁止在此其間的所有輸入,直到寫操作完成后才對(duì)通訊應(yīng)答。其寫入周期可自定義,最大為10ms。
3.7 頁(yè)面寫入模式寫數(shù)據(jù)(WRITE_PAGE)
以下程序中的參數(shù)為P0= =源指針,R6= =目的地址,R7= =頁(yè)面長(zhǎng)度。
WRITE_PAGE:LCALL START_IC
MOV A,#DEVICEAD_W
LCALL WR_BYTE
MOV A,R6
LCALL WR_BYTE
WRITE_PAGE1:MOV A,@R0
LCALL WR_BYTE
INC R0
DJNZ R7,WRITE_PAGE1
LCALL STOP_IC
RET
AT24C01/02可利用上述程序進(jìn)行8字節(jié)的頁(yè)面寫入,它的操作類似于寫字節(jié)。不同的是,它無需在第一個(gè)字節(jié)送出后才以停止?fàn)顟B(tài),不同在收到確認(rèn)信號(hào)后,再傳送7個(gè)字節(jié)的數(shù)據(jù)碼,最后以停止?fàn)顟B(tài)來終止頁(yè)面寫序列。AT24C04/08/16的頁(yè)面為16字節(jié)。
3.8 立即地址讀模式(READ_BYTEC)
立即地址讀模式讀一字節(jié)數(shù)據(jù)的程序如下:READ_BYTEC:LCALL START_IC
MOV A,#DEVICEAD_R
LCALL WR_BYTE
LCALL RD_BYTE ;讀出默認(rèn)地址數(shù)據(jù)
LCALL STOP_IC ;發(fā)停止?fàn)顟B(tài)應(yīng)答
RET
該程序執(zhí)行后,其內(nèi)部數(shù)據(jù)字地址指針將保持在上次讀寫操作訪問的最后一個(gè)地址,并按1遞增且在芯片上電期間一直有效。只有當(dāng)?shù)刂窞轫?yè)面的最末時(shí),下次訪問才滾動(dòng)到該頁(yè)面的首地址。
3.9 隨機(jī)地址讀模式(READ_BYTER)
在下列程序中,R6= =源地址,程序如下:
READ_BYTER:LCALL START_IC
MOV A,#DEVICEAD_W ;執(zhí)行空字節(jié)寫序列
LCALL WR_BYTE ;載入數(shù)據(jù)地址
MOV A,R6
LCALL WR_BYTE
LCALL START_IC
MOV A,#DEVICEAD_R ;立即地址讀取
LCALL WR_BYTE
LCALL DR_BYTE
LCALL STOP_IC
RET
讀操作模式需要一個(gè)字節(jié)寫序列載入數(shù)據(jù)地址。在器件和數(shù)據(jù)地址寫入并得到確認(rèn)后,將再產(chǎn)生另一個(gè)開始條件,并送出讀操作器件的地址,同時(shí)激發(fā)一個(gè)立即地址讀取。
3.10 順序地址讀?。≧EAD_BYTES)
在下列程序中:R0= =目的指針;R7= =數(shù)據(jù)長(zhǎng)度,程序如下:
READ+BYTES:LCALL START_IC
MOV A,#DEVICEAD_R
LCALL WR_BYTE
READ_BYTES2:LCALL RD_BYTE
MOV @R0,A ;存放數(shù)據(jù)到目的地址
INC R0
DJNZ R7,READ_BYTES1
LCALL STOP_IC ;讀寫指定長(zhǎng)度后停止
RET
READ_BYTES1:LCALL ACK_IC ;收到數(shù)據(jù)后發(fā)確認(rèn)信號(hào)SJMP READ_BYTES2
其中順序讀取由立即尋址讀或隨機(jī)地址讀激發(fā),并在收到一字節(jié)數(shù)據(jù)后發(fā)確認(rèn)信號(hào)應(yīng)答。當(dāng)讀數(shù)器件以停止?fàn)顟B(tài)應(yīng)答時(shí),操作被終止。
4、總結(jié)
該系統(tǒng)結(jié)構(gòu)簡(jiǎn)單,在實(shí)際運(yùn)行時(shí)具有很高的可靠性,同時(shí)具有一定的可擴(kuò)展性,并可通過單片機(jī)的串行口經(jīng)電平轉(zhuǎn)換后直接與計(jì)算機(jī)相連,以進(jìn)行數(shù)據(jù)通訊。另外,也可根據(jù)需要連接到其它引腳或卡座觸點(diǎn),如果適當(dāng)改進(jìn)電路和程序,還可讀寫加密卡和CPU卡等。
評(píng)論