




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上曼徹斯特解碼原則+125K EM4100系列RFID卡解碼源程序分析曼徹斯特解碼原則1. 曼徹斯特編碼曼徹斯特編碼(Manchester Encoding),也叫做相位編碼(PE),是一個(gè)同步時(shí)鐘編碼技術(shù),被物理層使用來編碼一個(gè)同步位流的時(shí)鐘和數(shù)據(jù)。曼徹斯特編碼被用在以太網(wǎng)媒介系統(tǒng)中。曼徹斯特編碼提供一個(gè)簡(jiǎn)單的方式給編碼簡(jiǎn)單的二進(jìn)制序列而沒有長(zhǎng)的周期沒有轉(zhuǎn)換級(jí)別,因而防止時(shí)鐘同步的丟失,或來自低頻率位移在貧乏補(bǔ)償?shù)哪M鏈接位錯(cuò)誤。在這個(gè)技術(shù)下,實(shí)際上的二進(jìn)制數(shù)據(jù)被傳輸通過這個(gè)電纜,不是作為一個(gè)序列的邏輯1或0來發(fā)送的(技術(shù)上叫做反向不歸零制(NRZ))。相反地,這些位
2、被轉(zhuǎn)換為一個(gè)稍微不同的格式,它通過使用直接的二進(jìn)制編碼有很多的優(yōu)點(diǎn)。曼徹斯特編碼,常用于局域網(wǎng)傳輸。在曼徹斯特編碼中,每一位的中間有一跳變,位中間的跳變既作時(shí)鐘信號(hào),又作數(shù)據(jù)信號(hào);從高到低跳變表示"1",從低到高跳變表示"0"。還有一種是,每位中間的跳變僅提供時(shí)鐘定時(shí),而用每位開始時(shí)有無跳變表示"0"或"1",有跳變?yōu)?quot;0",無跳變?yōu)?quot;1"。 對(duì)于以上電平跳變觀點(diǎn)有歧義:關(guān)于曼徹斯特編碼電平跳變,在雷振甲編寫的網(wǎng)絡(luò)工程師教程中對(duì)曼徹斯特編碼的解釋為:從低電平到高電平的轉(zhuǎn)換表示
3、1,從高電平到低電平的轉(zhuǎn)換表示0,模擬卷中的答案也是如此,張友生寫的考點(diǎn)分析中也是這樣講的,而計(jì)算機(jī)網(wǎng)絡(luò)(第4版)中(P232頁)則解釋為高電平到低電平的轉(zhuǎn)換為1,低電平到高電平的轉(zhuǎn)換為0。清華大學(xué)的計(jì)算機(jī)通信與網(wǎng)絡(luò)教程計(jì)算機(jī)網(wǎng)絡(luò)(第4版)采用如下方式:曼徹斯特編碼從高到低的跳變是 0 從低到高的跳變是 1 。兩種曼徹斯特編碼是將時(shí)鐘和數(shù)據(jù)包含在數(shù)據(jù)流中,在傳輸代碼信息的同時(shí),也將時(shí)鐘同步信號(hào)一起傳輸?shù)綄?duì)方,每位編碼中有一跳變,不存在直流分量,因此具有自同步能力和良好的抗干擾性能。但每一個(gè)碼元都被調(diào)成兩個(gè)電平,所以數(shù)據(jù)傳輸速率只有調(diào)制速率的1/2。 就是說主要用在數(shù)據(jù)同步傳輸?shù)囊环N編碼方式?!?/p>
4、在曼徹斯特編碼中,用電壓跳變的相位不同來區(qū)分1和0,即用正的電壓跳變表示0,用負(fù)的電壓跳變表示1。因此,這種編碼也稱為相應(yīng)編碼。由于跳變都發(fā)生在每一個(gè)碼元的中間,接收端可以方便地利用它作為時(shí)鐘,因此,這種編碼也稱為自同步編碼?!?. 曼徹斯特編碼(Manchester Encoding),也叫做相位編碼(PE);常用于局域網(wǎng)傳輸。在曼徹斯特編碼中,每一位的中間有一跳變,位中間的跳變既作時(shí)鐘信號(hào),又作數(shù)據(jù)信號(hào)。但在不同的書籍中,曼徹斯特編碼中,電平跳動(dòng)表示的值不同,這里產(chǎn)生很多歧義:1、在網(wǎng)絡(luò)工程師考試以及與其相關(guān)的資料中:位中間電平從高到低跳變表示"0";位中間電平從低到高
5、跳變表示"1"。2、在一些計(jì)算機(jī)網(wǎng)絡(luò)書籍中:位中間 電平從高到低跳變表示"1";位中間電平從低到高跳變表示"0"。在清華大學(xué)出版的計(jì)算機(jī)通信與網(wǎng)絡(luò)教程計(jì)算機(jī)網(wǎng)絡(luò)(第4版)也是這么說的,就以此為標(biāo)準(zhǔn),我們就叫這為標(biāo)準(zhǔn)曼徹斯編碼。至于第一種,我們?cè)谶@里就叫它曼徹斯特編碼。但是要記住,在不同的情況下懂得變通哦,否則會(huì)被老師扣分?jǐn)?shù)的哦 。這兩者恰好相反,千萬別弄混淆了?,F(xiàn)在我們要講的 就是差分曼徹斯特編碼:在信號(hào)位開始時(shí)不改變信號(hào)極性,表示輯"1" 在信號(hào)位開始時(shí)改變信號(hào)極性,表示邏輯"0" ;【注意】
6、:如果在最初信號(hào)的時(shí)候,即第一個(gè)信號(hào)時(shí):如果中間位電平從低到高,則表示0;如果中間位電平從高到低,則表示1;后面的(從第二個(gè)開始)就看每個(gè)信號(hào)位開始時(shí)有沒有跳變來決定:下面我們來舉個(gè)例子,來比較標(biāo)準(zhǔn)曼徹斯特編碼、曼徹斯特編碼、差分曼徹斯特編碼:EM4100系列用的是:曼徹斯特編碼!125K;EM4100系列RFID卡解碼源程序分析1. 我們知道了曼徹斯特編碼原則,那么反過來的過程就是解碼了。EM4100系列用的是:曼徹斯特編碼!2. 傳統(tǒng)只讀射頻卡讀卡器的設(shè)計(jì)一般采用U2270B或EM4095讀寫基站芯片加MCU模式,其成本高、功耗大。本文介紹一種采用一片74HC4060+LM258/358加
7、少量普通元件構(gòu)成的讀卡器電路和處理的程序設(shè)計(jì)方案,電路簡(jiǎn)單、功耗小、成本低。 74HC4060+LM258/358 電路為市面上已非常成熟 RFID-125KHZ-I卡且廣泛采用的低功耗、低成本方案。該方案在門禁、保安、考勤、展覽會(huì)、公園、旅店、餐廳等公共場(chǎng)所的門票、優(yōu)惠卡以及生產(chǎn)過程、郵政包裹、航空鐵路運(yùn)輸、產(chǎn)品包裝、交通等部門的物流、電子標(biāo)簽、防偽標(biāo) 志、一次性票證等眾多領(lǐng)域上占據(jù)半壁江山。3. 推挽式放大電路輸出後接LC串聯(lián)諧振電路,當(dāng)回路固有諧振頻率與輸入訊號(hào)頻率相等時(shí),電路發(fā)生串聯(lián)諧振。本文只要求對(duì)125kHz頻率的訊號(hào)放大,所以根據(jù)串聯(lián)諧振公式計(jì)算電路中元件參數(shù),可得L=737uH
8、,C=2200pF。4. 包絡(luò)檢波電路 感應(yīng)線圈產(chǎn)生諧振電壓約有20V,所以載波訊號(hào)的電壓也約為20V。對(duì)輸入電壓高於500mV檢波,稱為大訊號(hào)檢波,利用二極體單向?qū)щ娞匦约皺z波負(fù)載RC充放電過程實(shí)現(xiàn)。RC參數(shù)的確定需要滿足兩個(gè)條件:1.不產(chǎn)生隋性失真,一般工程上按計(jì)算,f為載波頻率。2.不產(chǎn)生負(fù)峰切割失真,即,m為調(diào)幅系數(shù),R1是交流阻值,R0是直流阻值。聯(lián)立上述兩個(gè)條件,確定檢波電路中R12、C36分別為470k、4700pF。5. 波形整形電路 在單晶片處理之前,整形電路將檢波後的訊號(hào)變成單片機(jī)可以識(shí)別的高低電平。LM358 (LM258) 內(nèi)部整合兩個(gè)運(yùn)放,經(jīng)過兩次整形後可以得到很好的
9、方波訊號(hào)。電路中R16、R17、R18、R19起到分壓作用,確定輸出翻轉(zhuǎn)門限為2.5V;R15、R21將同向輸入的電壓疊加在反向輸入端;C54、C55為耦合電容,能夠隔離直流分量,傳遞交流訊號(hào)。當(dāng)U+大於U-+2.5V時(shí),輸出高電平;當(dāng)U+小於U-+2.5V時(shí),輸出低電平。6. 讀卡程序是根據(jù)EM4100、EM4001系列射頻卡的特點(diǎn)量身定做的一段程序,射頻卡以曼徹斯特編碼,傳輸一個(gè)資料的時(shí)間t=64/125kHz=512s。實(shí)際使用中,一般傳輸時(shí)間為,230s<0.5t<280s。280s<定時(shí)器取樣時(shí)間<512s。所以本文中取樣波形時(shí),定時(shí)器時(shí)間設(shè)定為400s,保證
10、為取樣留有足夠的時(shí)間。原程序分析:1. 定時(shí)器時(shí)間設(shè)定為400s#defineTH0_H 0xfe/ 定時(shí)器0 取樣定時(shí)值設(shè)定為400us#defineTL0_L 0x8f/8f2. 定時(shí)器0中斷優(yōu)先級(jí)最高: PT0=1;3. /曼徹斯特碼同步頭檢測(cè),9個(gè)1采用逐個(gè)前移檢測(cè)法/逐個(gè)前移檢測(cè)法,即每檢測(cè)到一個(gè)數(shù)據(jù),如果是"1",并向數(shù)據(jù)庫寫入1,/如果是"0",就放棄當(dāng)前檢測(cè)的數(shù)據(jù),并向當(dāng)前數(shù)據(jù)流方向移動(dòng)一位,/這樣一來,就保證了不管數(shù)據(jù)流是在何種狀態(tài)下,都能正確無誤地抓取9個(gè)1,/同步頭9個(gè)1的提取成功,曼徹斯特碼譯碼器即和當(dāng)前的數(shù)據(jù)流保持了同步,/并把
11、余下的55位數(shù)據(jù)全部譯完。4. uchar REM_Buffer14;/曼徹斯特碼解碼后得到最終數(shù)據(jù)的緩存013/*曼徹斯特碼解碼后的數(shù)據(jù)放在 REM_Buffer013;REM_Buffer0=0xff 數(shù)據(jù)格式:1111 1111 同步頭,8個(gè)1REM_Buffer1=0x8x 數(shù)據(jù)格式:1xxx xxxx 同步頭,1個(gè)1,x表示無意義REM_Buffer2= 數(shù)據(jù)格式:D00D01D02D03 P0xxx 八個(gè)版本位或廠商信息的前四位,x表示無意義;P0為行效驗(yàn)位REM_Buffer3= 數(shù)據(jù)格式:D10D11D12D13 P1xxx 八個(gè)版本位或廠商信息的后四位,x表示無意義;P1為行
12、效驗(yàn)位REM_Buffer4= 數(shù)據(jù)格式:D20D21D22D23 P2xxx 三十二個(gè)數(shù)據(jù),x表示無意義;P2為行效驗(yàn)位REM_Buffer5= 數(shù)據(jù)格式:D30D31D32D33 P3xxx 三十二個(gè)數(shù)據(jù),x表示無意義;P3為行效驗(yàn)位REM_Buffer6= 數(shù)據(jù)格式:D40D41D42D43 P4xxx 三十二個(gè)數(shù)據(jù),x表示無意義;P4為行效驗(yàn)位REM_Buffer7= 數(shù)據(jù)格式:D50D51D52D53 P5xxx 三十二個(gè)數(shù)據(jù),x表示無意義;P5為行效驗(yàn)位REM_Buffer8= 數(shù)據(jù)格式:D60D61D62D63 P6xxx 三十二個(gè)數(shù)據(jù),x表示無意義;P6為行效驗(yàn)位REM_Buf
13、fer9= 數(shù)據(jù)格式:D70D71D72D73 P7xxx 三十二個(gè)數(shù)據(jù),x表示無意義;P7為行效驗(yàn)位REM_Buffer10= 數(shù)據(jù)格式:D80D81D82D83 P8xxx 三十二個(gè)數(shù)據(jù),x表示無意義;P8為行效驗(yàn)位REM_Buffer11= 數(shù)據(jù)格式:D90D91D92D93 P9xxx 三十二個(gè)數(shù)據(jù),x表示無意義;P9為行效驗(yàn)位REM_Buffer12= 數(shù)據(jù)格式:PC0PC1PC2PC3 0xxx 四個(gè)列效驗(yàn)位,x表示無意義;0為停止位原程序:/2008.10.15/125K;EM4100系列RFID卡解碼/#include <reg52.h>/使用AT89S51/52等
14、系列單片機(jī)頭文件#include <STC12C5410AD.h>/stc系列單片機(jī)專用頭文件#include <intrins.h>#define uint unsigned int/定義 #define uchar unsigned char/定義 #define ulong unsigned long/定義 sbit REM=P21;/ 曼徹斯特編碼輸入端sbit CLK=P33;/產(chǎn)生125KHZ 時(shí)鐘信號(hào)端sbit LED=P25;/ 紅燈sbit SPP=P10;/ 喇叭bit REM_BIT;/ 曼徹斯特碼高、低邊沿跳變標(biāo)志位,bit Efficacy_B
15、IT; /待效驗(yàn)標(biāo)志位,bit P_PC_BIT; /行,列效驗(yàn)標(biāo)志位bit YES_NO_BIT; /效驗(yàn)正確,或效驗(yàn)錯(cuò)誤標(biāo)志位,/YES_NO_BIT=1 表示效驗(yàn)正確;/YES_NO_BIT=0 表示效驗(yàn)錯(cuò)誤。#defineTH0_H 0xfe/ 定時(shí)器0 取樣定時(shí)值設(shè)定為400us#defineTL0_L 0x8f/8f/350420us/375450usuchar U_D_Buffer5;/User_Data/用戶數(shù)據(jù)緩存,ulong long_D;/方法1,卡號(hào)在 long_D 中,不足10位,則在高位前面加 0uchar char_D;/方法2,前兩位卡號(hào)在 char_D 中,u
16、int int_D;/方法2,卡號(hào)后4位卡號(hào)在 int_D 中,uchar volue;/volue 為曼徹斯特碼譯碼時(shí)的臨時(shí)運(yùn)算緩存uchar REM_Buffer14;/曼徹斯特碼解碼后得到最終數(shù)據(jù)的緩存013/*曼徹斯特碼解碼后的數(shù)據(jù)放在 REM_Buffer013;REM_Buffer0=0xff 數(shù)據(jù)格式:1111 1111 同步頭,8個(gè)1REM_Buffer1=0x8x 數(shù)據(jù)格式:1xxx xxxx 同步頭,1個(gè)1,x表示無意義REM_Buffer2= 數(shù)據(jù)格式:D00D01D02D03 P0xxx 八個(gè)版本位或廠商信息的前四位,x表示無意義;P0為行效驗(yàn)位REM_Buffer3=
17、 數(shù)據(jù)格式:D10D11D12D13 P1xxx 八個(gè)版本位或廠商信息的后四位,x表示無意義;P1為行效驗(yàn)位REM_Buffer4= 數(shù)據(jù)格式:D20D21D22D23 P2xxx 三十二個(gè)數(shù)據(jù),x表示無意義;P2為行效驗(yàn)位REM_Buffer5= 數(shù)據(jù)格式:D30D31D32D33 P3xxx 三十二個(gè)數(shù)據(jù),x表示無意義;P3為行效驗(yàn)位REM_Buffer6= 數(shù)據(jù)格式:D40D41D42D43 P4xxx 三十二個(gè)數(shù)據(jù),x表示無意義;P4為行效驗(yàn)位REM_Buffer7= 數(shù)據(jù)格式:D50D51D52D53 P5xxx 三十二個(gè)數(shù)據(jù),x表示無意義;P5為行效驗(yàn)位REM_Buffer8= 數(shù)
18、據(jù)格式:D60D61D62D63 P6xxx 三十二個(gè)數(shù)據(jù),x表示無意義;P6為行效驗(yàn)位REM_Buffer9= 數(shù)據(jù)格式:D70D71D72D73 P7xxx 三十二個(gè)數(shù)據(jù),x表示無意義;P7為行效驗(yàn)位REM_Buffer10= 數(shù)據(jù)格式:D80D81D82D83 P8xxx 三十二個(gè)數(shù)據(jù),x表示無意義;P8為行效驗(yàn)位REM_Buffer11= 數(shù)據(jù)格式:D90D91D92D93 P9xxx 三十二個(gè)數(shù)據(jù),x表示無意義;P9為行效驗(yàn)位REM_Buffer12= 數(shù)據(jù)格式:PC0PC1PC2PC3 0xxx 四個(gè)列效驗(yàn)位,x表示無意義;0為停止位*/uchar code DispTab=
19、9;0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'uchar code Data="Data: "/數(shù)據(jù)uchar code UserData="User Data: "/用戶數(shù)據(jù)uchar code Card_1="Met
20、hods 1 Decimal Card Number: "/方法1:掐頭留尾法提取10位十進(jìn)制卡號(hào):uchar code Card_2="Methods 2 Decimal Card Number: "/方法2:前兩位后4位的微根格式,段間以小數(shù)點(diǎn)或豆號(hào)隔開uchar code DispTab_2=' ','H',','void init()/TMOD=0x21;TH1=0xfd;/11.0592MHz 波特率: 9600TL1=0xfd;PCON&=0x80;SCON=0x40;/AUXR=0x40;/波特
21、率倍增 /11.0592MHz TH0=0x00;/TL0=0x00;/EA=1;ET0=1;TR0=0;TR1=1;ES=0;REN=1;PT0=1;/PT0H=1;/定時(shí)器0中斷優(yōu)先級(jí)最高:第三/PT0H是 stc單片機(jī)特有的寄存器REM=1;CLK=1;SPP=1;LED=1;REM_BIT=1;void delay1(uint z)/ delay(10); 10次為1msuchar x;for(;z>0;z-)for(x=0;x<160;x+)/*void delay()/ _nop_();_nop_();_nop_();*/void Time_interrupt(void
22、) interrupt 1 /定時(shí)器0中斷TR0=0;/關(guān)閉定時(shí)器0,為曼徹斯特碼提取數(shù)據(jù)定時(shí)器void RS232_in(void) interrupt 4/串口中斷EA=0;if(RI=1)/接收 RI=0; /SBUF_RI_Buffer0=SBUF;/RS2323接收緩沖區(qū)/else /if(TI=1)/發(fā)送TI=0;EA=1;void RS232()/通信轉(zhuǎn)輸數(shù)據(jù),發(fā)給 PCuchar i;ulong mm;/ES=0;if(REM_Buffer0=0xff)&&(REM_Buffer1=0x80)/同步頭9個(gè)1的判斷,同步頭正確,進(jìn)入數(shù)據(jù)發(fā)送,否則退出for(i=0
23、;i<6;i+)SBUF=Datai;/" "while(TI=0);TI=0;for(i=0;i<13;i+)SBUF=DispTab(REM_Bufferi/16);/SBUF=REM_Bufferi;/給 PC 發(fā)送REM_Buffer013個(gè)數(shù)據(jù)while(TI=0);/TI=1,表示數(shù)據(jù)發(fā)送完畢,TI=0;/TI清零,并把余下的數(shù)據(jù)繼續(xù)發(fā)送,直到13個(gè)數(shù)據(jù)全部發(fā)送完。SBUF=DispTab(REM_Bufferi%16);while(TI=0);TI=0;SBUF=DispTab_21;/'H'while(TI=0);TI=0;SBU
24、F=DispTab_20;/' 'while(TI=0);TI=0;for(i=0;i<94;i+)SBUF=DispTab_20;/" "while(TI=0);TI=0;/U_D_Buffer5;/User_Data/用戶數(shù)據(jù)緩存,for(i=0;i<11;i+)SBUF=UserDatai;/" "while(TI=0);TI=0;for(i=0;i<5;i+)SBUF=DispTab(U_D_Bufferi/16);while(TI=0);TI=0;SBUF=DispTab(U_D_Bufferi%16);whi
25、le(TI=0);TI=0;SBUF=DispTab_21;/'H'while(TI=0);TI=0;SBUF=DispTab_20;/' 'while(TI=0);TI=0;for(i=0;i<120;i+)SBUF=DispTab_20;/" "while(TI=0);TI=0;for(i=0;i<31;i+)SBUF=Card_1i;/" "while(TI=0);TI=0;/10位十進(jìn)制卡號(hào) Card_1SBUF=DispTablong_D/;/10while(TI=0);TI=0;mm=long_D%
26、;SBUF=DispTabmm/;/9while(TI=0);TI=0;mm=long_D%;SBUF=DispTabmm/;/8while(TI=0);TI=0;mm=long_D%;SBUF=DispTabmm/;/7while(TI=0);TI=0; mm=long_D%;SBUF=DispTabmm/;/6while(TI=0);TI=0; mm=mm%;SBUF=DispTabmm/10000;/5while(TI=0);TI=0;mm=long_D%10000;SBUF=DispTabmm/1000;/4while(TI=0);TI=0;mm=long_D%1000;SBUF=Di
27、spTabmm/100;/3while(TI=0);TI=0;mm=long_D%100;SBUF=DispTabmm/10;/2while(TI=0);TI=0;SBUF=DispTabmm%10;/1while(TI=0);TI=0;/Card_2for(i=0;i<106;i+)SBUF=DispTab_20;/" "while(TI=0);TI=0;for(i=0;i<31;i+)SBUF=Card_2i;/" "while(TI=0);TI=0;SBUF=DispTabchar_D/100;/while(TI=0);TI=0;cha
28、r_D=char_D%100;SBUF=DispTabchar_D/10;/while(TI=0);TI=0;SBUF=DispTabchar_D%10;/while(TI=0);TI=0;SBUF=DispTab_22;/while(TI=0);TI=0;SBUF=DispTabint_D/10000;/while(TI=0);TI=0;int_D=int_D%10000;SBUF=DispTabint_D/1000;/while(TI=0);TI=0;int_D=int_D%1000;SBUF=DispTabint_D/100;/while(TI=0);TI=0;int_D=int_D%1
29、00;SBUF=DispTabint_D/10;/while(TI=0);TI=0;SBUF=DispTabint_D%10;/while(TI=0);TI=0;for(i=0;i<109;i+)SBUF=DispTab_20;/" "while(TI=0);TI=0;/ES=0;void REM_init()/射頻接口初始化CLK=0;/為74HC4060 提供+5V電源,74HC4060得電后輸出125KHZ信號(hào)void REM_Processing()/曼徹斯特碼數(shù)據(jù)提取uchar i,ii;loop:TR0=0;volue=0;for(i=0;i<9;i
30、+)/曼徹斯特碼同步頭檢測(cè),9個(gè)1采用逐個(gè)前移檢測(cè)法/逐個(gè)前移檢測(cè)法,即每檢測(cè)到一個(gè)數(shù)據(jù),如果是"1",并向數(shù)據(jù)庫寫入1,/如果是"0",就放棄當(dāng)前檢測(cè)的數(shù)據(jù),并向當(dāng)前數(shù)據(jù)流方向移動(dòng)一位,/這樣一來,就保證了不管數(shù)據(jù)流是在何種狀態(tài)下,都能正確無誤地抓取9個(gè)1,/同步頭9個(gè)1的提取成功,曼徹斯特碼譯碼器即和當(dāng)前的數(shù)據(jù)流保持了同步,/并把余下的55位數(shù)據(jù)全部譯完。while(REM=1)if(TR0=0)goto loop;/break;TR0=0;TH0=TH0_H;/開啟400us定時(shí)器,TL0=TL0_L;TR0=1;while(TR0=1);TH0=
31、TH0_H;/開啟400us定時(shí)器,同步頭逐個(gè)前移檢測(cè)TL0=TL0_L;TR0=1;if(REM=0)goto loop;if(i<8)volue<<=1;volue|=0x01;if(i=7)REM_Buffer0=volue;REM_Buffer1=0x80;TR0=0;REM_BIT=0;volue=0x00;TH0=TH0_H;/400usTL0=TL0_L; /下降TR0=1;for(i=2;i<13;i+)/曼徹斯特碼解碼 for(ii=0;ii<5;ii+)/曼徹斯特碼解碼while(TR0=1);if(REM=1)if(REM_BIT=0)whi
32、le(REM=1);/曼徹斯特碼跳變?yōu)楦唠娖絖nop_();_nop_();_nop_();_nop_();/抗抖動(dòng)while(REM=1);/_nop_();_nop_();_nop_();_nop_();/抗抖動(dòng)while(REM=1);/volue<<=1;/用左移指令把"1"移入voluevolue|=0x08;/跳變的瞬間提取數(shù)據(jù),TH0=TH0_H;/開啟400us定時(shí)器,為下次提取數(shù)據(jù)提供參考TL0=TL0_L;TR0=1;REM_BIT=0;/曼徹斯特碼標(biāo)志位置"0"else /if(REM_BIT=1)while(REM=1
33、);/曼徹斯特碼跳變?yōu)楦唠娖絖nop_();_nop_();_nop_();_nop_();/抗抖動(dòng)while(REM=1);_nop_();_nop_();_nop_();_nop_();/抗抖動(dòng)while(REM=1);volue<<=1;/用左移指令把"1"移入voluevolue|=0x08;/跳變的瞬間提取數(shù)據(jù),TH0=TH0_H;/開啟400us定時(shí)器,為下次提取數(shù)據(jù)提供參考TL0=TL0_L;TR0=1;REM_BIT=0;/曼徹斯特碼標(biāo)志位置"0"else /if(REM=0)if(REM_BIT=0)while(REM=0)
34、;/曼徹斯特碼跳變?yōu)橄陆笛豞nop_();_nop_();_nop_();_nop_();/抗抖動(dòng)while(REM=0);_nop_();_nop_();_nop_();_nop_();/抗抖動(dòng)while(REM=0);volue<<=1;/用左移指令把"0"移入volueTH0=TH0_H;/開啟400us定時(shí)器,為下次提取數(shù)據(jù)提供參考TL0=TL0_L;TR0=1;REM_BIT=1;/曼徹斯特碼標(biāo)志位置"1"else /if(REM_BIT=1)while(REM=0);/曼徹斯特碼跳變?yōu)橄陆笛豞nop_();_nop_();_nop
35、_();_nop_();/抗抖動(dòng)while(REM=0);_nop_();_nop_();_nop_();_nop_();/抗抖動(dòng)while(REM=0);volue<<=1;/用左移指令把"0"移入volueTH0=TH0_H;/開啟400us定時(shí)器,為下次提取數(shù)據(jù)提供參考TL0=TL0_L;TR0=1;REM_BIT=1;/曼徹斯特碼標(biāo)志位置"1"REM_Bufferi=volue;volue=0x00;void Efficacy()/數(shù)據(jù)效驗(yàn)uchar i,ii,cache,cache_1,counter;/counter=0;for(
36、i=2;i<12;i+)/行效驗(yàn)counter=0;cache=REM_Bufferi;cache_1=REM_Bufferi;for(ii=0;ii<4;ii+)cache&=0x80;if(cache=0x80)counter+;cache_1<<=1;cache=cache_1;if(counter=0)|(counter=2)|(counter=4)Efficacy_BIT=0;else if(counter=1)|(counter=3)Efficacy_BIT=1;cache=REM_Bufferi;cache&=0x08;if(cache=0
37、x08)P_PC_BIT=1;else P_PC_BIT=0;if(Efficacy_BIT=P_PC_BIT)YES_NO_BIT=1; /表示效驗(yàn)正確elseYES_NO_BIT=0; /表示效驗(yàn)錯(cuò)誤if(YES_NO_BIT=0)/效驗(yàn)錯(cuò)誤,無條件返回return;cache_1=0x80;for(i=0;i<4;i+)/列效驗(yàn)counter=0;for(ii=2;ii<12;ii+)cache=REM_Bufferi;cache&=cache_1;if(cache=cache_1)counter+=1;if(counter=0)|(counter=2)|(counter=4)|(counter=6)|(counter=8)|(counter=10)Efficacy_BIT=0;else if(counter=1)|(counter=3)|(counter=5)|(counte
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 旅游類自媒體賬號(hào)定制化運(yùn)營及推廣補(bǔ)償協(xié)議
- 裝修安裝免責(zé)協(xié)議書
- 道路損壞補(bǔ)償協(xié)議書
- 車輛洗車承包協(xié)議書
- 貸款展期還款協(xié)議書
- 車禍出院賠償協(xié)議書
- 車輛協(xié)助解壓協(xié)議書
- 車輛損傷賠付協(xié)議書
- 餐飲物業(yè)轉(zhuǎn)讓協(xié)議書
- 人才引進(jìn)安家費(fèi)協(xié)議書
- 內(nèi)部控制風(fēng)險(xiǎn)評(píng)估
- 2023屆廣東省六校聯(lián)盟高三上學(xué)期第三次聯(lián)考語文試題2
- 環(huán)境生態(tài)學(xué)試題及答案
- GB/T 9116-2010帶頸平焊鋼制管法蘭
- GB/T 31974-2015鈍化顆粒鎂
- GB/T 21709.5-2008針灸技術(shù)操作規(guī)范第5部分:拔罐
- GA 124-2013正壓式消防空氣呼吸器
- 企業(yè)生產(chǎn)安全隱患排查獎(jiǎng)勵(lì)臺(tái)賬
- 園林綠化養(yǎng)護(hù)技術(shù)標(biāo)-投標(biāo)書
- DB22-T 5056-2021預(yù)拌砂漿應(yīng)用技術(shù)標(biāo)準(zhǔn)-(高清正版)
- 經(jīng)典分鏡教程-電影分鏡頭畫面設(shè)計(jì)機(jī)位圖設(shè)計(jì)課件
評(píng)論
0/150
提交評(píng)論