新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 單片機(jī)IC卡讀寫器設(shè)計(jì)

單片機(jī)IC卡讀寫器設(shè)計(jì)

作者: 時(shí)間:2013-02-21 來(lái)源:網(wǎng)絡(luò) 收藏

3.2 停止條件(STOP_C)

在停止條件下,當(dāng)SCL為高電平時(shí),SDA由低轉(zhuǎn)為高。程序如下:

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 確認(rèn)信號(hào)(ACK_IC)

在接收方應(yīng)答下,每收到一字節(jié)后便將SDA電平拉低,程序如下:

ACK_IC:CLR SCL

NOP

NOP

CLR SDA

NOP

NOP

SEIB SCL

NOP

NOP

CLR SCL

NOP

SETB SDA

NOP

RET

3.4 寫一字節(jié)數(shù)據(jù)到IC卡(WR_BYTE)

在下列程序中,參數(shù)A表示源數(shù)據(jù),R5表示字節(jié)位數(shù)。

WR_BYTE:MOV R5,#08 ;一字節(jié)8位數(shù)據(jù)

CLR SCL

NOP

NOP

WR_BYTE1:RLC A ;帶進(jìn)位位左移,A.8->C

MOV SDA,C ;SCL低電平時(shí)改變SDA上的數(shù)據(jù)

NOP

SETB SCL ;拉高SCL把數(shù)據(jù)發(fā)送出去

NOP

NOP

CLR SCL

NOP

NOP

DJNZ R5,WR_BYTE1;依次發(fā)送A中的8位數(shù)據(jù)

SETB SDA

SETB SCL

JB SDA,$ ;等待IC卡確認(rèn)信號(hào)

CLR SCL

NOP

RET

此子程序的主要作用是按照定義的時(shí)序,順序左移A中一字節(jié)8位數(shù)據(jù),并通過引腳傳送出去。當(dāng)一字節(jié)發(fā)完后,等待IC卡發(fā)回的確認(rèn)信號(hào)。

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

從IC卡中讀一字節(jié)的源程序如下:

RD_BYTE:MOV R5,#08

SETB SDA ;設(shè)備SDA為讀狀態(tài)

CLR A ;清空A寄存器

RD_BTYE1:MOV C,SDA ;讀一位數(shù)據(jù)到進(jìn)位位

RLC A ;左移數(shù)據(jù)到A.0

SETB SCL

NOP

NOP

CLR SCL

NOP

NOP

DJNZ R5,RD_BYTE1;依次讀出8位數(shù)據(jù)到A中

RET ;無(wú)應(yīng)答信號(hào)

利用該程序可將讀出的數(shù)據(jù)存放在A中。需要注意的是:讀數(shù)據(jù)的器件不是通過確認(rèn)狀態(tài)來(lái)應(yīng)答的,而是隨后產(chǎn)生一個(gè)停止?fàn)顟B(tài)。

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

上拉電阻相關(guān)文章:上拉電阻原理


評(píng)論


相關(guān)推薦

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

關(guān)閉