u,:GJU
uchar rf_rec_end_check (Uint8 * DataBufRx) r\y~
:
{ '`q&UPg]
static uchar BufRxFormer[20],ser=0; aOq>Ra{T
unsigned char i,j,x,y; n*6 b*fl
const uchar tab_bit[8]={1,2,4,8,0x10,0x20,0x40,0x80}; }/ 6Q3B
qp*C%U
uchar succeed=0; 7Op6>i
4P@Ak7iL(V
DataBufRx[6]&=0xf8; .__X-+^
j=0; UY*3b<F}
for(i=0;i<7;i++) Z 6^AO=3
{ `;-K/)/x
if(BufRxFormer!=DataBufRx)j=1; $LLkYOwI
BufRxFormer=DataBufRx; +E7s[9/r
} MtC \kTW
if(!ClockIdRepeat)j=1; OD!b*Iy|
ClockIdRepeat=30; rvZXK<@#+
tz-, |n0
if(j) K'.aQ&2
{ >K$9(
y=0xff; oJJ2y
for(i=0;i<5;i++) sf4NKe2*
{ _,:gSDW|
y^=DataBufRx; p9k'.H^:_
} mt$0p|B8
x=0xf8; 5q<AMg
for(j=0;j<5;j++) !E<y:$eH:
{ s86Ij>VLf
for(i=0;i<8;i++) HV@C@wmg
{ uc]]zI6
if(DataBufRx[j]&tab_bit)x^=tab_bit[7-j]; n}cjVH5
} XnmQp)nyV
} v0)I rO
!t/I
j ~o
if((x==DataBufRx[6])&&(y==DataBufRx[5])) 33dHTV
{ F)_zR
succeed=1; F]kn4zr
Y=+pz^/"
} %fB]N
} ?S^ U-.`
return succeed; b_2bg>|;
} 8."B
//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; c:(Xkzj
void rf_rec_end_deal (void) g{wOq{7V
{ Q-<N)K$F(4
//static Uint8 ; J{fTx@?(
Uint16 i; yf7p,_E/
Uint8 j,rf_d; ,@1rP 55
Uint8 type=0,dt=0; #[$^M:X.
i=rf_rec_end_check(RfBuffer); \
vf&Ldk
Aw#@}TGT
if(i) jpijnz{M
{ %
NSb8@
if (read_eeprom_compare()) L-.
+yNX)
{ >@?!-Fy5
(55k70>i3
} H,8HGL[l
else if (!save_pin) _Sa7+d(
{ 5dwC~vn}c
if (EERead(alarm_en) != 0xff) EEWrite(alarm_en,0xff); 8zhr;Srt
j = EERead (CodeSaveSrial); ]J|]IPXy
j ++; ))M!"*
if (j >= CodeNumberMax) j = 0; z{;~$."
i = ((j + CodeStartAddressEeprom) << 2); K"fr4xHq
EEWrite(i,RfDataOut[0]); M/<>'%sj
i ++; 3`
,u^ w
EEWrite(i,RfDataOut[1]); 2iX57-6Ub
i ++; e'nhP
EEWrite(i,RfDataOut[2]); ^:hI bF4G
i ++; V.\12P
EEWrite(i,0x40); 7bk=D~/nSg
EEWrite(CodeSaveSrial,j); GN0s`'#"3%
} ~;)H |R5kV
Uw!N;QsC
type=(RfBuffer[3]>>1)&0x1f; PvHX#wJ
if(type&0x10) P:8qmDXo
{ rl/]Ym4j
if(RfBuffer[3]&1)dt|=0x80; )#%v1rR
if(RfBuffer[4]&0x80)dt|=0x40; LZ'Y3 *
if(RfBuffer[4]&0x40)dt|=0x20; NC@L,)F
if(RfBuffer[4]&0x20)dt|=0x10; a8w/#!^34
} @1c[<3xJT
else eN,6p'&
{ ^}Wk
if(RfBuffer[3]&1)dt|=0x80; %M7EOa
if(RfBuffer[4]&0x80)dt|=0x40; #_pQS}$
if(RfBuffer[4]&0x40)dt|=0x10; tX.fbL@T
if(RfBuffer[4]&0x20)dt|=0x20; qmy3pnL
}
>{1 i8 b@
A6S|pO1)3
ClockLed=100; `z1E]{A
\c(Z?`p]R1
UsartPcTxPoint=0; p|0ZP6!|
UartPcTxEn=1; wSPwa,)7s
for(j=0;j<7;j++)PcComDataTx[j+1]=RfBuffer[j]; Oj]4jRew
PcComDataTx[0]=j; ~q,Wj!>Ob
-Cc2|~n
9%iv?/o*L
} 1e)5D& njS
rf_rec_end = 0; 7*>(C*q=
} 0J z|BE3Y
//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 0\KDa$'1k
void eeprom_clr (void) vxZ :l
{ 4?',E ddo
Uint8 i; _t-e.2a
v
LedOn; :8LK}TY7
for(i=0;i<50;i++) MZWicfUy
{ c[zGWF#1>
if ((save_pin) || (clr_pin)) return; lU8X{SV!
Delay(10000); S4C4_*~Vd
} <(tnClAn
for(i=0;i<20;i++) ]yV,lp
{ ZOzwO6(_
if ((save_pin) || (clr_pin)) return; j`l'Mg
Delay(40000); Wagb|B\
CovLedOnOff; =2OLyZDI
} J/>9w
for(i=0;i<50;i++) $*qQ/hi
{ zL=PxFw0
Delay(10000); m
?#WQf
CovLedOnOff; #v\o@ArX
} <d~IdK'\x
LedOff; VpyqVbx1
for(i=CodeStartAddressEeprom;i<CodeNumberMax;i++) /;;$9O9
{ *T-v^ndJh
EEWrite(((i<<2)+3),0xff); M-zqD8D
} 7*(K%e"U
EEWrite(CodeSaveSrial,0xff); 3FsX3K,_X
EEWrite(alarm_en,0xff); fD~f_Wr
LedOn; Gq =i-I
while ((!save_pin)||(!clr_pin))Delay(10000); [WUd9fUL
LedOff; il~A(`+YO
} I'c
rH/z9
//===================================================== fp2uk3Bm[
void ClockMain (void)/////1mS @WnW
@'*F
{ rtT*2k*
static Uint16 ClockA; +P|Z1a -jB
static Uint8 ClockB,ClockC;//,TampPinFormer=1; Rd,5&X$
r#\Lq;+-B
ClockMainEn=0; 1JY3c
M
f19'IH$n{
// sound_1mS_deal(); bq"dKN`
UO}Yr8Z;
ClockB++; VskdC?yIp
if(ClockB>=100)////100mS !Nx'4N`&l
{ 66l+cb
ClockB=0; gn6 @x
if(ClockIdRepeat)ClockIdRepeat--; mu@IcIb>
kA{eT
PGJkQsp0
ClockC++; .Gn-`
if(ClockC>=10)////1S &e;GoJ
{ .M>g`UW
ClockC=0; B<!WAw+
} Qkx}A7sK
p.x!dt\1kC
} ?^!:
Lw
4&wwmAp^
if(LightTime) xAu&O\V
{ Cd'K~Ch3
ClockA++; C>Cb
if(ClockA>=1000) ;\rKkH"K8n
{ \>)#cEX5
ClockA=0; C$7dmGjZ
if((LightTime)&&(LightTime<250))LightTime--; p[:E$#W~;
} vl:V?-sY
//if((ClockA<100)&&(LightTime))LightPortOn; 7|^5E*8/
//else LightPortOff; n--w-1
} T )"Uq
else ER)to<k
{ <S(`e/#[
// LightPortOff; oh.8WlI
ClockA=0; xL}~R7
} sX|bp)Nw
Uq:CM6q\
if(ClockLed) LRKl3"M
{ =SpD6
9-H
ClockLed--; Y(Q!OeC
LedOn; 2; ~jKR[~
} 3FE=?Q
else jZP~!q
{ <v[UYvZvY
LedOff; W
B7gY\Y&M
} hWfC"0
XS`=8FQ
} VZEDBZ x*
//================== 2y@y<38
void UartPcRxDeal(Uint8 data) I'a&n}jx
{ Y0ouLUlI
UartRxPcDealEn=0; RAi]9` *7
/* static Uint8 buffer[TxRxDataBufMax+5],point=0,step=0,connect=0,n_byte=0; drW}w+!
Uint8 i,j,k=0,x; :%kJ9zW
point&=TxRxDataBufMax; X@up=%(
buffer[point]=data; : ?J0e4.]
i=point; ODE^;:z !
point++; JF-ew"o<E
if((ClockPcData==0)||(step==0)) 3iv;4e ;
{ >TB Rp,;r
connect=buffer; 1-:{&!
if(connect<TxRxDataBufMax) GZk{tTv
{ 0VwmV_6'<W
n_byte=0; !a<}Mpeg
step=1; VFjNrngl
} mmx;Vt$i
else step=0; 8 CN~o|uN
} 3 V{&o,6
else if(step==1) R@Bnrk
{ 6gN>P%n
n_byte++; `8<h aU
if(n_byte>=connect) z3Ro*yJU
{ 6$_//
step=0; -]e@FNL
for(j=connect;j>=1;j--) qGH\3g-
{ `6B jNV
k+=buffer[(i-j)&TxRxDataBufMax]; NAt; r
} |6y(7Ha
if(k==buffer); jo^+
{ UKfpoDhEe
SoftTest1;//////////////////////////////////test 'awZ-$#
PcRxDataDeal(connect-1,& buffer[0],i); fx`oe
} Y*q_>kps"
} R<AT}!mkR
} +PGtO9}B
ClockPcData=40; */ u~VvGLFf5,
} DgiMMmpE
//======================= s%p,cz;
,
void UartPcTxDeal(void) v#WD$9QWs
{ #V:28[
if(udre0_1) F3
z:|sTqc
{ )/_T`cN
if(UartPcTxEn) ^ua8Ya
{ syR
+;
UDR0_1=PcComDataTx[UsartPcTxPoint+1]; =p29}^@@t
#k*P/I~
UsartPcTxPoint++; <sNkyQ
if(UsartPcTxPoint>=PcComDataTx[0]) >ho$mvT
{ rbD}fUg
UsartPcTxPoint=0; bL9EX$P
UartPcTxEn=0; )|SmB YV
} J0Ik@
} zJ7=r#b
} ZN]LJ4|xu
} C\WU<!
//================== %e,X7W`'2
main() mx:) &1
{ SC6cFyp2
Uint8 i; tbr1mw'G
_asm("sim"); j9XRC9
GPIO_Init();
S_EN,2'e
LedOn; 9=wt9` ?
SystemClock_Init(); B}y`E
<
TIME_Init(); /y~ "n4CK~
UART_Init(); vsU1Lzna6@
init_WDG(); Mw,7+
LedOff; 8H})Dq%d 7
_asm("rim"); .tny"a&
Oi~]~+2
for(i=0;i<6;i++) E)h&<{%
{ ci~pM<+
Delay(10000); 4?3*%_bDJ,
LedOn; B- `,h pp
Delay(10000); &&\HE7*
LedOff; B]xZ
4Y
test; | ]DJz
} GVaIZh<
;Uxr+,x~
while (1) D$wl.r
{ uR:@7n
CLRWDT; xpb,Nzwt^
//if (TampAlarmEn) TampAlarmSet (); F/ODV=J-
if (rf_rec_end) rf_rec_end_deal (); ?^<
E#2a
if (ClockMainEn)ClockMain (); s$,gM,|cK
<+tSTc4>r
if(UartRxPcDealEn)UartPcRxDeal(UartRxPcData); *C*'J7
UartPcTxDeal(); A=z+@b6
%FDv6peH
} _7#9nJ3|
} dV( "g],
//;;;;;;;;;;;;;;;;;;;************************************* b,8\i|*!f
//void clr_rf_rec (void) d\_$Nb*
//{ b85r=tm
// rf_bit_number=0; [K\Vc9
// time_up=0; ][jW2;A
// time_down=0; DLWG0$#!
8{t^< j$n
// rf_bit_number = 0; R@+%~"Z
// timer_rf_plus_ovf = 0; =u5a'bp0;;
// rec_timer_now = 0; +p%!G1Yz
// rec_timer_down = 0; m=hlim;P,
// timer_led_trb = 0; 94>EA/+Ek
// StartFlag=0; 7H+IW4Ma
// rf_data_temp=0; cQ?eL,z
//} xnfMx$fD
//================== N}j]S{j}'
void RfRxDeal(Uint8 data,Uint8 up_down) VDyQv^=#
{ *u i!|;
#define clr_rf_rec {rf_bit_number=0;time_up=0;time_down=0;} /{[Y l[{"<
static Uint8 bit_flag,rf_bit_number,rf_data_temp,time_now, zXop@"(e
time_up,time_down,time_add,time_sub; rW8.bMmM
Q=,6W:j
Uint8 i,j; W7_j;7'
%|tDb
//if (data>=150) {clr_rf_rec; return;} G` _LD+
.d JX,^
time_now=data; xksd&X:
if(up_down) TQ/EH~Sz
{ 6 cF~8
time_up=time_now; #GJ{@C3H8Q
time_add=time_up+time_down; &zxqVI$4
if(time_up>=time_down) 5a`f%
h%
{ OzVCqq"]
time_sub=time_up-time_down; 0bR)]"K
bit_flag=0; qy9RYIfZ
} 9_h
V1:
else Mx7
{ 8(6(,WwP}
time_sub=time_down-time_up; m#i5}uHHg
bit_flag=1; 3>~W_c9@
} wX!q dII)
//if ((time_add < 94)&&(time_add >= 63)&&(time_sub < 63 )&&(time_sub >= 6)) ~yGD("X
if ((time_add < 29)&&(time_add >= 19)&&(time_sub < 20 )&&(time_sub >= 4)) y:m
;_U,%c
{ ^5MPK@)c,/
if (bit_flag) rf_data_temp |= 1 ; ;*H@E(g
else rf_data_temp &= 0xfe ; x%hV5KW
rf_bit_number ++ ; /:+f5\"-b
if (!(rf_bit_number&7)) (RfBuffer[(rf_bit_number-1)>>3] = rf_data_temp); Sj[iKCEKtv
Ao0p=@Y
if (rf_bit_number == 53 ) k%|Sl>{Ir
{ !Qqi%
RfBuffer[6] = (rf_data_temp<<3)&0xf8; pL&
Zcpx
rf_rec_end = 1 ; HGwSsoS
`X:o]t@
clr_rf_rec; A(2\Gfe
//ClockLed=100; \~(scz$
} I:L}7uA[t
rf_data_temp <<= 1 ; G2 E4
} 7 K5D,"D;1
else clr_rf_rec; wm'a)B?
(2SmB`g
!:GlxmtoW?
} e}PJN6"5
else RCL}bE
{ TEzMFu+V
time_down=time_now; B%.vEk)*
} w|k?2 ?&
} v>[U*E
$M0F~x
_<8~CWo:
OxC8xB;`
xpU7ZY