版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
TEMIC系列射頻卡開發(fā)指南開發(fā)設(shè)計(jì)簡介::TEMIC系列列射頻卡產(chǎn)品品包括E55550、E5560卡和U22770B基站芯芯片。`在開發(fā)過程程中由開發(fā)商商自行設(shè)計(jì)基基站發(fā)射、接收電路。由由于U22770B基站芯芯片只需少量量的驅(qū)動電路路,并且具有有多種供電模模式。這給用用戶以極大的的簡便性和靈靈活性。用戶戶可以根據(jù)不不同的應(yīng)用要要求快速、簡便的設(shè)計(jì)計(jì)出不同特點(diǎn)點(diǎn)的基站電路路。用戶仍然然需要繞制基基站天線,一一般使用銅制制漆包線繞制制直徑3CM、100圈的線圈即即可。這些特特點(diǎn)要求開發(fā)發(fā)射頻卡應(yīng)用用軟件的同時時還要設(shè)計(jì)基基站發(fā)射電路路。設(shè)計(jì)目標(biāo):硬件設(shè)計(jì):根據(jù)應(yīng)用環(huán)境(供供電條件、功耗要求)的的需要設(shè)計(jì)發(fā)發(fā)射基站電路路。繞制合適適的天線線圈圈,要求達(dá)到到要求的頻率率特性。設(shè)計(jì)計(jì)單片機(jī)控制制接口電路對對基站電路進(jìn)進(jìn)行控制。軟件設(shè)計(jì):根據(jù)設(shè)計(jì)電路的的約定設(shè)計(jì)射射頻卡讀寫程程序,要求能能夠?qū)ι漕l卡卡進(jìn)行完備操操作(讀數(shù)據(jù)據(jù)、寫數(shù)據(jù)、加密控制等等),并能夠夠提供簡便易易用的編程接接口(函數(shù)封封裝)。設(shè)計(jì)計(jì)單片機(jī)與PC機(jī)的通訊程程序,設(shè)計(jì)通通訊和命令格格式約定等協(xié)協(xié)議。在PC端還要設(shè)計(jì)計(jì)應(yīng)用程序接接口(動態(tài)連連接庫.DDLL)供上上層應(yīng)用程序序調(diào)用。實(shí)現(xiàn):硬件實(shí)現(xiàn):E2270B支支持兩種供電電方式。一種種為+5V直流電源供供電,另一種種為汽車用+12V電池供電,并并且E22700B還具有電壓壓輸出功能可可以給微處理理器或其他外外圍電路供電電。此外,對對E22700B還有省電模模式和STANDDBY控制可選,所所以設(shè)計(jì)基站站電路時應(yīng)中中和以上功能能的不同要求求,設(shè)計(jì)基站站的外圍電路路。這里只對對幾個常用控控制功能的實(shí)實(shí)現(xiàn)加以說明明。省電模式:當(dāng)射頻卡系統(tǒng)應(yīng)應(yīng)用于汽車、門禁等領(lǐng)域域如果對電路路的耗電量加加以控制(射射頻信號發(fā)射射的功耗是遠(yuǎn)遠(yuǎn)遠(yuǎn)大于接觸觸式IC卡的),可可以有效的節(jié)節(jié)省能耗延長長內(nèi)置電池的的壽命。在需需要降低功耗耗的領(lǐng)域可以以在無卡檢測測的過程中間間斷的打開和和關(guān)閉射頻輸輸出(E22700B的CFE腳)。也可可以使卡處于于STANDDBY模式(控制U22700B的STANDDBY腳)這樣可可以極大的降降低基站的耗耗電量。此外外用戶也可以以使用外加檢檢測電路的方方法如:光電電管、紅外檢測等等低耗電手段段來控制基站站的工作這樣樣可以得到很很好的省電要要求。串行通訊:假設(shè)射頻卡讀寫寫器為PC機(jī)的外圍設(shè)設(shè)備,讀寫器器與微機(jī)的通通訊需要通過過串行口進(jìn)行行。根據(jù)需要要用戶可以選選擇使用各種種串行接口電電路。這里假假設(shè)使用RS232串行接口電電路。電路原理圖:軟件實(shí)現(xiàn):軟件設(shè)計(jì)要求設(shè)設(shè)計(jì)匯編程序序完成對射頻頻卡的完備操操作(包括讀讀操作、寫操作以及及命令發(fā)送等等)。讀卡程程序要求用軟軟件模擬信號號時序,自動動檢測同步信信號同步后要要根據(jù)選擇的的編碼方式進(jìn)進(jìn)行軟件解碼碼,最后將解解碼得到的數(shù)數(shù)據(jù)流按合理理順序存人指指定存儲區(qū)。寫寫卡程序使用用開關(guān)天線負(fù)負(fù)載的方法對對數(shù)據(jù)進(jìn)行編編碼,要求能能向IC卡發(fā)射各種種組合的數(shù)據(jù)據(jù)流,完成對對IC卡的各種控控制功能(注注:寫程序只只完成向IC卡發(fā)送數(shù)據(jù)據(jù)的功能,對對命令或?qū)懖俨僮鞯膱?zhí)行情情況不做檢測測,而是由讀讀卡程序獲取取IC卡的反饋信信息后再進(jìn)行行比較判斷)。由由于E5550卡與E5560卡的特性區(qū)區(qū)別所以對兩兩種卡的讀寫寫程序不盡相相同,但兩種種卡讀寫程序序的設(shè)計(jì)思想想是基本相同同的。E5550卡讀讀寫程序:在介紹E55550卡的讀寫卡卡程序之前,先先要了解該類類型卡的讀寫寫特性。這些些特性包括::EEPROOM的存儲分配配、卡的同步信信號、發(fā)射頻率、BITRAATE、卡控制塊的的結(jié)構(gòu)、寫卡以及其其他卡操作的的命令格式等等。E5550卡內(nèi)內(nèi)置264位的EEPROOM這些存儲區(qū)區(qū)分為8個BLOCK每塊33位,其中第第0位為塊鎖定定位,一旦該該位被置‘1’則該塊兒數(shù)數(shù)據(jù)將不能再再做任何修改改,而且LOCK位是無法恢恢復(fù)的。LOCK位不隨其他他位一起發(fā)射射到基站(即即:LOCK位是不可讀讀的用戶實(shí)際際使用的數(shù)據(jù)據(jù)區(qū)位每塊的的后32位共256位)。8個BLOCK中的BLOCKK0是作為卡片片的控制塊存存儲卡的控制制信息,BLOCKK7是PASSWWORD區(qū)在口令加加密功能啟動動時這里存放放卡的讀寫控控制密碼,當(dāng)當(dāng)加密功能沒沒有使用時該該區(qū)也可以存存放用戶數(shù)據(jù)據(jù)。其他六個個存儲塊用戶戶可以用來存存放各種數(shù)據(jù)據(jù)。EEPROOM結(jié)構(gòu)如圖::011322LUseerDattaOrPasswwordBBlock7LUserrDataaBllock66LUserrDataaBllock55LUserrDataaBllock44LUserrDataaBllock33LUserrDataaBllock22LUserrDataaBllock11LModeDataaBloock0332BITTNottraansmitttedE5550卡控控制塊用于控控制卡的各種種操作的特性性,如:同步步信號、數(shù)據(jù)流格式式、數(shù)據(jù)流長度度、加密、口令喚醒和和停止發(fā)射等等功能的啟用用關(guān)閉等??乜刂茐K位于EEPROOM的第0塊數(shù)據(jù)區(qū)可可由用戶進(jìn)行行編程控制(用用戶向卡發(fā)送送寫命令給該該區(qū)寫入一定定格式的數(shù)據(jù)據(jù)即可)。一一般一個應(yīng)用用系統(tǒng)的卡的的模式塊的值值是統(tǒng)一的,在在發(fā)卡時建議議寫入數(shù)據(jù)后后將該塊的LOCK位置‘1’這樣可以防防止對控制塊塊的誤修改引引起卡的操作作不正常。E5550卡的控制塊塊的結(jié)構(gòu)和功功能說明如圖圖:(模式設(shè)設(shè)置將影響讀讀寫程序的設(shè)設(shè)計(jì))0111122131141516177181192021222232242526277282293031322LREESERVEEDBRR0MS1MS2PSK0MaxbblkSTBtt00AAORuseSTOPUUsePaassworrd下面結(jié)合對控制制塊的說明,簡簡單介紹E55550卡的的各種工作模模式和操作特特性:在E55500卡中控制塊塊的第1位至第11位之間的11位和第32位為保留位位,現(xiàn)在沒有有使用,用戶戶可以寫入任任何值,建議議寫入‘0’用來和其他他功能位區(qū)別別??刂茐K中中的第15位和第24位必須寫入‘0’否則卡將不不能正常工作作。從第12位至第14位為Bitraate設(shè)置位。用用戶通過設(shè)置置這三位的值值可以決定卡卡發(fā)射數(shù)據(jù)時時的Bitraate。用戶可按按下表中的值值進(jìn)行設(shè)置。(一般使用RF/32的BITRATE)第12位第13位第14位BitRate0000RF/80011RF/1660100RF/3220111RF/4001000RF/5001011RF/6441100RF/10001111RF/1228第16~17位位、18~20位以及21~22位結(jié)合在一一起設(shè)定卡發(fā)發(fā)射數(shù)據(jù)的調(diào)調(diào)制方法,具具體配合方式式如下表所示示。用戶設(shè)置置16、17位為‘00’時18~20位的設(shè)置有有效,如果18~199位設(shè)置為‘0001’、‘010’、‘011’時可繼續(xù)使使用第21~22位設(shè)置在PSK調(diào)制方法下下的16117MooduMoode00direect11811920ModuModeMoreeDaata1Dataa001Maancheeester00000direect10Biphaase00001PSK1111Reserrved00110PSK220111PSK321222PSKCFF100FFSK1RF/8RRF/500RF/221011FSK2RF/88RF/10001RF/441100FSK1aaRF//5RF/810RF/881111FSK2aaRF//10RF/811reserrved頻率變化。第223位用來控制制是否啟動AOR(Answeer-On--Requeest)功能。該該位設(shè)置為‘1’時啟動AOR功能,這時IC卡進(jìn)入射頻頻區(qū)域后不主主動發(fā)射數(shù)據(jù)據(jù),而要由基基站給IC卡發(fā)射喚醒醒命令后再發(fā)發(fā)射數(shù)據(jù)。該該功能要求首首先啟動口令令加密功能,也也就是說基站站要喚醒一個個IC卡時必須在在喚醒命令序序列中向IC卡發(fā)射口令令密碼,IC卡檢測到包包含合法口令令的喚醒命令令時才恢復(fù)發(fā)發(fā)送數(shù)據(jù)。要要啟動口令加加密功能就要要求將控制塊塊的第28位設(shè)置為‘1’。啟動口令令加密功能后后第7塊數(shù)據(jù)區(qū)將將保存IC卡的口令密密碼,所以啟啟動加密功能能之前應(yīng)該事事先寫入密碼碼。如果允許許修改密碼則則不用鎖定BLOCKK7如果密碼永永久有效則要要在寫入密碼碼的同時鎖定定BLOCKK7這樣用戶將將不能修改密密碼。在加密密模式下用戶戶對卡中數(shù)據(jù)據(jù)進(jìn)行任何修修改均要求提提供密碼驗(yàn)證證。密碼正確確時修改操作作有效,密碼碼不正確則修修改無效。后后面將講到加加密模式和非非加密模式下下的寫命令格格式是不同的的。為了保護(hù)密碼不不被未知用戶戶截獲,用戶戶在啟動加密密功能后還應(yīng)應(yīng)該對控制塊塊的第25~27位進(jìn)行設(shè)置置。這三位設(shè)設(shè)置的為IC卡發(fā)射數(shù)據(jù)據(jù)時發(fā)射的最最大數(shù)據(jù)塊數(shù)數(shù)(MaxBBlock)這三位的的設(shè)置和發(fā)射射數(shù)據(jù)流的關(guān)關(guān)系如下表::第25位第26位第27位SenddBloccks000OOnlybblock0001blockk1010blockk1~2011blockk1~3100blockk1~4101blockk1~5110blockk1~6111blockk1~7當(dāng)MAXBLKK設(shè)置為‘0’時IC卡只發(fā)射BLOCKK0的數(shù)據(jù)給基基站;當(dāng)設(shè)置置為‘1’時IC卡只發(fā)射BLOCKK1的數(shù)據(jù)給基基站;當(dāng)設(shè)置置為‘2’時IC卡發(fā)射BLOCKK1和BLOCKK2的數(shù)據(jù)給基基站;設(shè)置為為‘3’時IC卡發(fā)射BLOCKK1至BLOCKK3的數(shù)據(jù)該基基站其他的依依次類推當(dāng)設(shè)設(shè)置為‘7’時IC卡發(fā)射BLOCKK1至BLOCKK7的數(shù)據(jù)給基基站。在啟動動口令模式后后MAXBLLK的值應(yīng)小于‘7’這樣IC卡將不發(fā)射射存放在第7塊中的數(shù)據(jù)據(jù)。用戶除了設(shè)置以以上各項(xiàng)設(shè)置置項(xiàng)以外,還還可以設(shè)置IC卡發(fā)射數(shù)據(jù)據(jù)時的同步信信號類型。IC卡可以使用用兩種不同的的同步信號,它它們是SequeenceTTerminnator和BlockkTermminatoor。SequeenceTTerminnator在每個數(shù)據(jù)據(jù)循環(huán)開始時時出現(xiàn)。BlockkTermminatoor在每個BLOCK的數(shù)據(jù)的開開始時出現(xiàn)。兩兩種同步信號號可以獨(dú)立使使用也可以結(jié)結(jié)合使用。同同步信號的波波形和其與數(shù)數(shù)據(jù)流的結(jié)合合情況如下圖圖所示:(假假設(shè)MAXBLLK=7,使用Manchhesterr編碼。)ClockBlockSequecee0UseeSTUseBBT1OffOff0bloock1bloock2blocck3。。。。blocck7bblock1bllk2。。。OnOOff0blockk1。。。。。blockk7bllock11。。。。。blockk7bloockOffOn0bloock1bloock2。。。blocck7blocck1blockk2。。。OnOOn0bblock1bllock22。。。blocck7bloock1bloock2。。。MAXBLK值值與數(shù)據(jù)流的的關(guān)系圖如下下:(假設(shè)UseBTT=offANDUUseST==off)MAXBLK==50Blockk1。。。。。Blocck5Blockk1。。。。。Blocck5Blockk1。。。MAXBLK==20Blockk1BBlock2BBlock1Bllock22Bloock1Blocck2。。。。。。MAXBLK==00Blockk0BBlock0BBlock0Bllock00Bloock0Blocck0。。。。。。IC卡發(fā)射數(shù)據(jù)據(jù)由基站天線線接收后,由由基站處理后后經(jīng)基站的Outpuut腳把得到的的數(shù)據(jù)流發(fā)給給微處理器的的輸入口。這這里基站只完完成信號的接接收和整流的的工作,而信信號的解調(diào)解解碼的工作要要由微處理器器來完成。微微處理器要根根據(jù)輸入信號號在高電平、低電平的持持續(xù)時間來模模擬時序進(jìn)行行解碼操作。下下面以Manchhesterr編碼、125kkHz頻和RF/32的Bitraate的條件下時時序?yàn)槔o出出基站讀取數(shù)數(shù)據(jù)流的時序序圖。ClockData001110100Manchesster其中:T1T1=1128μsT2==256μμsTT2數(shù)據(jù)流圖如下::BitCloockDataOuutValiidVallidA1288μsB2556μsTs1Tss2TLL1TL22上圖所示的是程程序檢測跳變變的時間基準(zhǔn)準(zhǔn)。圖中陰影影部分為跳變變的不穩(wěn)定區(qū)區(qū)間,Valid區(qū)域是穩(wěn)定定區(qū)。程序檢檢測電平跳變變是在一個時時間區(qū)間以內(nèi)內(nèi),如:半個個周期的跳變變理想狀態(tài)應(yīng)應(yīng)為128μs如圖中A點(diǎn)所示但實(shí)實(shí)際檢測區(qū)域域?yàn)門s1~TTs2(即:凡是是時間在Ts1和Ts2之間的跳變變信號均視為為半個周期的的跳變信號)。同同樣,在TL1~TTL2之間的跳變變都可以視為為一個周期的的跳變。E5550在上圖假設(shè)設(shè)條件下時這這四個時間檢檢測標(biāo)準(zhǔn)點(diǎn)的的值為:TS1=70μμs,TSS2=1900μs,TLL1=2100μs,TTL2=3000μs現(xiàn)在介紹E55550卡在使用Manchhesterr編碼時的解解碼方法。下下圖表示Manchhesterr編碼的電平平狀態(tài)變化情情況。Clock:Data00000Data011:01Data10010Data11111由上圖所示可以以看出:當(dāng)數(shù)數(shù)據(jù)位為‘1’時跳變總是是由低向高,而而數(shù)據(jù)位為‘0’時跳變總是是由高向低。結(jié)結(jié)合Manchhesterr編碼的特點(diǎn)點(diǎn)我們可以這這樣進(jìn)行解碼碼:在位時鐘鐘周期的半周周期處檢測電電平的變化情情況,如果檢檢測到電平變變化發(fā)生則繼繼續(xù)判斷變化化后的電平情情況,是高電電平則該位解解碼為‘1’,低電平則則解碼為‘0’,沒有跳變變發(fā)生則可視視為信號異常常進(jìn)行出錯處處理。IC卡與基站的的數(shù)據(jù)交換是是雙向的,基基站要向IC卡發(fā)送命令令和數(shù)據(jù),完完成對IC卡各種控制制操作。對E5550卡而言,基基站可以向卡卡片發(fā)送的命命令有四種格格式分別完成成四種控制功功能。OPP10L1DaataBiits3222ADDR0StaandarddWritte101Passwword32L1DaataBiits322AADR00PasssworddModee101PPasswoord32AAORWaakeUpp11StoopModdulatiion四種命令分別完完成以下功能能:StandarrdWriite:對卡數(shù)據(jù)據(jù)的普通讀寫寫,其中‘10’為操作碼,‘L’位為指定數(shù)數(shù)據(jù)塊的鎖定定位,緊接著著‘L’位是32位數(shù)據(jù)。數(shù)數(shù)據(jù)后面是命命令要寫入的的數(shù)據(jù)塊的塊塊地址,這里里塊地址用3位二進(jìn)制碼碼表示。PassworrdModde:該操作和StanddardWWrite操作完成類類似功能,只只是在PasswwordMMode啟動后對卡卡中數(shù)據(jù)的修修改就要求提提供口令。使使用該命令就就是要完成PasswwordMMode下卡中數(shù)據(jù)據(jù)的修改。命命令數(shù)據(jù)流中中其他部分和和StanddardWWrite的含義一樣樣,只是在操操作碼和‘L’位之間加入入了長度為32位的口令數(shù)數(shù)據(jù)??ń邮帐盏矫詈笤谠趯?shù)據(jù)區(qū)進(jìn)進(jìn)行修改之前前要檢驗(yàn)命令令提供的口令令與卡中密碼碼區(qū)保存的數(shù)數(shù)據(jù)是否一致致,只有兩者者一致時IC卡才真正的的修改數(shù)據(jù)區(qū)區(qū)的數(shù)據(jù)。這這樣可以防止止不知道密碼碼的非法用戶戶對卡中數(shù)據(jù)據(jù)的修改。AORWakkeUp:該命令是是卡的AOR功能啟動后后,基站發(fā)給給卡片的喚醒醒命令。命令令由操作字‘10’和32位的口令字字組成。使用用該命令可以以喚醒密碼和和命令字中提提供的密碼一一致的卡片。卡卡片喚醒后即即可向基站發(fā)發(fā)送數(shù)據(jù)。StopMoodulattion:該命令用用來關(guān)閉IC卡使接收到到命令的IC卡進(jìn)入睡眠眠狀態(tài)。進(jìn)入入睡眠狀態(tài)的的IC卡不再向外外發(fā)送數(shù)據(jù),而而在接收到AOR命令后再開開始發(fā)射數(shù)據(jù)據(jù)。利用這種種機(jī)制可以完完成一定的防防沖撞功能(通通常情況下當(dāng)當(dāng)多個卡片同同時進(jìn)入射頻頻區(qū)域時,基基站是無法讀讀取數(shù)據(jù)的。這這時可以由基基站發(fā)射Stop命令,使所所有卡片進(jìn)入入睡眠狀態(tài),然然后再由基站站使用不同的的密碼發(fā)射喚喚醒命令來喚喚醒密碼相同同的卡片。讀讀寫操作完成成后再關(guān)閉該該卡片,依次次可以處理各各個卡片?;窘o卡片發(fā)送送數(shù)據(jù)時也要要對數(shù)據(jù)進(jìn)行行編碼,使數(shù)數(shù)據(jù)信號加載載到天線的發(fā)發(fā)射信號中。TEMIC公司的系列列產(chǎn)品使用一一種改變發(fā)射射天線負(fù)載的的方式對信號號進(jìn)行編碼。這這種方法使用用短暫的RF信號間隔(GAP)來把RF信號分割成成不同長短的的區(qū)間的方法法對數(shù)據(jù)進(jìn)行行編碼。起始始GAP一般比其他GAPS略長,用來來與卡片同步步。在發(fā)送數(shù)數(shù)據(jù)時一個長長度為16~322fielldcloocks時間長度的RF區(qū)間表示數(shù)數(shù)據(jù)為‘0’,一個長度度為48~644fielldcloocks時間長度的RF區(qū)間表示數(shù)數(shù)據(jù)為‘1’。在編制程程序時可以使使用延時中斷斷RF區(qū)域的方法法進(jìn)行發(fā)送數(shù)數(shù)據(jù)。發(fā)送數(shù)數(shù)據(jù)時的RF區(qū)域狀態(tài)如如圖:1001RFFielld:。。。。。GappSSttartGGapBiitZerroBitOOne對E5550卡卡各段區(qū)間的的時間長度為為:Tgaps=3300μs,T1==350μs,T0==100μs最后介紹以下在在編制程序時時應(yīng)該注意的的一些細(xì)節(jié)問問題:IC卡發(fā)射數(shù)據(jù)據(jù)高低位順序序:IC卡向基站發(fā)發(fā)射數(shù)據(jù)時是是根據(jù)BLOCKK1的設(shè)置從第第一區(qū)到第MAXBLLK區(qū)循環(huán)發(fā)射射的。數(shù)據(jù)以以選擇的同步步信號開始按按照塊的順序序發(fā)送的。每每塊數(shù)據(jù)的發(fā)發(fā)送是低位在在前,高位在在后,即先發(fā)發(fā)送第1位數(shù)據(jù)然后后發(fā)送第2位依次類推推到第32位(第0位是數(shù)據(jù)塊塊的鎖定位是是不隨數(shù)據(jù)一一起發(fā)送的)。對數(shù)據(jù)存儲時應(yīng)應(yīng)注意字節(jié)地地址的選擇::由上面的介介紹我們可以以知道,E5550卡讀寫的單單位為32biit,所以要用4個字節(jié)的空空間存儲一個個數(shù)據(jù)區(qū)的數(shù)數(shù)據(jù)。程序中中使用移位的的方法取輸入入口檢測到數(shù)數(shù)據(jù)位。這就就要求字節(jié)內(nèi)內(nèi)移位方向和和字節(jié)間的地地址變化有機(jī)機(jī)的結(jié)合在一一起,否則將將出現(xiàn)讀數(shù)據(jù)據(jù)高低位或字字節(jié)間順序與與實(shí)際順序不不一致的情況況。寫數(shù)據(jù)時同樣要要注意發(fā)送數(shù)數(shù)據(jù)的高低位位順序,特別別是發(fā)送數(shù)據(jù)據(jù)區(qū)地址信息息時。如果不不注意發(fā)送數(shù)數(shù)據(jù)的順序則則極有可能錯錯誤的將數(shù)據(jù)據(jù)寫入其他的的數(shù)據(jù)區(qū)中。如如:向第1數(shù)據(jù)區(qū)寫數(shù)數(shù)據(jù)時,地址址應(yīng)為‘001’使用移位操操作時應(yīng)使用用循環(huán)左移的的方法依次發(fā)發(fā)送地址信息息,如果這里里錯誤的使用用了循環(huán)右移移的方法則卡卡獲得的實(shí)際際地址為‘100’寫入的為第4區(qū)的數(shù)據(jù)。最后給出一個EE5550卡的讀寫程程序以供參考考:設(shè)計(jì)的環(huán)境條件件:假設(shè)工作在1225kHzz的射頻頻率率下,采用RF/32的BitRRate,Manchhesterr編碼,使用SequeencesTermiinatorr同步信號,MAXBLLK=7,使用ATMELL89C551單片機(jī)。讀卡程序框圖::開始單片機(jī)初始化單片機(jī)初始化;TMOD==#11H;SP=#668H存儲區(qū)的初始化,準(zhǔn)備基本讀卡參數(shù)存儲區(qū)的初始化,準(zhǔn)備基本讀卡參數(shù)初始化記時器初始化記時器MainMain循環(huán)等待一個穩(wěn)定的低電平循環(huán)等待一個穩(wěn)定的低電平有跳變嗎?N有跳變嗎?Y保存電平狀態(tài),開始記時。保存電平狀態(tài),開始記時。有跳變嗎?N有跳變嗎?Y停止記時,取記時器記時結(jié)果停止記時,取記時器記時結(jié)果ERRORST>=ERRORST>=330μs?Y保存電平狀態(tài),開始記時。保存電平狀態(tài),開始記時。有跳變嗎?N有跳變嗎?Y停止記時,取記時器記時結(jié)果停止記時,取記時器記時結(jié)果ERRORST<=190ERRORST<=190μs?Y保存電平狀態(tài),開始記時。保存電平狀態(tài),開始記時。有跳變嗎?N有跳變嗎?Y停止記時,取記時器記時結(jié)果停止記時,取記時器記時結(jié)果是合法跳變嗎?ERRORSN是合法跳變嗎?ERRORSYT>=300T>=300μs?Y有跳變嗎?N有跳變嗎?Y停止記時,取記時器記時結(jié)果停止記時,取記時器記時結(jié)果ERRORST<=190ERRORST<=190μs?Y取跳變后的電平狀態(tài)取跳變后的電平狀態(tài)狀態(tài)=狀態(tài)=‘1’?NY當(dāng)前位為‘當(dāng)前位為‘0’當(dāng)前位為‘1’取該位數(shù)據(jù)進(jìn)數(shù)據(jù)緩沖區(qū)取該位數(shù)據(jù)進(jìn)數(shù)據(jù)緩沖區(qū) 數(shù)據(jù)接收記數(shù)器+1(Num為設(shè)置置的讀取數(shù)據(jù)據(jù)位數(shù)。)計(jì)數(shù)器=Num?結(jié)束計(jì)數(shù)器=Num?結(jié)束YN保存電平狀態(tài),開始記時。保存電平狀態(tài),開始記時。有跳變嗎?N有跳變嗎?Y是合法跳變嗎?N是合法跳變嗎?Y停止記時,保存當(dāng)前電平狀態(tài)停止記時,保存當(dāng)前電平狀態(tài)TT>=190μs?N開始記時開始記時寫卡程序框圖::開始開始單片機(jī)初始化單片機(jī)初始化是命令類型1?N是命令類型1?Y是命令類型2?發(fā)送操作碼是命令類型2?發(fā)送操作碼Y是命令類型2?發(fā)送操作碼發(fā)送鎖定位是命令類型2?發(fā)送操作碼發(fā)送鎖定位發(fā)送口令字發(fā)送數(shù)據(jù)流YN發(fā)送口令字發(fā)送數(shù)據(jù)流發(fā)送操作碼發(fā)送操作碼發(fā)送口令字發(fā)送鎖定位發(fā)送地址位發(fā)送口令字發(fā)送鎖定位發(fā)送地址位調(diào)延時程序調(diào)延時程序發(fā)送數(shù)據(jù)流調(diào)延時程序發(fā)送數(shù)據(jù)流調(diào)延時程序置輸出位為1置輸出位為1調(diào)延時程序發(fā)送地址位調(diào)延時程序發(fā)送地址位發(fā)送操作碼發(fā)送操作碼置輸出位為1置輸出位為1調(diào)延時程序調(diào)延時程序結(jié)束結(jié)束該程序分為多個個子程序各子子程序的程序序框圖如下::數(shù)據(jù)流發(fā)送子程程序:開始開始初始化計(jì)數(shù)器初始化計(jì)數(shù)器取一個字節(jié)數(shù)據(jù)至A取一個字節(jié)數(shù)據(jù)至AA左移一位至進(jìn)位位CA左移一位至進(jìn)位位CC=0?C=0?NY發(fā)送數(shù)據(jù)‘發(fā)送數(shù)據(jù)‘0’發(fā)送數(shù)據(jù)‘1’位計(jì)數(shù)器+1位計(jì)數(shù)器+1字節(jié)發(fā)送結(jié)束?字節(jié)發(fā)送結(jié)束?NY位計(jì)數(shù)器清零位計(jì)數(shù)器清零字節(jié)計(jì)數(shù)器+1數(shù)據(jù)發(fā)送結(jié)束?N數(shù)據(jù)發(fā)送結(jié)束?Y結(jié)束結(jié)束發(fā)送地址子程序序:開始開始初始化計(jì)數(shù)器初始化計(jì)數(shù)器取一個字節(jié)數(shù)據(jù)至A取一個字節(jié)數(shù)據(jù)至AA高低位互換A高低位互換A循環(huán)左移一位A循環(huán)左移一位A左移一位至進(jìn)位位CA左移一位至進(jìn)位位CC=0?C=0?NY發(fā)送數(shù)據(jù)‘發(fā)送數(shù)據(jù)‘1’發(fā)送數(shù)據(jù)‘0’位計(jì)數(shù)器+1位計(jì)數(shù)器+1數(shù)據(jù)發(fā)送結(jié)束?N數(shù)據(jù)發(fā)送結(jié)束?Y結(jié)束結(jié)束其他子程序和以以上兩個類似似,分別完成成發(fā)送指定數(shù)數(shù)據(jù)流的作用用。此外還要要編制四個延延時子程序,分分別代表LGAP_DDELAY、SGAP__DELAYY、ONE_DEELAY、ZERO__DELAY。讀寫程序調(diào)用接接口:讀卡程序入口參參數(shù):參數(shù)名功能R0存放讀取數(shù)數(shù)據(jù)的存儲緩緩沖區(qū)的首地地址指針R1保存輸入口口電平狀態(tài)的的R2讀取數(shù)據(jù)的的位計(jì)數(shù)器R3字節(jié)內(nèi)數(shù)據(jù)據(jù)位記數(shù)R4緩沖區(qū)字節(jié)節(jié)計(jì)數(shù)器R5定時器時間間的暫存器R6讀數(shù)據(jù)塊計(jì)計(jì)數(shù)器R7輸入口電平平狀態(tài)暫存寫卡程序入口參參數(shù):參數(shù)名功能R0欲寫入數(shù)據(jù)據(jù)的暫存區(qū)的的地址指針R1卡密碼的暫暫存區(qū)的地址址指針R2操作的命令令代碼R3欲欲寫入數(shù)據(jù)的的卡中EEPROOM塊的塊地址址00位指令執(zhí)行結(jié)結(jié)束標(biāo)志01位命令中的LOCK位值程序源代碼:讀卡程序代碼::該程序完成功能能為,讀取E5550卡中的7個Blockk中的數(shù)據(jù),存存入片內(nèi)地址址30H開始的28個字節(jié)中。并并比較卡中第第4塊中的數(shù)據(jù)據(jù)是否為14H114H144H14HH,如果是則則提示綠燈亮亮,否則提示示紅燈亮。程程序在ATMELL89C511/6MHzz條件下運(yùn)行行??ㄆ哪DJ皆O(shè)置如前前所示。ORG00000HAJMPTESST;-------------------------------------------------------------------;---------------------MAAINFUUNCTIOON----------------------------;-------------------------------------------------------------------TEST:MOVSSP,#688HMOVTMOOD,#111H;單片機(jī)初初始化MOV4CHH,#14HH;準(zhǔn)備比較較數(shù)據(jù)MOV4DHH,#14HHMOV4EHH,#14HHMOV4FHH,#14HHACALLGREEENACALLREDDACALLALLL;單片機(jī)自自檢提示TEST0:ACALLLRREAD;讀卡子程程序ACALLCOMMP;比較子程程序JNB00HH,TESTT1ACALLGREEEN;比較正確確提示AJMPTESST2TEST1:ACALLLRRED;比較錯誤誤提示TEST2:ACALLLDDELAYAJMPTESST0RET;結(jié)束;-------------------------------------------------------------------;--------------------REAADFUNNCTIONN-----------------------------;-------------------------------------------------------------------READ:MOVAA,#00HHREADD:CLR000HMOVR5,,#00H;緩存寄存存器清零‘R5’MOVR6,,#07H;讀7個數(shù)據(jù)塊‘R6’MOVB,RR6MOVA,##20HMULABMOVR2,,A;計(jì)算讀數(shù)數(shù)據(jù)位數(shù)總和和‘R2’MOVB,RR6MOVA,##04HMULABMOVR4,,A;計(jì)算讀出出數(shù)據(jù)的字節(jié)節(jié)數(shù)‘R4’MOVR3,,#00H;緩存寄存存器清零‘R3’MOVR0,,#30HLOOPR:MOV@RR0,#000HINCR0DJNZR4,,LOOPRR;清數(shù)據(jù)存存儲區(qū)數(shù)據(jù)MOVR0,,#30H;置數(shù)據(jù)存存儲區(qū)首地址址‘R0’MOVR1,,#00H;狀態(tài)寄存存器清零‘R1’MAIN:CLRTRR0MOVTH00,#00HHMOVTL00,#00HH;記時器初初始化MAINL:JBPP1.1,MMAINLJBP1..1,MAIINLJBP1..1,MAIINLJBP1..1,MAIINLJBP1..1,MAIINLMOVR1,,#00HNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOP;循環(huán)等待待穩(wěn)定低電平平MAIN0:MOVAA,#00HHMOVC,PP1.1RLCAMOVR7,,AXRLA,RR1JNZMAIINM;跳變檢測測NOPNOPNOPNOPNOPNOPNOPAJMPMAIIN0MAINM:MOVBB,R7MOVR1,,BMOVTH00,#00HHMOVTL00,#07HHSETBTR00;開始記時時NOPNOPNOPNOPNOPMAIN1:MOVAA,#00HHMOVC,PP1.1RLCAMOVR7,,AXRLA,RR1JNZMAIIN2;跳變檢測測NOPNOPNOPNOPNOPNOPNOPAJMPMAIIN1MAIN2:MOVBB,R7MOVR1,,BCLRTR00CLRCMOVA,##0AFHSUBBA,TTL0JCRIGGHT;是否為一一個半位周期期AJMPMAIINRIGHT:MOVTTH0,#000HMOVTL00,#07HHSETBTR00;從新開始始記時MAIN5:MOVAA,#00HHMOVC,PP1.1RLCAMOVR7,,AXRLA,RR1JNZMAIIN6;跳變檢測測NOPNOPNOPNOPNOPNOPNOPAJMPMAIIN5MAIN6:MOVBB,R7MOVR1,,BCLRTR00CLRCMOVA,##5FHSUBBA,TTL0JNCRIGGHT2;是否為半半個位周期的的跳變AJMPMAIINRIGHT2::MOVTTH0,#000HMOVTL00,#07HHSETBTR00MAIN7:MOVAA,#00HHMOVC,PP1.1RLCAMOVR7,,AXRLA,RR1JNZMAIIN8;檢測跳變變NOPNOPNOPNOPNOPNOPNOPAJMPMAIIN7MAIN8:CLRTTR0MOVR5,,TL0MOVB,RR7MOVR1,,BCLRCMOVA,##5FHSUBBA,TTL0JCMAIIN9;是否為合合法跳變AJMPMAIINMAIN9:MOVTTH0,#000H1MOVTL00,#10HHSETBTR00MOVA,##96H;跳變類型型SUBBA,RR5JCREAAD2;跳變是數(shù)數(shù)據(jù)位跳變‘0’;數(shù)據(jù)流以以‘0’開頭------------------------------------------------------------------;-------------------------------------------------------------------READ1:MOVAA,#00HH;是同步結(jié)結(jié)束跳變MOVC,PP1.1;數(shù)據(jù)流以‘1’開頭RLCAMOVR7,,AXRLA,RR1JNZREAAD11;檢測跳變變NOPNOPNOPNOP同同步信號NOPNOPAJMPREAAD1READ11::MOVBB,R7MOVR1,,BCLRTR00CLRCMOVA,##5FH同步信號SUBBA,TTL0JNCREAAD2;記時時間間是否為半個個周期AJMPERRRORRREAD2:MOVAA,@R0;數(shù)據(jù)位解解碼,存放數(shù)數(shù)據(jù)進(jìn)CJNER1,,#01H,,READ55;數(shù)據(jù)緩沖沖區(qū)CLRC;數(shù)據(jù)位為‘0’AJMPREAAD6READ5:SETBBCC;數(shù)據(jù)位為‘1’READ6:RLCAA;取數(shù)據(jù)位位進(jìn)寄存器AMOV@R00,AINCR3;字節(jié)內(nèi)位位記數(shù)器+1CJNER3,,#08H,,READ77;是否滿一一個字節(jié)MOVR3,,#00H;字節(jié)滿時時字節(jié)內(nèi)記數(shù)數(shù)器清零INCR0;字節(jié)計(jì)數(shù)數(shù)器+1READ7:DJNZZRR2,REAAD8;數(shù)據(jù)讀取取是否結(jié)束??RET;結(jié)束操作作返回調(diào)用程程序READ8:MOVTTH0,#000HMOVTL00,#10HHSETBTR00READ3:MOVAA,#00HHMOVC,PP1.1RLCAMOVR7,,AXRLA,RR1JNZREAAD4;檢測跳變變NOPNOPNOPNOPNOPNOPNOPAJMPREAAD3READ4:CLRTTR0MOVB,RR7MOVR1,,B;11CLRCMOVA,##5FH;00SUBBA,TTL0JCREAAD2;跳變時間間如果是一個個周期,則認(rèn)認(rèn)為MOVTH00,#00HH;相鄰兩位位數(shù)據(jù)相反。跳跳轉(zhuǎn)區(qū)數(shù)據(jù)處處MOVTL00,#07HHSETBTR00AJMPREAAD1;跳變時間間是半個周期期,則認(rèn)為相相鄰ERRORR::AJMPPRREADD;兩位數(shù)據(jù)據(jù)相同,需要要繼續(xù)檢測跳跳變。;-----------------------------------------------------------;----------------DDELAYFUNCTTION------------------------;----------------------------------------------------------;10DELAY:MOVRR0,#300HDELAY0::MOVRR1,#300H;01DELAY1::NOPNOPNOPNOPNOPNOPNOPNOPDJNZR1,,DELAYY1DJNZR0,,DELAYY0RET;-----------------------------------------------------------;----------------GGREENFUNNCTIONN---------------------;-----------------------------------------------------------GREEN:MOVRR2,#077HGREEN1::CLRPP1.2ACALLDELLAYSETBP1..2ACALLDELLAYDJNZR2,,GREENN1RET;-----------------------------------------------------------;----------------RREDFUUNCTIOON--------------------------;-----------------------------------------------------------RED:MOVRR2,#077HRED1:CLRPP1.3ACALLDELLAYSETBP1..3ACALLDELLAYDJNZR2,,RED1RET;-----------------------------------------------------------;----------------AALLFUUNCTIOON--------------------------;-----------------------------------------------------------ALL:MOVRR2,#077HALL1:CLRPP1.3CLRP1..2ACALLDELLAYSETBP1..3SETBP1..2ACALLDELLAYDJNZR2,,ALL1RET;----------------------------------------------------------;-----------------COMPAARAFUUNCTIOON-------------------;----------------------------------------------------------COMP:MOVRR2,#044HMOVR0,,#40HMOVR1,,#4CHCOMP1:MOVAA,@R0CLRCSUBBA,@@R1JNZCERRRORINCR1INCR0DJNZR2,,COMP11SETB00HHRETCERROR::CLR000HRET寫卡程序代碼::該寫卡程序完成成功能為:根根據(jù)用戶提供供參數(shù),向E5550卡發(fā)射指定定命令序列。該該程序可以完完成發(fā)射所有有四種命令格格式命令的功功能。測試條條件和上面給給出的讀卡程程序相同。ORG00000HAJMPMAIIN;--------------------------------------------------;---------------maainfuunctioon-----------------;--------------------------------------------------MAIN:MOVSSP,#688HMOVR0,,#30HMOVR1,,#4CHMOV30HH,#00HHMOV31HH,#08HHMOV32HH,#80HHMOV33HH,#0E88HMOV4CHH,#00HHMOV4DHH,#01HHMOV4EHH,#02HHMOV4FHH,#03HHMOVR2,,#02HMOVR3,,#00HCLR00HHCLR01HHCLR02HHCOMP1:CJNEERR2,#011H,COMMP2RDA:CLRPP1.0NOPACALLSENNDCACALLSENNDLACALLSENNDDACALLSENNDAACALLDELLAYGACALLDELLAYGACALLDELLAYGSETB00HHRETCOMP2:CJNEERR2,#022H,COMMP3RDP:CLRPP1.0NOPACALLSENNDCACALLSENNDPACALLSENNDLACALLSENNDDACALLSENNDAACALLDELLAYGACALLDELLAYGACALLDELLAYGSETB00HHRETCOMP3:CJNEERR2,#033H,COMMP4RWP:CLRPP1.0NOPACALLSENNDCACALLSENNDPSETBP1..0ACALLDELLAYGACALLDELLAYGACALLDELLAYGACALLDELLAYGSETB00HHRETCOMP4:CJNEERR2,#044H,WRIITERRST:CLRPP1.0NOPACALLSENNDCSETBP1..0ACALLDELLAYGACALLDELLAYGACALLDELLAYGACALLDELLAYGSETB00HHRETWRITER::CLR000HRET;--------------------------------------------------;-------------sendddataafuncction-------------;--------------------------------------------------SENDD:NOPNOPNOPNOPNOPCLRCMOVR4,,#00HMOVR5,,#00HLOOPD:MOVAA,@R0LOOPS:RLCAASETBP1..0JCSENNDOACALLDELLAYZNOPAJMPSENNDNSENDO:ACALLLDDELAYOONOPNOPNOPSENDN:CLRPP1.0ACALLDELLAYLINCR4CJNER4,,#08H,,SENDDD0MOVR4,,#00HINCR5INCR0CJNER5,,#04H,,SENDDD1RETSENDD0::NOPNOPNOPNOPNOPNOPNOPNOPNOPNOPAJMPLOOOPSSENDD1::NOPNOPNOPNOPAJMPLOOOPD;--------------------------------------------------;-----------sendaddrsssfunnctionn------------;--------------------------------------------------SENDA:CLRCCMOVR4,,#00HMOVA,RR3SWAPARLCALOOPA:RLCAASETBP1..0JCSENNDAOACALLDELLAYZNOPAJMPSENNDANSENDAO::ACALLLDDELAYOONOPNOPNOPSENDAN::CLRPP1.0ACALLDELLAYGINCR4CJNER4,,#03H,,LOOPAASETBP1..0ACALLDELLAYGRET;-----------------------------------------------;-----------sendcodefuncttion------------;-----------------------------------------------SENDC:CJNEERR2,#044H,SENNDC0CLRPP1.0ACALLDELLAYGNOPNOPNOPNOPNOPSETBPP1.0ACALLDELLAYONOPNOPNOPNOPNOPCLRPP1.0ACALLDELLAYGNOPNOPNOPNOPNOPSETBPP1.0ACALLDELLAYONOPNOPNOPNOPNOPCLRPP1.0ACALLDELLAYGNOPRETSENDC0::CLRP1.00ACALLDELLAYGNOPNOPNOPNOPNOPSETBPP1.0ACALLDELLAYONOPNOPNOPNOPNOPCLRPP1.0ACALLDELLAYGNOPNOPNOPNOPNOPSETBPP1.0ACALLDELLAYZNOPNOPNOPNOPNOPCLRPP1.0ACALLDELLAYGRET;-----------------------------------------------;---------SEENDLOOCKBIIT--------------------;-----------------------------------------------SENDL:NOPNOPSETBP1..0JB01HH,SENDDL0ACALLDELLAYZNOPAJMPSENNDL1SENDL0::ACALLLDDELAYOONOPNOPNOPSENDL1::CLRPP1.0ACALLDELLAYLRET;--------------------------------------------------;--------------SENNDPASSSWORDD------------------;--------------------------------------------------SENDP:CLRCCMOVR4,,#00HMOVR5,,#00HLOOPP:MOVAA,@R1LOOPPS::RLCAAS
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年消防工程消防安全隱患排查與整改承接合同范本3篇
- 酒店設(shè)施融資租賃轉(zhuǎn)租賃協(xié)議
- 2025年度KTV特色主題裝飾設(shè)計(jì)制作合同3篇
- 古鎮(zhèn)區(qū)二手房交易協(xié)議
- 知識更新基金管理辦法
- 商務(wù)接待商務(wù)車租賃協(xié)議
- 2025版購貓合同:貓咪健康養(yǎng)護(hù)與領(lǐng)養(yǎng)指南3篇
- 智能醫(yī)療信息系統(tǒng)安裝協(xié)議
- 社區(qū)服務(wù)點(diǎn)管理原則
- 旅游景點(diǎn)建筑合同
- 2024-2025學(xué)年高一上學(xué)期期末數(shù)學(xué)試卷(基礎(chǔ)篇)(含答案)
- 2024年01月11073法律文書期末試題答案
- 預(yù)防性侵害安全教育
- 科大訊飛招聘在線測評題
- 《勞動與社會保障法》機(jī)考資料
- 體系工程師年終總結(jié)
- 2023版設(shè)備管理體系標(biāo)準(zhǔn)
- 退役軍犬黃狐閱讀題目
- FMEA培訓(xùn)資料(PPT 57頁)
- 橋式起重機(jī)主梁設(shè)計(jì)說明書
- 職工人事檔案登記表
評論
0/150
提交評論