📄 msp430sgtz.c
字号:
b=(b<<8)+dat2;
b=stand-b;
if(b<=700)
{
P3OUT|=BIT4; //
delay(50);
delay(50);
P3OUT&=~BIT4;
}
HEX_BCD4(b);
disp_lcd(BCD[4],BCD[5],BCD[6],BCD[7],3);
goto l_p;
}
sgok: P3OUT|=BIT4; //
delay(50);
delay(50);
P3OUT&=~BIT4;
HEX_BCD(b);
disp_lcd(BCD[4],BCD[5],BCD[6],BCD[7],3);
delay(255);
delay(255);
delay(255);
delay(255);
sound_s();
delay(50);
//addnumbf = 0;
while(((P1IN&BIT2)!=0)&&((FLAG&BIT3)!=0))
{
FK_error: disp_lcd(0x0d,0x0c,0x0c,0x0d,0);
//EA = 0;
_DINT();
sound_s();
//EA = 1;
_EINT();
delay(255);
delay(255);
delay(255);
a++;
if (a == 5)
{
disp_lcd(0,0,0,0,0);
delay(255);
delay(255);
delay(255);
goto testend;
}
}
if((FLAG&BIT3)==0)
{
for(i=0;i<85;i++)
delay(200);
goto testend;
}
if(((P1IN&BIT2)==0)&&((FLAG&BIT3)!=0))
{
IC_error = 0;
a = IC_read(0x00);
if(IC_error == 0xff)
{
sound_s();
goto FK_error; //卡查反
}
disp_lcd(0x0d,0x0a,0x0a,0x0d,0);
for(b=1;b<3;b++)
{//
delay(255);
delay(200);
disp_lcd(0x0e,0x0e,0x0e,0x0e,0);
delay(255);
delay(200);
disp_lcd(0x0d,0x0a,0x0a,0x0d,0);
}//
a = (BCD[6]<<4)+BCD[7];
IC_write(SG_save1,a);
result[1]=a;
delay(20);
a = (BCD[4]<<4)+BCD[5];
IC_write(SG_save0,a);
result[0]=a;
delay(20);
IC_write(SG_flag,1);
//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
lsbuf=(uint)(re1byte(0x00));
lsbuf=(uint)(lsbuf*256+re1byte(0x01));
if(lsbuf>2700)
{
for(i=0;i<50;i++)
delay(200);
goto testend;
}
//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/////////////////////////////////////////////////////////////
_DINT();
delay(80);
readicid();
FLAG2|=BIT0; //置数据有标志,可进行发送
//disp_lcd(0x01,0x01,0x01,0x01,0);
FLAG2|=BIT0; //置数据有标志,可进行发送
//disp_lcd(0x01,0x01,0x01,0x01,0);
for(i=0;i<5;i++)
delay(200);
FLAG2&=~BIT0;
lsbuf=(uint)(re1byte(0x00));
delay(80);
lsbuf=(uint)(lsbuf*256+re1byte(0x01));
for(ii=0;ii<8;ii++)
{
temp=icidbuf[ii];
wr1byte(0x40+12*lsbuf+ii,temp);
delay(80);
}
for(ii=0;ii<4;ii++)
{
temp=result[ii];
wr1byte(0x40+12*lsbuf+8+ii,temp);
delay(80);
}
lsbuf++;
at64count++;
temp=(uchar)(lsbuf/256);
wr1byte(0x00,temp);
delay(50);
temp=(uchar)(lsbuf%256);
wr1byte(0x01,temp);
delay(50);
/////////////////////////////////////////////////////////////
}
disp_end:
sound_s();
/*incard_led = 1;*/
P5OUT|=BIT0;
/*test_led = 1;*/
P5OUT&=~BIT3;
/*incard_led = 1;*/
P5OUT&=~BIT2;
/*testend_led = 0;*/
P5OUT&=~BIT1;
FLAG&=~BIT3;
checkcard1();
goto mainloop1;
testend: /*incard_led = 1;*/
P5OUT|=BIT0;
/*test_led = 1;*/
P5OUT&=~BIT3;
/*incard_led = 1;*/
P5OUT&=~BIT2;
/*testend_led = 0;*/
P5OUT&=~BIT1;
FLAG&=~BIT3;
checkcard1();
goto mainloop1;
}
//uint get100da(void)
//{ unsigned long su=0;
// uchar i=0;
// uint aa=0;
// for(i=0;i<5000;i++)
// { aa=adc_test();
// su=su+aa;
// }
// su=su/5000;
// su=su*366/1000;
// aa=su;
// return(aa);
//}
uint get100da(void)
{ unsigned long su=0;
uint i=0;
uint aa=0;
for(i=0;i<5000;i++)
{ aa=adc_test();
su=su+aa;
}
su=su/5000;
su=su*366/1000;
aa=su;
return(aa);
}
uint adc_test(void)
{ uint value=0;
ADC12CTL0|=ADC12SC;
while ((ADC12IFG & ADC12BUSY)==0); // ADC12BUSY?
value=ADC12MEM0;
return(value);
}
void checkcard(void)
{
if((P1IN&BIT2)== 0) //P1IN&BIT2为card_sw
{
delay(200);
IC_error = 0;
a = IC_read(PASS0);
i = a;
i = i<<8;
a = IC_read(PASS1);
i = i+a;
if ((IC_error == 0xff)||(i!=0x4a48)) //判卡:1。插反 2。误卡
{
//while(card_sw == 0)
while((P1IN&BIT2)== 0)
{
disp_lcd(0x0d,0x0c,0x0c,0x0d,0);
//EA = 0;
_DINT();
sound_s();
sound_s();
//EA = 1;
_EINT();
delay(100);
delay(100);
delay(100);
delay(100);
}
}
else
{
a = IC_read(NUM0);
i = a;
i = i<<8;
a = IC_read(NUM1);
i = i+a;
HEX_BCD(i);
disp_lcd(BCD[4],BCD[5],BCD[6],BCD[7],0);//显示编号
sound_s();
delay(255);
delay(255);
delay(255);
delay(255);
readicid(); /*************读取卡号****************/
b = 0;
//EX0 = 0;
P2IE&=~BIT6;
prenum = 0;
FLAG5&=~BIT1;
a = IC_read(SG_flag);
if (a!=0)
if(IC_read(TZ_flag)!=0)
{
/*prep_led = 0;*/
P5OUT|=BIT0;
/*incard_led = 1;*/
P5OUT&=~BIT3;
/*P5OUT|=BIT0; */
xsjg1();
FLAG5|=BIT1; //置IC卡有测试数据
}
if((FLAG5&BIT1)==0)
{
P5OUT&=~BIT3;
/*P5OUT|=BIT0; */
P5OUT&=~BIT0;
/*P5OUT|=BIT0; */
P5OUT|=BIT2;
/*P5OUT|=BIT0; */
}
}
}
}
void checkcard1(void)
{
if((P1IN&BIT2)== 0) //P1IN&BIT2为card_sw
{
delay(200);
IC_error = 0;
a = IC_read(PASS0);
i = a;
i = i<<8;
a = IC_read(PASS1);
i = i+a;
if ((IC_error == 0xff)||(i!=0x4a48)) //判卡:1。插反 2。误卡
{
//while(card_sw == 0)
while((P1IN&BIT2)== 0)
{
disp_lcd(0x0d,0x0c,0x0c,0x0d,0);
//EA = 0;
_DINT();
sound_s();
sound_s();
//EA = 1;
_EINT();
delay(100);
delay(100);
delay(100);
delay(100);
}
}
else
{
//a = IC_read(NUM0);
//i = a;
//i = i<<8;
//a = IC_read(NUM1);
//i = i+a;
//HEX_BCD(i);
//disp_lcd(BCD[4],BCD[5],BCD[6],BCD[7],0);//显示编号
sound_s();
//delay(255);
//delay(255);
//delay(255);
//delay(255);
readicid(); /*************读取卡号****************/
b = 0;
//EX0 = 0;
P2IE&=~BIT6;
prenum = 0;
FLAG5&=~BIT1;
a = IC_read(SG_flag);
if (a!=0)
if(IC_read(TZ_flag)!=0)
{
/*prep_led = 0;*/
P5OUT|=BIT0;
/*incard_led = 1;*/
P5OUT&=~BIT3;
/*P5OUT|=BIT0; */
xsjg1();
FLAG5|=BIT1; //置IC卡有测试数据
}
if((FLAG5&BIT1)==0)
{
P5OUT&=~BIT3;
/*P5OUT|=BIT0; */
P5OUT&=~BIT0;
/*P5OUT|=BIT0; */
P5OUT|=BIT2;
/*P5OUT|=BIT0; */
}
}
}
}
void HEX_BCD(unsigned long dd)
{
unsigned long div;
uchar i;
div=10000000;
for (i=0;i<8;i++)
{
BCD[i]=dd/div;
dd%=div;
div/=10;
}
}
void HEX_BCD4(uint dd)
{
uint div;
uchar i;
div=10000;
for (i=3;i<8;i++)
{
BCD[i]=dd/div;
dd%=div;
div/=10;
}
}
//////////////////////////////////
void sound_s(void)
{
/*sound = 1;*/
P5OUT|=BIT7; //打开蜂鸣器
delay(200);
delay(200);
/*sound = 0;*/
P5OUT&=~BIT7; //关闭蜂鸣器
}
void sound_star(void)
{
/*sound = 1;*/
P5OUT|=BIT7; //打开蜂鸣器
delay (200);
delay (200);
delay (200);
delay (200);
/*sound = 0;*/
P5OUT&=~BIT7; //关闭蜂鸣器
}
void delay1(uchar x)
{
uint i;
for(i=0;i<x;i++);
}
void nop()
{
}
/*void start()
{
sda=1;
nop();
scl=1;
nop();
sda=0;
nop();
scl=0;
nop();
}*/
void start430()
{
P3OUT|=(SDA430+SCL430); //将SDA置1
P3DIR|=(SCL430+SDA430); //将SCL SDA定义为输出
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop();
P3OUT|=SCL430; //SCL=1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -