久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

新聞中心

EEPW首頁 > 嵌入式系統 > 設計應用 > 單片機實現通用存貯器IC卡讀寫

單片機實現通用存貯器IC卡讀寫

作者: 時間:2012-07-19 來源:網絡 收藏


3、讀寫操作軟件

當系統采用6MHz晶體振蕩器時所定義的I/O口線及器件地址如下:

SCL BIT P1.7
SDA BIT P1.6
DEVICEAD_W DATA 10100000B ;寫卡器件地址
DEVICEAD_R DATA 10100001B ;讀卡器件地址
3.1 開始條件(START_IC)
在開始條件下,當SCL為高電平時,SDA由高轉為低。程序如下:
START_IC:CLR SCL;SCL低電平時才允許SDA更改
NOP ;加入空指令延時以確保信號可靠
NOP
SETB SDA
NOP
NOP
SETB SCL
NOP
NOP
CLR SDA
NOP
NOP
CLR SCL
NOP
RET

3.2 停止條件(STOP_C)

在停止條件下,當SCL為高電平時,SDA由低轉為高。程序如下:

STOP_IC:CLR SCL
NOP
NOP
CLR SDA
NOP
NOP
SETB SCL
NOP
NOP
SETB SDA
NOP
NOP
CLR SCL
NOP
NOP
CLR SDA
RET

3.3 確認信號(ACK_IC)

在接收方應答下,每收到一字節后便將SDA電平拉低,程序如下:
ACK_IC:CLR SCL
NOP
NOP
CLR SDA
NOP
NOP
SEIB SCL
NOP
NOP
CLR SCL
NOP
SETB SDA
NOP
RET

3.4 寫一字節數據到IC卡(WR_BYTE)

在下列程序中,參數A表示源數據,R5表示字節位數。
WR_BYTE:MOV R5,#08 ;一字節8位數據
CLR SCL
NOP
NOP
WR_BYTE1:RLC A ;帶進位位左移,A.8->C
MOV SDA,C ;SCL低電平時改變SDA上的數據
NOP
SETB SCL ;拉高SCL把數據發送出去
NOP
NOP
CLR SCL
NOP
NOP
DJNZ R5,WR_BYTE1;依次發送A中的8位數據
SETB SDA
SETB SCL
JB SDA,$ ;等待IC卡確認信號
CLR SCL
NOP
RET
此子程序的主要作用是按照定義的時序,順序左移A中一字節8位數據,并通過引腳傳送出去。當一字節發完后,等待IC卡發回的確認信號。

3.5 從IC卡讀一字節(RD+BYTE)

從IC卡中讀一字節的源程序如下:
RD_BYTE:MOV R5,#08
SETB SDA ;設備SDA為讀狀態
CLR A ;清空A寄存器
RD_BTYE1:MOV C,SDA ;讀一位數據到進位位
RLC A ;左移數據到A.0
SETB SCL
NOP
NOP
CLR SCL
NOP
NOP
DJNZ R5,RD_BYTE1;依次讀出8位數據到A中
RET ;無應答信號
利用該程序可將讀出的數據存放在A中。需要注意的是:讀數據的器件不是通過確認狀態來應答的,而是隨后產生一個停止狀態。



評論


相關推薦

技術專區

關閉