版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、曼彻斯特解码原则+K-E M系列RFID卡解码源程序分析作者:日期:曼彻斯特解码原则+125K EM 4 10 0系列R FID卡解码源程序分析曼彻斯特解码原则1.曼彻斯特编码Encoding),也叫做相位编码 (P E),是一个同步时钟曼彻斯特编码 (Ma nchester编码技术,被物理层使用来编码一个同步位流的时钟和数据。曼彻斯特编码被用在以 太网媒介系统中。曼彻斯特编码提供一个简单的方式给编码简单的二进制序列而没有 长的周期没有转换级别,因而防止时钟同步的丢失,或来自低频率位移在贫乏补偿的模拟链接位错误。在这个技术下,实际上的二进制数据被传输通过这个电缆,不是作为一个序列的逻辑1或0来
2、发送的(技术上叫做反向不归零制(NRZ )。相反地,这些位被转换为一个稍微不同的格式,它通过使用直接的二进制编码有很多的优点。曼彻斯特编码,常用于局域网传输。在曼彻斯特编码中,每一位的中间有一跳变,中间的跳变既作时钟信号,又作数据信号;从高到低跳变表示” 1 ",从低到高跳变表示0"。还有一种是 差分曼彻斯特编码,每位中间的跳变仅提供时钟定时,而用每位开始时有无跳变表示"0"或"1",有跳变为"0",无跳变为” 1 ”。对于以上电平跳变观点有歧义:关于曼彻斯特编码电平跳变,在雷振甲编写的1,计V网络工程师教程>
3、;> 中对曼彻斯特编码的解释为:从低电平到高电平的转换表示从高电平到低电平的转换表示0,模拟卷中的答案也是如此,张友生写的考点分析中也是这样讲的,而计算机网络(第4版)中(P232页)则解释为高电平到低电平的转换为1,低电平到高电平的转换为0。清华大学的 计算机通信与网络教程算机网络(第4版)采用如下方式:曼彻斯特编码从高到低的跳变是0从低到高的跳变是两种曼彻斯特编码是将时钟和数据包含在数据流中,在传输代码信息的同时,也将时钟同步信号一起传输到对方,每位编码中有一跳变,不存在直流分量,因此具有自 同步能力和良好的抗干扰性能。但每一个码元都被调成两个电平,所以数据传输速率 只有调制速率的就
4、是说主要用在数据同步传输的一种编码方式。【在曼彻斯特编码中,用电压跳变的相位不同来区分1和0 ,即用正的电压跳变表示0,用负的电压跳变表示1。因此,这种编码也称为相应编码。由于跳变都发生在每一个码元的中间,接收端可以方便地利用它作为位同步 时钟,因此,这种编码也称为自同步编码。】2.曼彻斯特编码(Ma nche st er E n c o ding),也叫做相位编码(PE);常用于局域网传输。0 I 1 I 1 I COlli數字信寻I I ; I I I I I E,1一在曼彻斯特编码中,每一位的中间有一跳变,位中间的跳变既作时钟信号,又作数据信号。但在 不同的书籍中,曼彻斯特编码中,电平跳
5、动表示的值不同,这里产生很多歧义:1?、在网络工程师考试以及与位中间 电平从高至0";?位中间 电平从低到高跳变表示机网络书籍中:?位中间 电平从高到低跳变表示 "1" ; ?位中间电平从低到高跳变表示”0”。?在清华大学岀版的计算机通信与网络教程计算机网络(第4版)也是这么说的,就以此为标准我们就叫这为 标准曼彻斯编码。至于第一种,我们在这里就叫它 曼彻斯特编码。但是要记住,在 不同的情况下懂得变通哦,否则会被老师扣分数的哦。这两者恰好相反,千万别弄混淆了。现在我们要讲的 就是差分曼彻斯特编码:?在信号位 开始时不改变信号极性,表示辑"1"在
6、信号位 开始时改变信号极性,表示逻辑” 0" ;?【注意】:如果在最初信号的时候,即第一个信号 时:?如果中间位电平从低到高 ,则表示0;如果中间位电平从高到低,则表示1;后面的(从第二个开始)就看每个信号位开始时有没有跳变来决定:?下面我们来举个例子,来比较标准曼彻斯特编码、曼彻斯特编码、差分曼彻斯特编(0码:EM4100系列用的是:曼彻斯特编码!尸斗£®传送S舸)觀挺时秽 LrLfT_n_j"LrLrLJu_u0i_r125K;EM4100系列RFID卡解码源程序分析1. ?我们知道了曼彻斯特编码原则,那么反过来的过程就是解码了。Dilli LU !
7、 U m U 1 m I UI I I ; I I I I I IEM4100系列用的是:曼彻斯特编码!2.传统只读射频卡读卡器的设计一般采用U2270B或EM4095读写基站芯片加MC U模式,其成本高、功耗大。本文介绍一种采用一片74HC4060+LM 2 58/3 58加少量普通元件构成的读卡器电路和处理的程序设计方案,电路简单、功耗小、成本低。74 HC 4 0 60 +L M2 58/358电路为市面上已非常成熟R FI D- 1 25KHZ-I卡且广泛采用的低功耗、低成本方案。该方案在门禁、保安、考勤、展览会、公园、旅店、餐厅等公共场所的门票、优惠卡以及生产过程、邮政包裹、航空铁路
8、运输、产品包装、交通等部门的物流、电子标签、防伪标志、一次性票证等众多领域上占据半壁江山。3. 推挽式放大电路输出後接L C串联谐振电路,当回路固有谐振频率与输入讯号频率相等时,电路发生串联谐振。本文只要求对 125kHZ频率的讯号放大,所以根据串联谐振公式 Eg 后)计算电路中元件参数,可得L = 7 3 7uH , C =2200pF。4. 包络检波电路感应线圈产生谐振电压约有2 0 V,所以载波讯号的电压也约为20V。对输入电压高於500mV检波,称为大讯号检波,利用二 极体单向导电特性及检波负载 RC充放电过程实现。RC参数的确定需要满足两个条件:1不产生隋性失真,一般工程上按fxxg
9、w计算,f为载波频率。2.不产生负峰切割失真,即m坛尺代,m为调幅系数,R1是交流阻值,R0是直流阻值。联立上述两个条件,确定检波电路中R12、C36 分别为 470 kQ、47 0 0 pF。5. 波形整形电路在单晶片处理之前,整形电路将检波後的讯号变成单片机可以识别的高低电平sL M3 5 8 (LM258 )内部整合两个运放,经过两次整形後可以得到很好的方波讯号。电路中R16、R1 7、R18、R19起到分压作用,确定输出翻转门限为2 .5V; R1 5、R21将同向输入的电压叠加在反向输入端;C5 4、C5 5为耦合电容,能够隔离直流分量,传递交流讯号。当 U+大於U +2 .5V时,
10、输出高电平;当U +小於U-+2 . 5V时,输出低电平。6.读卡程序是根据EM4100、E M4001系列射频卡的特点量身定做的一段程序,射频卡以曼彻斯特编码,传输一个资料的时间t=64/125kH z= 512实际使用中,一般传输时间为,2 30卩SO .5 t2 8 0u s 280 us 定时器取样时间512卩s所以本文中取样波形时,定时器时间设定为400 us,保证为取样留有足够的时间。原程序分析:1.定时器时间设定为40 Os# defl neTH 0_ HOxfe/ 定时器0取样定时值设定为400us#def l ne TL O L O x 8 f/8f 2.定时器0中断优先级最
11、高:PT 0=1;3.曼彻斯特码同步头检测,9个1采用逐个前移检测法逐个前移检测法,即每检测到一个数据,如果是"1",并向数据库写入1, /如果是"0",就放弃当前检测的数据,并向当前数据流方向移动一/这样一来,就保证了不管数据流是在何种状态下,都能正确无误地抓取9个1,同步头9个1的提取成功,曼彻斯特码译码器即和当前的数据流保持了同步,并把余下的55位数据全部译完。?RE M _Buffe r 3=数据格式:D10D11D12D1 3 P1xxx八个4. uch a rR EM_ B uff er 14;/ /曼彻斯特码解码后得到最终数据的缓存0 1
12、3 /*曼彻斯特码解码后的数据放在 REMBuf f er :0 1 3;R EM_B uf fe r 0 =0 x ff 数据格式:1 111 11 11 同步头,8 个 1REM_Bu f f er 1= 0x8x 数据格式:1xxx x x x x 同步头,1个1,x表示无意义REM_Bu f fer 2=数据格式:D 00 D0 1D 02D03 P0xxx 八个版本位或厂商信息的前四位,x表示无意义;P0为行效验位版本位或厂商信息的后四位,x表示无意义;P 1为行效验位RE M_Bu ff er 4=数据格式:D20D21D22D2 3 P 2xx x 三十二个数据,x表示无意义;P
13、 2为行效验位R E M_Buf f er5=数据格式:D 30 D 31D 3 2D33 P3xxx三十二个数据,x表示无意义;P3为行效验位RE M_Buffe r 6:=数据格式:D40D4 1 D 4 2D43 P4x xx十二个数据,x表示无意义;P4为行效验位REM_B U ffer7=数据格式:D5 0 D51D52D 5 3 P5 xxx 三十二个数据,x表示无意义;P5为行效验位RE M_B u f fer 8 =数据格式:D6 0D6 1D6 2 D6 3 P6xx x三十二个数据,x表示无意义;P6为行效验位R E M_ Buffe r 9=数据格式:D70D71 D 7
14、2D7 3 P 7x xx三十二个数据,x表示无意义;P 7为行效验位REM _Buf f er 10 =数据格式:D80D81D82 D 83 P 8xxx 三十二个数据,x表示无意义;P8为行效验位R EM_Buffer : 11 = 数据格式:D 9 0D 9 1D 9 2D93 P9xxx十二个数据,x表示无意义;P 9为行效验位R EM_Buf f er 12:=数据格式:PC0P C1PC2PC3 0xxx 四个列效验位,x表示无意义;0为停止位原程序:/ 125K;EM4 1 00 系列 R F I D 卡解码/2 00 8 .1 0 .1 5/ /# in elude <
15、 re g52.h>/ 使用 AT89S5 1 /5 2等系列单片机头文#i n c lude < ST C 1 2C5 41 0 A D .h >/s tc 系列单片机专用头文#i ncl u d e < intrin s.h>#de f ine ui n tu nsi g ned i nt/定义# d e f ine ucharu nsignedchar /定义# d efine TL 0 L0x8f /8f#define u l o n g unsigned long /定义 sbit R EM二P" 1 ;/曼彻斯特编码输入端s bit CL K
16、=P3八3;/产生1 25K HZ时钟信号端L ED二P2 人 5; / 红灯sbits PP二P19/ 喇叭REM_BIT; /曼彻斯特码高、低边沿跳变标志位,bitE f fi c acy _BIT;待效验标志位,b itP_ P C_BIT;/ /行,列效验标志位YE S _NO BI T ;/效验正确,或效验错误标志位,/ Y ES_NO_BIT =1表示效验正确;/YES NO BIT= 0表示效验错误。#def i n e TH0 H0 xfe/定时器0取样定时值设定为400us/ 3 504 20us/ 3754 5 0 usu ch arU _ D _B uffer5;/ /U
17、s er_Data/用户数据缓存,ul o ng long_D;/方法1,卡号在 Iong_D 中,不足10位,则在高位前面加 0uchar cha r_D ;方法2,前两位卡号在ch a r_D中,u in tint_D; /方法2,卡号后4位卡号在in t _D中,ucharvolue; /vo 1 u e为曼彻斯特码译码时的临时运算缓存uch arR E M_Buffer1 4 ;/曼彻斯特码解码后得到最终数据的缓存013/*曼彻斯特码解码后的数据放在R EM_Buff e r013;RE M_Buf f er 0=0xff 数据格式:1111 1111同步头,8 个 1RE M_ B
18、uf f er 1 =0x8x 数据格式:1 x xx x xxx 同步头,1 个 1 ,x表示无意义版本位或厂商信息的前四位,x表示无意义;P 0为行效验位REM_Buff e r2=数据格式:D0 0 D01D 02 D 0 3 P0xxx八个R EM_B uf f er :3=数据格式:D1 0 D11D 12D1 3 P1XX X八个版本位或厂商信息的后四位,X表示无意义 ;P1为行效验位R EM_Buff e r 4 =数据格式:D20D21D22D23 P 2x xx十二个数据,x表示无意义;P 2为行效验位R E M_B uf fer5=数据格式:D 30D31 D 32D 3
19、3P3XXX 三十二个数据,X表示无意义;P 3为行效验位RE M_B uf fer 6=数据格式:D 40D41D4 2D 43P4 X XX三十二个数据,X表示无意义;P4为行效验位REM_B uff e r7=数据格式:D5 0 D51D 5 2 D 5XX三十二个数据,x表示无意义;P 5为行效验位REM _B u ffer8=数据格式:D 6 0D 61 D 6 2 D 63 P 6xxx三十二个数据,x表示无意义;P6为行效验位R EM_ B uf f er9=数据格式:D7 0 D 7 1 D 7 2D73 P7xxX 三十二个数据,X表示无意义;P7为行效验位RE M_Buf
20、fer 1 0=数据格式:D80D81D82D83 P 8xxX三十二个数据,X表示无意义;P8为行效验位REM_Bu ff er11 =数据格式:D 90D 91D92D9 3P9xxx三十二个数据,X表示无意义;P 9为行效验位REM_Buffe r 12=数据格式:PCOPC1PC2 PC3 0XX X 四个列效验位,x表示无意义;0为停止位*/uch ar code Di sp Tab : = / 0','1','2 ', '3','4 ','5/ 6'/ 7','8 ',/
21、9 / ,'A/ / B','C','D', / E',/ F'uchar co de Dat a="Data: " ; /数据 uch ar code UseiData = " User Data: "/用户数据 uch a r code Card_1= " Me t ho ds 1 Decimal C ard N u m ber: "/ /方法1:掐头留尾法提取10位十进制卡号: uch ar code C ard _2= "Met hod s 2 D e
22、cim a l Card Number:" /方法2:前两位+后4位的微根格式,段间以小数点或豆号隔开uchar code Disp T ab_2 ='/ H',/ ,'V oid init() /?T MOD =0x2 1;TH1 = 0xfd;/1 1 .059 2 MHz 波特率:9 6 00T L1=0xfd;PCON& =0x 80;SCON=0 x4 0;/A UX R =0x4 0 ;/波特率倍增/ 1 1.0592MH z 1 1 5 200:X JBLJOrtSWL 华邈 01 t(Ol)2|e P /(z iU!n)i.A|ep p
23、Q八"=丄 I g lAB爼.=Q31L =ddS0 4 s 者 HOld/Zs 6三蛍-MWWMto ilB/-i=H0丄d/ T =Nad0= S 36qoxo=o I 丄/So X 0 =OHJ6? for( X =0; xvl 60;x+ +)/*delay () /_nop_();_n op_();nop_();*/oid Time inte r rupt(v o id)in ter r upt 1 II定时器0中断T R0=0; /关闭定时器0,为曼彻斯特码提取数据定时器vo id RS 2 32_i n(V oi d)in terru pt 4II 串口中断?EA=0;
24、?f(RI = =1)11 接收RI=0;7/SBUF_R I_Buf f er :0 = SBU F; /R S2323接收缓冲区空Ise /if(TI= 1 )/发送?EA=1;void RS 23 2 ()/通信转输数据,发给PCc har i;ulong mm;7/ ES= 0;?f (R EM_B u ff e r : 0=0 x ff)&&(REM _ Buffe r 1 =0x80) )/同步头9个1的判断,同步头正确,进入数据发送,否则退出?0r(i = 0;iv6;i+ )?BU F = Dat a i ;/""?w hile(Tl二=0
25、);?TI=O;?for(i= 0; i< 13 ; i +)S BUF = Dis p Tab (R E M_Bu f feri/ 1 6);?/ SBUF= REM_E uffer i ; /给 PC 发送 REM_Buf f er 013个数据 ? ?whil e (T I= 0);/TI=1,表示数据发送完毕,?T I= 0;/T I清零,并把余下的数据继续发送,直到13个数据全部发送完。? SBUF = D i spTab(R EM_B uf fer :i% 1 6);w h i le (T I =0);?TI=0;?S BU F =DispTab_21;/'H'
26、;? hi le (T I = =0);?ri = 0;SBUF = D ispTab_20;/' while(TI= 0);?PI=0 ;?SB UF二DispTab_21;/ H'?f or (i =0 ;i< 9 4 ; i+ +)S BUF = Di sp Tab_2 0 ; /""while(TI二=0);? TI=0;? /U_D_B u ffer5: ;/Use r_Data/用户数据缓存, ?fOr( i= 0;i<11; i +)SB UF=Use rD atai;/"" w h i 1 e(TI = = 0
27、);?r I=f o r(i= 0; i<5; i +)?3BU F=D ispTab (U_D_Buffe ri/16);?Qhile (TI =0);?T I =0;? SBUF二DispTab (U_D_Buff e r :i % 16);w h i 1e (TI=0);wh i le(T I =0);?I?I=0;SBU F = Disp T a b_20; /' '知h i l e (TI = = 0);? TI =0;?for(i=0;i<12 0 ; i +)?SBUF =Di s pTab_20 ;/""?while(T I= =
28、 0);?TI=0;f o r (i=0;i<3 1 ;i+)?3BUF=Card_1i;/""?wh il e( TI= = 0);TI = 0;/10位十进制卡号 C ard 1?SBU F=D i sp Tab Ion g_D / 100 00000 0 0 ;/102? hile( T I = = 0);?T 1=0;?m m= long_D% 1 0 00000000;?£ BUF二Dis p Ta b m m/10 0 000 0 0 0 ;/9 ? while( T I= =0 );TI = 0;?mm=lon g _D%10 0 0 0 00
29、00;? SBUF=D i spTabmm/1000 0 000;/8 ?Wh i le(T I= 0);TI =0;?m m= lo n g_D%10000000;?SBU F=Di s pTab mm/ 1 000000; /7 ?W h i le(T I = =0);TI = 0;?mm= lo n g_D% 1 0 00 0 00;? SBU F=DispT a bmm/100000;/6whil e (TI = = 0 );mm二mm %100 0 00;?SBU F= Di s pTabmm/1 0 0 00 ;/ 5?Wh ile( TI=0);? TI=0;m m=l o ng
30、_D % 1 0 0 0 0;?SB UF= Di sp Tabmm/1000;/ /4whil e (T I=0);? TI=0;?mm=long_D%l 000;?S B U F=DispTabmm/1 0 0;/ 3? wh i le(T I =0);? TI = 0;?mm=lo ng _D% 1 0 0;?SBUF= D i s pTa b : mm /10 ;/2 ?While(TI=0);TI=0;?3BUF=DispT a b mm% 1 0 ;/1? w hile (TI = =0);TI=0;/ / mill / / /III/ Illi / / III/ /C a rd_
31、2?o r ( i =0; i<106;i+ +)? SBUF二Dis pTab_20;/"" ? ?while(TI= = 0);?fo r(i = 0;i <31;i+) ?SBU F=C ard_2i; I/""?Whi 1 e(TI= 0 );?TI= 0 ;?SBU F=D i s pTabch ar_D /100;/w h i 1 e(TI=0);?ri = 0;? cha_D = c har_D %100;?3BUF =D ispTab c h ar_D /1 0 ;/? w h i 1 e(T I =0);?ri= 0;? S
32、BUF 二Di spT ab char_D% 10 ;/whil e (TI= = 0 );?TI = 0;?3BUF=Di spT ab _22; / /w h i l e (TI = = 0 );? T I= 0;?SB UF=Di s pTab : in t _D/100 0 0; / ?While(TI= = 0);? TI= 0 ;in t_D= in t_ D% 1 0 000;?SBUF=Di s pTa bin t _D/10 0 0; /wh i l e( TI=0 );?TI=0 ;?int _ D = int_ D %1 0 0 0;? SBU F =Di s pTab
33、i nt_D/100;/?wh ile(TI=O);?r I = 0 ;i nt_D= i nt_D%10O ;?S BUF=DispTabint_D/I 0 ;/while(TI= = 0);? TI=0;?SB UF=Di s pTabi nt_D%10;/ ? whi 1 e(T I =0);? TI =0;? f o r (i=0; i <1 0 9;i+)?:?BU F =Dis pTa b_2 0 ;/"" ? ?while( TI = =0);?PI =0 ;? /?/ES=O;vo i d RE Min i t() /射频接口初始化?C LK =0;
34、/为 74HC4 0 6 0 提供 + 5 V 电源,7 4H C4 060 得电后 输出1 25 KHZ信号voi d REM_Proc ess ing()/曼彻斯特码数据提取?jchar i, ii;loop: ?T R0=0;VO l ue = 0 ;for( i =0;i< 9; i+ +)/曼彻斯特码同步头检测,9个1采用逐个前移检测法逐个前移检测法,即每检测到一个数据,如果是"1",并向数据库写入1,/如果是"0 ",就放弃当前检测的数据,并向当前数据流方向移动一/ /这样一来,就保证了不管数据流是在何种状态下,都能正确无误地抓取9个1
35、,同步头9个1的提取成功,曼彻斯特码译码器即和当前的数据流保持了同步,并把余下的55位数据全部译完。?彳??whil e (RE M= = 1)? f (TRO=O)? g o to lo op ;? /b r ea k;? TRO= 0;THO 二TH0_H;/ 开启 4 00us定时器,TL0=TL0_ L ;?T R0=1;? w hi le(TR0=1);TH 0=TH0_H;/开启400us定时器,同步头逐个前移检测T L0=TL0_L;? T RO = 1;?(REM二=0)?g o t o 1 oop;?(iv8 )?:V olue<v =1;?V0 1 ue|=0x01;
36、?( i = = 7)? RE M_Bu f fe r 0=vo 1u e;?RE M_Buf f er 1=0x80;T RO =0;R EM_B I T=0;?/olue= O x00;TH O 二TH0_H ; /400 u s?r L 0=TL0_L;/下降T R 0= 1 ;?or(i = 2; i< 1 3;i+)/曼彻斯特码解码?:? ?or(ii=0; 1 iv5;ii+ + ”/曼彻斯特码解码? ?wh 1 le(TR0=1);?i f (R EM = =1)? ( RE M_BIT=0) ?hile( R EM= =1); /曼彻斯特码跳变为高电平?_n o P();
37、?_n op_();_nop_();?_n o p_();/抗抖动 ?wh 1 l e (REM=1) ;/?op();?_nop()?_n o p_();?o p_() ;/抗抖动whi 1 e(REM=1);/? lue<<= 1 ;/用左移指令把"1 "移入vol u ev o lue 1=0x08;/跳变的瞬间提取数据,供参考?TL0=TL 0 丄? ?r R 0= 1 ;? ?只EM_BIT =0;/曼彻斯特码标志位置"0"?2? Ise /if(REM_BIT二=1) ?W?i ile( R EM=1) ;/曼彻斯特码跳变为高电平
38、_n o p_();? _nop_ ();?_nop_();? n op_();/航抖动? ?While( R EM= = 1); nop _ ()?2nop _ ();?_n o p_();? ?_hop _();抗抖动wh i le(REM=1);?v o 1 uevv=1;/用左移指令把"1"移入V ol uev o1 ue|=0 x 0 8;/跳变的瞬间提取数据,参考仇0 = TL0_ L ;? TH 0=TH0_H;/开启4 0 0u s定时器,为下次提取数据提供瓜EM_ BI T = 0 ; /曼彻斯特码标志位置"0"7TR0= 1;7777
39、 ?7?2 Ise / i f(R E M = =0)7 if(REM_ BI T=0)TVh il e (REM= = 0);/曼彻斯特码跳变为下降沿7 "opO ;7 7_nop_();7_nop_();?j nop_();/ 抗抖动77 7Wh i le (REM=0);77_nop_();7 7?7hop _ ();72- nop_();nop_();/抗抖动7 7 whiIe(REM= = 0);77V olu e <<=1;/用左移指令把"0"移入vol u e7 7 ?TH 0=T H0_H ;/开启400u s定时器,为下次提取数据提?
40、只EM_B IT = 1; /曼彻斯特码标志位置"1"供参考TLO=T LO_L ;?R0=1;?R EM_ BI T =1; /曼彻斯特码标志位置"1" ? ? ls e/i f (RE M _ BIT二=1 )?wh i 1 e (REM = =0);/曼彻斯特码跳变为下降沿? ?Lnop _ ();?_nop_ ();nop_();? ?_n o p_(); / /抗抖动wh ile(REM= O );? ? _n op_();?_?oP_ ();? _nop_ ();? _nop_ ();/抗抖动?wh i le(R E M=0);?v olue
41、« =1;/用左移指令把"0"移入vo lue提供参考仇 O =T L 0_L;?TR0=1;?REM_Bu f fer i=volu e;olue=OxO 0 ;void Eff i ca cy ()/数据效验?jcha ri,ii,c a che,c ach e_1 ,counter;/count e r= 0 ;f o r(i=2; iv12 ;i + + )/行效验?3oun te r =0;cach e=RE M_B u ffer i ;?3ache_1 =REM_Buff e ri;?or( i i =0 ; i i<4;ii+ )?:? cac
42、he& = 0x80;?艮 c ache=Ox 80)? c o un te r +;?c ac he _1v< = 1;?ache=cache_l ;if( c ounter=0)|(counter=2 )|(co un t er=4)?Effi c acy_B IT = 0 ;el s e if(co unt er= 1)|(counter= 3)?E ffi cacy_B I T=1;cach e=R EM _B u f f er i ;? cache&=0x 0 8;if( c ach e= =0x 0 8)?_PC_BIT二 l ;?e ls eP_P C_BI
43、T=O;? if( E f f icacy_BIT二二PPC_B IT)? Y E S_NO_BI T =1; II表示效验正确? elseYE S _NO_BIT=0; II表示效验错误?( Y ES_N O_B IT = =0)I/效验错误,无条件返回? retu r n;ca ch e_1= 0x80;?or(i = 0; i <4;i+)II 列效验? o unt e r=0;?f or(ii=2;iiv12;ii+)ca che二REM_Bufferi ;c ac he& =c a che_ 1 ;i f (cache= cache_1)?c ounter+=1 ;? J ? i f( (co u nt er=0)|(cou n ter= 2 )|(co unt e r=4) | |( counter = =6)1 | (coun te r=8) | |(counte r=10) ? E f ficacy_BIT=O ;el s e i f(co un ter= 1 )|(cou nt er=3 )|(co un ter= = 5 )| | (co un ter = = 7) | (c ounte r=9)?:?Effi c acy_BI T=1;? a ch e = R EM_B
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 房屋买卖合同范本精简版3篇
- 教育机构奠基仪式合同3篇
- 整改方案检察建议书版3篇
- 挡水墙施工合同样本3篇
- 地铁建设挖掘机操作合同
- 购物中心医生招聘合同
- 水库管道铺设改造非开挖施工合同
- 试驾车辆环保标准协议
- 混凝土工程分包施工合同
- 置业指南二手住宅合同样本
- 房屋租赁合同范文锦集9篇
- 2023年安徽新华发行控股有限公司社会招聘笔试真题
- 软件专业职业生涯规划
- 2025蛇年春联带横批
- 娱乐产业法律服务行业市场现状分析及未来三至五年行业预测报告
- 专题06 非连续性阅读(开放题型)-2023-2024学年八年级语文下学期期中专题复习(北京专用)(原卷版)
- 2024年世界职业院校技能大赛中职组“工程测量组”赛项考试题库(含答案)
- 静脉治疗小组管理
- 工地交通安全知识培训
- 高职劳动教育学习通超星期末考试答案章节答案2024年
- 期末卷(一)(试题)-2024-2025学年五年级上册语文统编版
评论
0/150
提交评论