版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
TEMIC系列射頻卡開發(fā)指南開發(fā)設計簡介:TEMIC系列射頻卡產品包括E5550、E5560卡和U2270B基站芯片。`在開發(fā)過程中由開發(fā)商自行設計基站發(fā)射、接收電路。由于U2270B基站芯片只需少量的驅動電路,并且具有多種供電模式。這給用戶以極大的簡便性和靈活性。用戶可以根據(jù)不同的應用要求快速、簡便的設計出不同特點的基站電路。用戶仍然需要繞制基站天線,一般使用銅制漆包線繞制直徑3CM、100圈的線圈即可。這些特點要求開發(fā)射頻卡應用軟件的同時還要設計基站發(fā)射電路。設計目標:硬件設計:根據(jù)應用環(huán)境(供電條件、功耗要求)的需要設計發(fā)射基站電路。繞制合適的天線線圈,要求達到要求的頻率特性。設計單片機控制接口電路對基站電路進行控制。軟件設計:根據(jù)設計電路的約定設計射頻卡讀寫程序,要求能夠對射頻卡進行完備操作(讀數(shù)據(jù)、寫數(shù)據(jù)、加密控制等),并能夠提供簡便易用的編程接口(函數(shù)封裝)。設計單片機與PC機的通訊程序,設計通訊和命令格式約定等協(xié)議。在PC端還要設計應用程序接口(動態(tài)連接庫.DLL)供上層應用程序調用。實現(xiàn):硬件實現(xiàn):E2270B支持兩種供電方式。一種為+5V直流電源供電,另一種為汽車用+12V電池供電,并且E2270B還具有電壓輸出功能可以給微處理器或其他外圍電路供電。此外,對E2270B還有省電模式和STANDBY控制可選,所以設計基站電路時應中和以上功能的不同要求,設計基站的外圍電路。這里只對幾個常用控制功能的實現(xiàn)加以說明。省電模式:當射頻卡系統(tǒng)應用于汽車、門禁等領域如果對電路的耗電量加以控制(射頻信號發(fā)射的功耗是遠遠大于接觸式IC卡的),可以有效的節(jié)省能耗延長內置電池的壽命。在需要降低功耗的領域可以在無卡檢測的過程中間斷的打開和關閉射頻輸出(E2270B的CFE腳)。也可以使卡處于STANDBY模式(控制U2270B的STANDBY腳)這樣可以極大的降低基站的耗電量。此外用戶也可以使用外加檢測電路的方法如:光電管、紅外檢測等低耗電手段來控制基站的工作這樣可以得到很好的省電要求。串行通訊:假設射頻卡讀寫器為PC機的外圍設備,讀寫器與微機的通訊需要通過串行口進行。根據(jù)需要用戶可以選擇使用各種串行接口電路。這里假設使用RS232串行接口電路。電路原理圖:軟件實現(xiàn):軟件設計要求設計匯編程序完成對射頻卡的完備操作(包括讀操作、寫操作以及命令發(fā)送等)。讀卡程序要求用軟件模擬信號時序,自動檢測同步信號同步后要根據(jù)選擇的編碼方式進行軟件解碼,最后將解碼得到的數(shù)據(jù)流按合理順序存人指定存儲區(qū)。寫卡程序使用開關天線負載的方法對數(shù)據(jù)進行編碼,要求能向IC卡發(fā)射各種組合的數(shù)據(jù)流,完成對IC卡的各種控制功能(注:寫程序只完成向IC卡發(fā)送數(shù)據(jù)的功能,對命令或寫操作的執(zhí)行情況不做檢測,而是由讀卡程序獲取IC卡的反饋信息后再進行比較判斷)。由于E5550卡與E5560卡的特性區(qū)別所以對兩種卡的讀寫程序不盡相同,但兩種卡讀寫程序的設計思想是基本相同的。E5550卡讀寫程序:在介紹E5550卡的讀寫卡程序之前,先要了解該類型卡的讀寫特性。這些特性包括:EEPROM的存儲分配、卡的同步信號、發(fā)射頻率、BITRATE、卡控制塊的結構、寫卡以及其他卡操作的命令格式等。E5550卡內置264位的EEPROM這些存儲區(qū)分為8個BLOCK每塊33位,其中第0位為塊鎖定位,一旦該位被置‘1’則該塊兒數(shù)據(jù)將不能再做任何修改,而且LOCK位是無法恢復的。LOCK位不隨其他位一起發(fā)射到基站(即:LOCK位是不可讀的用戶實際使用的數(shù)據(jù)區(qū)位每塊的后32位共256位)。8個BLOCK中的BLOCK0是作為卡片的控制塊存儲卡的控制信息,BLOCK7是PASSWORD區(qū)在口令加密功能啟動時這里存放卡的讀寫控制密碼,當加密功能沒有使用時該區(qū)也可以存放用戶數(shù)據(jù)。其他六個存儲塊用戶可以用來存放各種數(shù)據(jù)。EEPROM結構如圖:0132LUserDataOrPasswordBlock7LUserDataBlock6LUserDataBlock5LUserDataBlock4LUserDataBlock3LUserDataBlock2LUserDataBlock1LModeDataBlock032BITNottransmittedE5550卡控制塊用于控制卡的各種操作的特性,如:同步信號、數(shù)據(jù)流格式、數(shù)據(jù)流長度、加密、口令喚醒和停止發(fā)射等功能的啟用關閉等。控制塊位于EEPROM的第0塊數(shù)據(jù)區(qū)可由用戶進行編程控制(用戶向卡發(fā)送寫命令給該區(qū)寫入一定格式的數(shù)據(jù)即可)。一般一個應用系統(tǒng)的卡的模式塊的值是統(tǒng)一的,在發(fā)卡時建議寫入數(shù)據(jù)后將該塊的LOCK位置‘1’這樣可以防止對控制塊的誤修改引起卡的操作不正常。E5550卡的控制塊的結構和功能說明如圖:(模式設置將影響讀寫程序的設計)0111121314151617181920212223242526272829303132LRESERVEDBR0MS1MS2PSK0MaxblkSTBt0AORuseSTOPUsePassword下面結合對控制塊的說明,簡單介紹E5550卡的各種工作模式和操作特性:在E5550卡中控制塊的第1位至第11位之間的11位和第32位為保留位,現(xiàn)在沒有使用,用戶可以寫入任何值,建議寫入‘0’用來和其他功能位區(qū)別??刂茐K中的第15位和第24位必須寫入‘0’否則卡將不能正常工作。從第12位至第14位為Bitrate設置位。用戶通過設置這三位的值可以決定卡發(fā)射數(shù)據(jù)時的Bitrate。用戶可按下表中的值進行設置。(一般使用RF/32的BITRATE)第12位第13位第14位BitRate000RF/8001RF/16010RF/32011RF/40100RF/50101RF/64110RF/100111RF/128第16~17位、18~20位以及21~22位結合在一起設定卡發(fā)射數(shù)據(jù)的調制方法,具體配合方式如下表所示。用戶設置16、17位為‘00’時18~20位的設置有效,如果18~19位設置為‘001’、‘010’、‘011’時可繼續(xù)使用第21~22位設置在PSK調制方法下的1617ModuMode00direct181920ModuModeMoreData1Data001Mancheester000direct10Biphase001PSK111Reserved010PSK2011PSK32122PSKCF100FSK1RF/8RF/500RF/2101FSK2RF/8RF/1001RF/4110FSK1aRF/5RF/810RF/8111FSK2aRF/10RF/811reserved頻率變化。第23位用來控制是否啟動AOR(Answer-On-Request)功能。該位設置為‘1’時啟動AOR功能,這時IC卡進入射頻區(qū)域后不主動發(fā)射數(shù)據(jù),而要由基站給IC卡發(fā)射喚醒命令后再發(fā)射數(shù)據(jù)。該功能要求首先啟動口令加密功能,也就是說基站要喚醒一個IC卡時必須在喚醒命令序列中向IC卡發(fā)射口令密碼,IC卡檢測到包含合法口令的喚醒命令時才恢復發(fā)送數(shù)據(jù)。要啟動口令加密功能就要求將控制塊的第28位設置為‘1’。啟動口令加密功能后第7塊數(shù)據(jù)區(qū)將保存IC卡的口令密碼,所以啟動加密功能之前應該事先寫入密碼。如果允許修改密碼則不用鎖定BLOCK7如果密碼永久有效則要在寫入密碼的同時鎖定BLOCK7這樣用戶將不能修改密碼。在加密模式下用戶對卡中數(shù)據(jù)進行任何修改均要求提供密碼驗證。密碼正確時修改操作有效,密碼不正確則修改無效。后面將講到加密模式和非加密模式下的寫命令格式是不同的。為了保護密碼不被未知用戶截獲,用戶在啟動加密功能后還應該對控制塊的第25~27位進行設置。這三位設置的為IC卡發(fā)射數(shù)據(jù)時發(fā)射的最大數(shù)據(jù)塊數(shù)(MaxBlock)這三位的設置和發(fā)射數(shù)據(jù)流的關系如下表:第25位第26位第27位SendBlocks000Onlyblock0001block1010block1~2011block1~3100block1~4101block1~5110block1~6111block1~7當MAXBLK設置為‘0’時IC卡只發(fā)射BLOCK0的數(shù)據(jù)給基站;當設置為‘1’時IC卡只發(fā)射BLOCK1的數(shù)據(jù)給基站;當設置為‘2’時IC卡發(fā)射BLOCK1和BLOCK2的數(shù)據(jù)給基站;設置為‘3’時IC卡發(fā)射BLOCK1至BLOCK3的數(shù)據(jù)該基站其他的依次類推當設置為‘7’時IC卡發(fā)射BLOCK1至BLOCK7的數(shù)據(jù)給基站。在啟動口令模式后MAXBLK的值應小于‘7’這樣IC卡將不發(fā)射存放在第7塊中的數(shù)據(jù)。用戶除了設置以上各項設置項以外,還可以設置IC卡發(fā)射數(shù)據(jù)時的同步信號類型。IC卡可以使用兩種不同的同步信號,它們是SequenceTerminator和BlockTerminator。SequenceTerminator在每個數(shù)據(jù)循環(huán)開始時出現(xiàn)。BlockTerminator在每個BLOCK的數(shù)據(jù)的開始時出現(xiàn)。兩種同步信號可以獨立使用也可以結合使用。同步信號的波形和其與數(shù)據(jù)流的結合情況如下圖所示:(假設MAXBLK=7,使用Manchester編碼。)ClockBlockSequece0UseSTUseBT1OffOff0block1block2block3。。。。block7block1blk2。。。OnOff0block1。。。。。block7block1。。。。。block7blockOffOn0block1block2。。。block7block1block2。。。OnOn0block1block2。。。block7block1block2。。。MAXBLK值與數(shù)據(jù)流的關系圖如下:(假設UseBT=offANDUseST=off)MAXBLK=50Block1。。。。。Block5Block1。。。。。Block5Block1。。。MAXBLK=20Block1Block2Block1Block2Block1Block2。。。。。。MAXBLK=00Block0Block0Block0Block0Block0Block0。。。。。。IC卡發(fā)射數(shù)據(jù)由基站天線接收后,由基站處理后經基站的Output腳把得到的數(shù)據(jù)流發(fā)給微處理器的輸入口。這里基站只完成信號的接收和整流的工作,而信號的解調解碼的工作要由微處理器來完成。微處理器要根據(jù)輸入信號在高電平、低電平的持續(xù)時間來模擬時序進行解碼操作。下面以Manchester編碼、125kHz頻和RF/32的Bitrate的條件下時序為例給出基站讀取數(shù)據(jù)流的時序圖。ClockData00110100Manchester其中:T1T1=128μsT2=256μsT2數(shù)據(jù)流圖如下:BitClockDataOutValidValidA128μsB256μsTs1Ts2TL1TL2上圖所示的是程序檢測跳變的時間基準。圖中陰影部分為跳變的不穩(wěn)定區(qū)間,Valid區(qū)域是穩(wěn)定區(qū)。程序檢測電平跳變是在一個時間區(qū)間以內,如:半個周期的跳變理想狀態(tài)應為128μs如圖中A點所示但實際檢測區(qū)域為Ts1~Ts2(即:凡是時間在Ts1和Ts2之間的跳變信號均視為半個周期的跳變信號)。同樣,在TL1~TL2之間的跳變都可以視為一個周期的跳變。E5550在上圖假設條件下時這四個時間檢測標準點的值為:TS1=70μs,TS2=190μs,TL1=210μs,TL2=300μs現(xiàn)在介紹E5550卡在使用Manchester編碼時的解碼方法。下圖表示Manchester編碼的電平狀態(tài)變化情況。Clock:Data0000Data01:01Data1010Data1111由上圖所示可以看出:當數(shù)據(jù)位為‘1’時跳變總是由低向高,而數(shù)據(jù)位為‘0’時跳變總是由高向低。結合Manchester編碼的特點我們可以這樣進行解碼:在位時鐘周期的半周期處檢測電平的變化情況,如果檢測到電平變化發(fā)生則繼續(xù)判斷變化后的電平情況,是高電平則該位解碼為‘1’,低電平則解碼為‘0’,沒有跳變發(fā)生則可視為信號異常進行出錯處理。IC卡與基站的數(shù)據(jù)交換是雙向的,基站要向IC卡發(fā)送命令和數(shù)據(jù),完成對IC卡各種控制操作。對E5550卡而言,基站可以向卡片發(fā)送的命令有四種格式分別完成四種控制功能。OP10L1DataBits322ADR0StandardWrite101Password32L1DataBits322ADR0PasswordMode101Password32AORWakeUp11StopModulation四種命令分別完成以下功能:StandardWrite:對卡數(shù)據(jù)的普通讀寫,其中‘10’為操作碼,‘L’位為指定數(shù)據(jù)塊的鎖定位,緊接著‘L’位是32位數(shù)據(jù)。數(shù)據(jù)后面是命令要寫入的數(shù)據(jù)塊的塊地址,這里塊地址用3位二進制碼表示。PasswordMode:該操作和StandardWrite操作完成類似功能,只是在PasswordMode啟動后對卡中數(shù)據(jù)的修改就要求提供口令。使用該命令就是要完成PasswordMode下卡中數(shù)據(jù)的修改。命令數(shù)據(jù)流中其他部分和StandardWrite的含義一樣,只是在操作碼和‘L’位之間加入了長度為32位的口令數(shù)據(jù)??ń邮盏矫詈笤趯?shù)據(jù)區(qū)進行修改之前要檢驗命令提供的口令與卡中密碼區(qū)保存的數(shù)據(jù)是否一致,只有兩者一致時IC卡才真正的修改數(shù)據(jù)區(qū)的數(shù)據(jù)。這樣可以防止不知道密碼的非法用戶對卡中數(shù)據(jù)的修改。AORWakeUp:該命令是卡的AOR功能啟動后,基站發(fā)給卡片的喚醒命令。命令由操作字‘10’和32位的口令字組成。使用該命令可以喚醒密碼和命令字中提供的密碼一致的卡片??ㄆ瑔拘押蠹纯上蚧景l(fā)送數(shù)據(jù)。StopModulation:該命令用來關閉IC卡使接收到命令的IC卡進入睡眠狀態(tài)。進入睡眠狀態(tài)的IC卡不再向外發(fā)送數(shù)據(jù),而在接收到AOR命令后再開始發(fā)射數(shù)據(jù)。利用這種機制可以完成一定的防沖撞功能(通常情況下當多個卡片同時進入射頻區(qū)域時,基站是無法讀取數(shù)據(jù)的。這時可以由基站發(fā)射Stop命令,使所有卡片進入睡眠狀態(tài),然后再由基站使用不同的密碼發(fā)射喚醒命令來喚醒密碼相同的卡片。讀寫操作完成后再關閉該卡片,依次可以處理各個卡片?;窘o卡片發(fā)送數(shù)據(jù)時也要對數(shù)據(jù)進行編碼,使數(shù)據(jù)信號加載到天線的發(fā)射信號中。TEMIC公司的系列產品使用一種改變發(fā)射天線負載的方式對信號進行編碼。這種方法使用短暫的RF信號間隔(GAP)來把RF信號分割成不同長短的區(qū)間的方法對數(shù)據(jù)進行編碼。起始GAP一般比其他GAPS略長,用來與卡片同步。在發(fā)送數(shù)據(jù)時一個長度為16~32fieldclocks時間長度的RF區(qū)間表示數(shù)據(jù)為‘0’,一個長度為48~64fieldclocks時間長度的RF區(qū)間表示數(shù)據(jù)為‘1’。在編制程序時可以使用延時中斷RF區(qū)域的方法進行發(fā)送數(shù)據(jù)。發(fā)送數(shù)據(jù)時的RF區(qū)域狀態(tài)如圖:1001RFField:。。。。。GapSStartGapBitZeroBitOne對E5550卡各段區(qū)間的時間長度為: Tgaps=300μs,T1=350μs,T0=100μs最后介紹以下在編制程序時應該注意的一些細節(jié)問題:IC卡發(fā)射數(shù)據(jù)高低位順序:IC卡向基站發(fā)射數(shù)據(jù)時是根據(jù)BLOCK1的設置從第一區(qū)到第MAXBLK區(qū)循環(huán)發(fā)射的。數(shù)據(jù)以選擇的同步信號開始按照塊的順序發(fā)送的。每塊數(shù)據(jù)的發(fā)送是低位在前,高位在后,即先發(fā)送第1位數(shù)據(jù)然后發(fā)送第2位依次類推到第32位(第0位是數(shù)據(jù)塊的鎖定位是不隨數(shù)據(jù)一起發(fā)送的)。對數(shù)據(jù)存儲時應注意字節(jié)地址的選擇:由上面的介紹我們可以知道,E5550卡讀寫的單位為32bit,所以要用4個字節(jié)的空間存儲一個數(shù)據(jù)區(qū)的數(shù)據(jù)。程序中使用移位的方法取輸入口檢測到數(shù)據(jù)位。這就要求字節(jié)內移位方向和字節(jié)間的地址變化有機的結合在一起,否則將出現(xiàn)讀數(shù)據(jù)高低位或字節(jié)間順序與實際順序不一致的情況。寫數(shù)據(jù)時同樣要注意發(fā)送數(shù)據(jù)的高低位順序,特別是發(fā)送數(shù)據(jù)區(qū)地址信息時。如果不注意發(fā)送數(shù)據(jù)的順序則極有可能錯誤的將數(shù)據(jù)寫入其他的數(shù)據(jù)區(qū)中。如:向第1數(shù)據(jù)區(qū)寫數(shù)據(jù)時,地址應為‘001’使用移位操作時應使用循環(huán)左移的方法依次發(fā)送地址信息,如果這里錯誤的使用了循環(huán)右移的方法則卡獲得的實際地址為‘100’寫入的為第4區(qū)的數(shù)據(jù)。最后給出一個E5550卡的讀寫程序以供參考:設計的環(huán)境條件:假設工作在125kHz的射頻頻率下,采用RF/32的BitRate,Manchester編碼,使用SequencesTerminator同步信號,MAXBLK=7,使用ATMEL89C51單片機。讀卡程序框圖:開始單片機初始化單片機初始化;TMOD=#11H;SP=#68H存儲區(qū)的初始化,準備基本讀卡參數(shù)存儲區(qū)的初始化,準備基本讀卡參數(shù)初始化記時器初始化記時器MainMain循環(huán)等待一個穩(wěn)定的低電平循環(huán)等待一個穩(wěn)定的低電平有跳變嗎?N有跳變嗎?Y保存電平狀態(tài),開始記時。保存電平狀態(tài),開始記時。有跳變嗎?N有跳變嗎?Y停止記時,取記時器記時結果停止記時,取記時器記時結果ERRORST>=330μs?ERRORST>=330μs?Y保存電平狀態(tài),開始記時。保存電平狀態(tài),開始記時。有跳變嗎?NN有跳變嗎?Y停止記時,取記時器記時結果停止記時,取記時器記時結果ERRORST<=190μs?ERRORST<=190μs?Y保存電平狀態(tài),開始記時。保存電平狀態(tài),開始記時。有跳變嗎?NN有跳變嗎?Y停止記時,取記時器記時結果停止記時,取記時器記時結果是合法跳變嗎?ERRORSN是合法跳變嗎?ERRORSYT>=300μs?T>=300μs?Y有跳變嗎?N有跳變嗎?YY停止記時,取記時器記時結果停止記時,取記時器記時結果ERRORST<=190μs?ERRORST<=190μs?YY取跳變后的電平狀態(tài)取跳變后的電平狀態(tài)狀態(tài)=狀態(tài)=‘1’?NY當前位為‘當前位為‘0’當前位為‘1’取該位數(shù)據(jù)進數(shù)據(jù)緩沖區(qū)取該位數(shù)據(jù)進數(shù)據(jù)緩沖區(qū) 數(shù)據(jù)接收記數(shù)器+1(Num為設置的讀讀取數(shù)據(jù)位數(shù)數(shù)。)計數(shù)器=Num?結束計數(shù)器=Num?結束YYN保存電平狀態(tài),開始記時。保存電平狀態(tài),開始記時。有跳變嗎?N有跳變嗎?Y是合法跳變嗎?N是合法跳變嗎?Y停止記時,保存當前電平狀態(tài)停止記時,保存當前電平狀態(tài)T>=190μs?T>=190μs?NN開始記時開始記時寫卡程序框圖:開始開始單片機初始化單片機初始化是命令類型1?N是命令類型1?Y是命令類型2?發(fā)送操作碼是命令類型2?發(fā)送操作碼YY是命令類型2?發(fā)送操作碼發(fā)送鎖定位是命令類型2?發(fā)送操作碼發(fā)送鎖定位發(fā)送口令字發(fā)送數(shù)據(jù)流YN發(fā)送口令字發(fā)送數(shù)據(jù)流發(fā)送操作碼發(fā)送操作碼發(fā)送口令字發(fā)送鎖定位發(fā)送地址位發(fā)送口令字發(fā)送鎖定位發(fā)送地址位調延時程序調延時程序發(fā)送數(shù)據(jù)流調延時程序發(fā)送數(shù)據(jù)流調延時程序置輸出位為1置輸出位為1調延時程序發(fā)送地址位調延時程序發(fā)送地址位發(fā)送操作碼發(fā)送操作碼置輸出位為1置輸出位為1調延時程序調延時程序結束結束該程序分為多個子子程序各子程程序的程序框框圖如下:數(shù)據(jù)流發(fā)送子程序序:開始開始初始化計數(shù)器初始化計數(shù)器取一個字節(jié)數(shù)據(jù)至A取一個字節(jié)數(shù)據(jù)至AA左移一位至進位位CA左移一位至進位位CC=0?C=0?NNY發(fā)送數(shù)據(jù)‘發(fā)送數(shù)據(jù)‘0’發(fā)送數(shù)據(jù)‘1’位計數(shù)器+1位計數(shù)器+1字節(jié)發(fā)送結束?字節(jié)發(fā)送結束?NY位計數(shù)器清零位計數(shù)器清零字節(jié)計數(shù)器+1數(shù)據(jù)發(fā)送結束?N數(shù)據(jù)發(fā)送結束?Y結束結束發(fā)送地址子程序::開始開始初始化計數(shù)器初始化計數(shù)器取一個字節(jié)數(shù)據(jù)至A取一個字節(jié)數(shù)據(jù)至AA高低位互換A高低位互換A循環(huán)左移一位A循環(huán)左移一位A左移一位至進位位CA左移一位至進位位CC=0?C=0?NY發(fā)送數(shù)據(jù)‘發(fā)送數(shù)據(jù)‘1’發(fā)送數(shù)據(jù)‘0’位計數(shù)器+1位計數(shù)器+1數(shù)據(jù)發(fā)送結束?N數(shù)據(jù)發(fā)送結束?Y結束結束其他子程序和以上上兩個類似,分分別完成發(fā)送送指定數(shù)據(jù)流流的作用。此此外還要編制制四個延時子子程序,分別別代表LGAP_DDELAY、SGAP__DELAYY、ONE_DEELAY、ZERO__DELAY。讀寫程序調用接口口:讀卡程序入口參數(shù)數(shù):參數(shù)名功能R0存存放讀取數(shù)據(jù)據(jù)的存儲緩沖沖區(qū)的首地址址指針 R1保存輸入口口電平狀態(tài)的的R2讀取數(shù)據(jù)的的位計數(shù)器R3字節(jié)內數(shù)據(jù)據(jù)位記數(shù)R4緩沖區(qū)字節(jié)節(jié)計數(shù)器R5定時器時間間的暫存器R6讀數(shù)據(jù)塊計計數(shù)器R7輸入口電平平狀態(tài)暫存寫卡程序入口參數(shù)數(shù):參數(shù)名功能R0欲寫入數(shù)據(jù)據(jù)的暫存區(qū)的的地址指針R1卡密碼的暫暫存區(qū)的地址址指針R2操作的命令令代碼 R3欲寫寫入數(shù)據(jù)的卡卡中EEPROOM塊的塊地址址00位指令執(zhí)行結結束標志01位命令中的LOCK位值程序源代碼:讀卡程序代碼:該程序完成功能為為,讀取E5550卡中的7個Blockk中的數(shù)據(jù),存存入片內地址址30H開始的28個字節(jié)中。并并比較卡中第第4塊中的數(shù)據(jù)據(jù)是否為14H114H144H14HH,如果是則則提示綠燈亮亮,否則提示示紅燈亮。程程序在ATMELL89C51//6MHz條件下運行行。卡片的模模式設置如前前所示。ORG00000HAJMPTEEST;------------------------------------------------------------------;---------------------MAIINFUNNCTIONN---------------------------;------------------------------------------------------------------TEST:MOVSPP,#68HHMOVTMMOD,#111H;單片機初初始化MOV4CCH,#144H;準備比較較數(shù)據(jù)MOV4DDH,#144HMOV4EEH,#144HMOV4FFH,#144HACALLLGRREENACALLLREEDACALLLALLL;單片機自自檢提示TEST0:ACALLLREEAD;讀卡子程程序ACALLLCOOMP;比較子程程序JNB000H,TESST1ACALLLGRREEN;比較正確確提示AJMPTEEST2TEST1:ACALLLREED;比較錯誤誤提示TEST2:ACALLLDEELAYAJMPTEEST0RET;結束;------------------------------------------------------------------;--------------------READDFUNCCTION----------------------------;------------------------------------------------------------------READ:MOVA,,#00HREADD:CLR000HMOVR55,#00HH;緩存寄存存器清零‘R5’MOVR66,#07HH ;讀7個數(shù)據(jù)塊‘R6’MOVB,,R6MOVA,,#20HMULABBMOVR22,A;計算讀數(shù)數(shù)據(jù)位數(shù)總和和‘R2’MOVB,,R6MOVA,,#04HMULABBMOVR44,A;計算讀出出數(shù)據(jù)的字節(jié)節(jié)數(shù)‘R4’MOVR33,#00HH;緩存寄存存器清零‘R3’MOVR00,#30HHLOOPR:MMOV@R00,#00HHINCR00DJNZR44,LOOPPR;清數(shù)據(jù)存存儲區(qū)數(shù)據(jù)MOVR00,#30HH;置數(shù)據(jù)存存儲區(qū)首地址址‘ R0’MOVR11,#00HH;狀態(tài)寄存存器清零‘R1’MAIN:CCLRTR00MOVTHH0,#000HMOVTLL0,#000H;記時器初初始化MAINL:JBP11.1,MAAINLJBP11.1,MAAINLJBP11.1,MAAINLJBP11.1,MAAINLJBP11.1,MAAINLMOVR11,#00HHNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOPNOP;循環(huán)等待待穩(wěn)定低電平平MAIN0:MOVA,,#00HMOVC,,P1.1RLCAMOVR77,AXRLA,,R1JNZMAAINM;跳變檢測測NOPNOPNOPNOPNOPNOPNOPAJMPMAAIN0MAINM:MOVB,,R7MOVR11,BMOVTHH0,#000HMOVTLL0,#077HSETBTRR0;開始記時時NOPNOPNOPNOPNOPMAIN1:MOVA,,#00HMOVC,,P1.1RLCAMOVR77,AXRLA,,R1JNZMAAIN2;跳變檢測測NOPNOPNOPNOPNOPNOPNOPAJMPMAAIN1MAIN2:MOVB,,R7MOVR11,BCLRTRR0CLRCMOVA,,#0AFHHSUBBA,,TL0JCRIIGHT;是否為一一個半位周期期AJMPMAAINRIGHT:MOVTHH0,#000HMOVTLL0,#077HSETBTRR0;從新開始始記時MAIN5:MOVA,,#00HMOVC,,P1.1RLCAMOVR77,AXRLA,,R1JNZMAAIN6;跳變檢測測NOPNOPNOPNOPNOPNOPNOPAJMPMAAIN5MAIN6:MOVB,,R7MOVR11,BCLRTRR0CLRCMOVA,,#5FHSUBBA,,TL0JNCRIIGHT2;是否為半半個位周期的的跳變AJMPMAAINRIGHT2:MOVTHH0,#000HMOVTLL0,#077HSETBTRR0MAIN7:MOVA,,#00HMOVC,,P1.1RLCAMOVR77,AXRLA,,R1JNZMAAIN8;檢測跳變變NOPNOPNOPNOPNOPNOPNOPAJMPMAAIN7MAIN8:CLRTRR0MOVR55,TL0MOVB,,R7MOVR11,BCLRCMOVA,,#5FHSUBBA,,TL0JCMAAIN9;是否為合合法跳變AJMPMAAINMAIN9:MOVTHH0,#000H1MOVTLL0,#100HSETBTRR0MOVA,,#96H;跳變類型型SUBBA,,R5JCREEAD2;跳變是數(shù)數(shù)據(jù)位跳變‘0’;數(shù)據(jù)流以‘0’開頭------------------------------------------------------------------;------------------------------------------------------------------READ1:MOVA,,#00H;是同步結結束跳變MOVC,,P1.1;數(shù)據(jù)流以‘1’開頭RLCAMOVR77,AXRLA,,R1JNZREEAD11;檢測跳變變NOPNOPNOPNOP同步信號NOPNOPAJMPREEAD1READ11:MOVB,,R7MOVR11,BCLRTRR0CLRCMOVA,,#5FH同步信號SUBBA,,TL0JNCREEAD2;記時時間間是否為半個個周期AJMPERRRORRREAD2:MOVA,,@R0;數(shù)據(jù)位解解碼,存放數(shù)數(shù)據(jù)進CJNER11,#01HH,READD5;數(shù)據(jù)緩沖沖區(qū)CLRC;數(shù)據(jù)位為‘0’AJMPREEAD6READ5:SETBC;數(shù)據(jù)位為‘1’READ6:RLCA;取數(shù)據(jù)位位進寄存器AMOV@RR0,AINCR33;字節(jié)內位位記數(shù)器+1CJNER33,#08HH,READD7;是否滿一一個字節(jié)MOVR33,#00HH;字節(jié)滿時時字節(jié)內記數(shù)數(shù)器清零INCR00;字節(jié)計數(shù)數(shù)器+1READ7:DJNZR22,READD8;數(shù)據(jù)讀取取是否結束??RET;結束操作作返回調用程程序READ8:MOVTHH0,#000HMOVTLL0,#100HSETBTRR0READ3:MOVA,,#00HMOVC,,P1.1RLCAMOVR77,AXRLA,,R1JNZREEAD4;檢測跳變變NOPNOPNOPNOPNOPNOPNOPAJMPREEAD3READ4:CLRTRR0MOVB,,R7MOVR11,B;11CLRCMOVA,,#5FH;00SUBBA,,TL0JCREEAD2;跳變時間間如果是一個個周期,則認認為MOVTHH0,#000H;相鄰兩位位數(shù)據(jù)相反。跳跳轉區(qū)數(shù)據(jù)處處MOVTLL0,#077HSETBTRR0AJMPREEAD1;跳變時間間是半個周期期,則認為相相鄰ERRORR:AJMPREEADD;兩位數(shù)據(jù)據(jù)相同,需要要繼續(xù)檢測跳跳變。;-----------------------------------------------------------;----------------DEELAYFFUNCTIION------------------------;----------------------------------------------------------;10DELAY:MOVR00,#30HHDELAY0:MOVR11,#30HH;01DELAY1:NOPNOPNOPNOPNOPNOPNOPNOPDJNZR11,DELAAY1DJNZR00,DELAAY0RET;-----------------------------------------------------------;----------------GRREENFUNCCTION---------------------;-----------------------------------------------------------GREEN:MOVR22,#07HHGREEN1:CLRP11.2ACALLLDEELAYSETBP11.2ACALLLDEELAYDJNZR22,GREEEN1RET;-----------------------------------------------------------;----------------REEDFUNNCTIONN--------------------------;-----------------------------------------------------------RED:MOVR22,#07HHRED1:CLRP11.3ACALLLDEELAYSETBP11.3ACALLLDEELAYDJNZR22,RED11RET;-----------------------------------------------------------;----------------ALLLFUNNCTIONN--------------------------;-----------------------------------------------------------ALL:MOVR22,#07HHALL1:CLRP11.3CLRP11.2ACALLLDEELAYSETBP11.3SETBP11.2ACALLLDEELAYDJNZR22,ALL11RET;----------------------------------------------------------;-----------------CCOMPARRAFUNNCTIONN-------------------;----------------------------------------------------------COMP:MOVR22,#04HHMOVR00,#40HHMOVR11,#4CHHCOMP1:MOVA,,@R0CLRCSUBBA,,@R1JNZCEERRORINCR11INCR00DJNZR22,COMPP1SETB000HRETCERROR:CLR000HRET寫卡程序代碼:該寫卡程序完成功功能為:根據(jù)據(jù)用戶提供參參數(shù),向E5550卡發(fā)射指定定命令序列。該該程序可以完完成發(fā)射所有有四種命令格格式命令的功功能。測試條條件和上面給給出的讀卡程程序相同。ORG00000HAJMPMAAIN;--------------------------------------------------;---------------maiinfunnctionn-----------------;--------------------------------------------------MAIN:MOVSPP,#68HHMOVR00,#30HHMOVR11,#4CHHMOV300H,#000HMOV311H,#088HMOV322H,#800HMOV333H,#0EE8HMOV4CCH,#000HMOV4DDH,#011HMOV4EEH,#022HMOV4FFH,#033HMOVR22,#02HHMOVR33,#00HHCLR000HCLR011HCLR022HCOMP1:CJNER22,#01HH,COMPP2RDA:CLRP11.0NOPACALLLSEENDCACALLLSEENDLACALLLSEENDDACALLLSEENDAACALLLDEELAYGACALLLDEELAYGACALLLDEELAYGSETB000HRETCOMP2:CJNER22,#02HH,COMPP3RDP:CLRP11.0NOPACALLLSEENDCACALLLSEENDPACALLLSEENDLACALLLSEENDDACALLLSEENDAACALLLDEELAYGACALLLDEELAYGACALLLDEELAYGSETB000HRETCOMP3:CJNER22,#03HH,COMPP4RWP:CLRP11.0NOPACALLLSEENDCACALLLSEENDPSETBP11.0ACALLLDEELAYGACALLLDEELAYGACALLLDEELAYGACALLLDEELAYGSETB000HRETCOMP4:CJNER22,#04HH,WRITTERRST:CLRP11.0NOPACALLLSEENDCSETBP11.0ACALLLDEELAYGACALLLDEELAYGACALLLDEELAYGACALLLDEELAYGSETB000HRETWRITER:CLR000HRET;--------------------------------------------------;------------senddatafuncttion--------------;--------------------------------------------------SENDD:NOPNOPNOPNOPNOPCLRCMOVR44,#00HHMOVR55,#00HHLOOPD:MOVA,,@R0LOOPS:RLCASETBP11.0JCSEENDOACALLLDEELAYZNOPAJMPSEENDNSENDO:ACALLLDEELAYONOPNOPNOPSENDN:CLRP11.0ACALLLDEELAYLINCR44CJNER44,#08HH,SENDDD0MOVR44,#00HHINCR55INCR00CJNER55,#04HH,SENDDD1RETSENDD0:NOPNOPNOPNOPNOPNOPNOPNOPNOPNOPAJMPLOOOPSSENDD1:NOPNOPNOPNOPAJMPLOOOPD;--------------------------------------------------;-----------ssendaaddrsssfuncction------------;--------------------------------------------------SENDA:CLRCMOVR44,#00HHMOVA,,R3SWAPARLCALOOPA:RLCASETBP11.0JCSEENDAOACALLLDEELAYZNOPAJMPSEENDANSENDAO:ACALLLDEELAYONOPNOPNOPSENDAN:CLRP11.0ACALLLDEELAYGINCR44CJNER44,#03HH,LOOPPASETBP11.0ACALLLDEELAYGRET;-----------------------------------------------;-----------ssendccodeffunct
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年三季度報天津地區(qū)A股流動負債合計排名前十大上市公司
- 課題申報參考:教育家精神賦能高校師德師風建設研究
- 二零二五版外資企業(yè)會計人員聘用與管理服務協(xié)議3篇
- 二零二五年環(huán)境治理擔保合同標的屬性與實施3篇
- 二零二五年度農產品批發(fā)市場合作協(xié)議書4篇
- 2025年湛江貨運從業(yè)資格證怎么考
- 醫(yī)院工作個人工作總結
- 二零二五版?zhèn)€體工商戶雇工勞動合同(文創(chuàng)產業(yè)專用)3篇
- 2025年度智能交通設施安裝與維護承包合作協(xié)議4篇
- 2025年度智慧家居蟲害預防與治理服務合同4篇
- 2024年高純氮化鋁粉體項目可行性分析報告
- 安檢人員培訓
- 山東省濰坊市2024-2025學年高三上學期1月期末 英語試題
- 危險性較大分部分項工程及施工現(xiàn)場易發(fā)生重大事故的部位、環(huán)節(jié)的預防監(jiān)控措施
- 《榜樣9》觀后感心得體會四
- 2023事業(yè)單位筆試《公共基礎知識》備考題庫(含答案)
- 化學-廣東省廣州市2024-2025學年高一上學期期末檢測卷(一)試題和答案
- 2025四川中煙招聘高頻重點提升(共500題)附帶答案詳解
- EHS工程師招聘筆試題與參考答案(某大型央企)2024年
- 營銷策劃 -麗亭酒店品牌年度傳播規(guī)劃方案
- 2025年中國蛋糕行業(yè)市場規(guī)模及發(fā)展前景研究報告(智研咨詢發(fā)布)
評論
0/150
提交評論