unsigned char read_iccard(void)
{
unsigned char iccard_cnt=0,read_temp=0,read_buf1=0;
P6DIR&=~BIT6;
delay(9);
P6OUT&=~BIT5;
delay(9);
readloop:if((P6IN&0X40)!=0)
read_temp=1;
else read_temp=0;
read_temp=read_temp<<iccard_cnt;
read_buf1|=read_temp;
P6OUT|=BIT5;
delay(9);
P6OUT&=~BIT5;
iccard_cnt++;
if(iccard_cnt<8)
goto readloop;
else ;
return(read_buf1);
}
unsigned char command_iccard(unsigned char iccard_data,unsigned char iccard_addres,unsigned char iccard_command)
{
P6DIR|=BIT6;
delay(9);
iccard_start();
delay(9);
tram_iccard(iccard_command);
tram_iccard(iccard_addres);
tram_iccard(iccard_data);
delay(9);
iccard_stop();
return(0);
}
void ccc1(void)
{
command_iccard(0,0x30,0x30);
data11=read_iccard();
tempca=read_iccard();
js=read_iccard();
hs=read_iccard();
js1=read_iccard();
hs1=read_iccard();
js_hz=read_iccard();
hs_hz=read_iccard();
hs_cha=read_iccard();
js_wendu=read_iccard();
hs_wendu=read_iccard();
data12=read_iccard();
iccard_break();
}
void ccc2(void)
{
scgl=(hs_wendu+js_wendu*10+hs_cha*100+hs_hz*1000+js_hz*10000+hs1*100000+js1*1000000+hs*10000000+js*100000000+tempca*1000000000);
yl+=scgl;
ljgl+=scgl;
}
void iccard_main(void)
{
P6DIR|=BIT5;
P6DIR|=BIT4;
delay(40);
P6OUT|=BIT4;
delay(9);
P6OUT|=BIT5;
delay(9);
P6OUT&=~BIT5;
delay(9);
P6OUT&=~BIT4;
delay(9);
read_iccard();
read_iccard();
read_iccard();
read_iccard();
command_iccard(0,0x40,0x30);
data1=read_iccard();
data2=read_iccard();
iccard_break();
if(((data1==0x3C)&&(data2==0xC3))||((data1==0x2D)&&(data2==0xD2))||((data1==0x69)&&(data2==0x96)))
{
command_iccard(0,0,0x31);
iccard_ec=read_iccard();
data1=iccard_ec;
data2=read_iccard();
data3=read_iccard();
data4=read_iccard();
// P3OUT&=~BIT3;
if((iccard_ec&0x07)!=0)
{
command_iccard(0x06,0,0x39);
clk256();
iccard_break();
command_iccard(0x92,0x01,0x33);//password
clk256();
command_iccard(0x12,0x02,0x33);
clk256();
command_iccard(0x12,0x03,0x33);
clk256();
iccard_break();
command_iccard(0xff,0,0x39);
clk256();
iccard_break();
command_iccard(0,0,0x31);
iccard_ec=read_iccard();
read_iccard();
iccard_break();
if((iccard_ec&0x07)==7)
{
command_iccard(0,0x40,0x30);
data7=read_iccard();
data8=read_iccard();
iccard_break();
if((data7==0x3C)&&(data8==0xC3))
{
ljrl=0;
ljll=0;
ljgl=0;
scgl=0;
yl=0;
ljll_cnt=0;
kset_v=5;
if(P1IN&0x04)
{
close1();
}
opcl=0;
}
else if((data7==0x2D)&&(data8==0xD2))
{
ccc1();
if((tempca+js+hs+js1+hs1+js_hz+hs_hz+hs_cha+js_wendu+hs_wendu)==data12)
{
ccc2();
kset_v=5;
if(P1IN&0x08)
{
open1();
}
opcl=1;
}
}
else if((data7==0x69)&&(data8==0x96))
{
command_iccard(0,0x3e,0x30);
data1=read_iccard();
iccard_break();
if(data1==0x5a)
{
ccc1();
if((tempca+js+hs+js1+hs1+js_hz+hs_hz+hs_cha+js_wendu+hs_wendu)==data12)
{
ccc2();
kset_v=5;
if(P1IN&0x08)
{
open1();
}
opcl=1;
command_iccard(0xa5,0x3e,0x38);
clk256();
iccard_break();
// iccard_wrt();
}
}
}
}
}
}
}
void hanzhim(void)
{
js_hz=hanzhi[js_wendu/100];
js_hz+=(((js_wendu%100)*420)/100);
hs_hz=hanzhi[hs_wendu/100];
hs_hz+=(((hs_wendu%100)*420)/100);
}
#pragma vector=PORT2_VECTOR
__interrupt void PORT2(void)//P1中断
{
if((P2IN&0x10)==0)
{
delay(10000);
if((P2IN&0x10)==0)
{
if((P1IN&0x02)!=0)
{
ljll_cnt++;
ljll=ljll_cnt*10;
if(js_wendu>hs_wendu)
{
if((js_wendu-hs_wendu)>19)
{
hanzhim();
ljrl_30s=((js_hz-hs_hz)*((midu[js_wendu/100])/10))/10000;
ljrl+=ljrl_30s;
yl-=ljrl_30s;
}
}
else if(hs_wendu>js_wendu)
{
if((hs_wendu-js_wendu)>19)
{
hanzhim();
ljrl_30s=((hs_hz-js_hz)*((midu[hs_wendu/100])/10))/10000;
ljrl+=ljrl_30s;
yl-=ljrl_30s;
}
}
}
else
{
if(P1IN&0x04)
{
close1();
}
opcl=0;
}
}
}
if((P2IN&0x08)==0)
{
delay(1000);
if((P2IN&0x08)==0)
{
P2OUT|=BIT2;
delay(100);
iccard_main();
delay(100);
P2OUT&=~BIT2;
}
}
P2IFG&=~BIT3;
P2IFG&=~BIT4;
LPM3_EXIT;
}
void main(void)
{
int i;
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
TACTL=TASSEL0+TACLR; //timera1 initial
TACCTL0=CCIE;
TACCR0=16384;
TACTL|=MC0;
P1DIR=0x21;
P1IE|=BIT2;
P1IES|=BIT2;
P1IFG&=~BIT2;
P1IE|=BIT3;
P1IES|=BIT3;
P1IFG&=~BIT3;
P1IE|=BIT4;
P1IES|=BIT4;
P1IFG&=~BIT4;
P2DIR=0x66;
P2SEL=0x40;
P2IE|=BIT3;
P2IES|=BIT3;
P2IFG&=~BIT3;
P2IE|=BIT4;
P2IES|=BIT4;
P2IFG&=~BIT4;
P2OUT&=~BIT2;
P6DIR=0xff;
P6OUT|=BIT3;
delay(50);
P6OUT&=~BIT2;
P6OUT|=BIT7;
delay(1000);
read_Flash((char*)0x1080,read_buf,12);
pttemp=read_buf[0];
pttemp=(pttemp<<8);
pttemp|=read_buf[1];
pt_ad0js=pttemp;
pttemp=read_buf[2];
pttemp=(pttemp<<8);
pttemp|=read_buf[3];
pt_ad50js=pttemp;
pttemp=read_buf[4];
pttemp=(pttemp<<8);
pttemp|=read_buf[5];
pt_ad100js=pttemp;
pttemp=read_buf[6];
pttemp=(pttemp<<8);
pttemp|=read_buf[7];
pt_ad0hs=pttemp;
pttemp=read_buf[8];
pttemp=(pttemp<<8);
pttemp|=read_buf[9];
pt_ad50hs=pttemp;
pttemp=read_buf[10];
pttemp=(pttemp<<8);
pttemp|=read_buf[11];
pt_ad100hs=pttemp;
pt_bjs=((pt_ad100js+pt_ad0js)-2*pt_ad50js)/(5000*pt_ad0js);
pt_ajs=((pt_ad100js-pt_ad50js)-7500*pt_bjs*pt_ad0js)/(50*pt_ad0js);
pt_bhs=((pt_ad100hs+pt_ad0hs)-2*pt_ad50hs)/(5000*pt_ad0hs);
pt_ahs=((pt_ad100hs-pt_ad50hs)-7500*pt_bhs*pt_ad0hs)/(50*pt_ad0hs);
_EINT();
// iccard_main();
while(1)
{
WDTCTL =WDT_ARST_1000;
if(sec10s>39)
{
flag_ca&=~BIT0;
sec10s=0;
}
if((flag_ca&0x01)==0)
{
P1IE&=~BIT4;
// P1DIR|=BIT4;
P2OUT|=BIT5;
bzsj();
bz=bz2;
// bbz=bz2;
hssj();
hs=bz2;
// bbz2=hs2;
jssj();
js=bz2;
// bbz1=js2;
bzsj();
bz1=bz2;
jssj();
js1=bz2;
hssj();
hs1=bz2;
P2OUT&=~B
shizhong.rar_ieee1588_时钟同步
版权申诉
118 浏览量
2022-09-21
06:13:13
上传
评论
收藏 2KB RAR 举报
邓凌佳
- 粉丝: 66
- 资源: 1万+