📄 msp430ywqz.c
字号:
checkcard();
FLAG5&=~BIT4;
}
}
void xsjg(void)
{
a = IC_read(FYS_save0);
disp1 = a;
a = IC_read(FYS_save1);
disp2 = a>>4;
a = a<<4;
disp3 = a >> 4;
disp_lcd(0,disp1,disp2,disp3,0);
/*incard_led = 1;*/
//P5OUT&=~BIT0;
/*test_led = 1;*/
//P5OUT&=~BIT2;
/*incard_led = 1;*/
//P5OUT&=~BIT0;
/*testend_led = 0;*/
//P5OUT|=BIT3;
//P5OUT&=~BIT1;
}
void main(void)
{
/*bit firstnum;*/
tljish = 0;
msp430csh(); //MSP430进行初始化
wxmkcsh();
init(); //外部初始化
disp_lcd(0x8,0x8,0x8,0x8,0x0);
/*incard_led = 0;*/
P5OUT|=BIT3;
disp_lcd(0xd,0xd,0xd,0xd,0x0);
/////////////////////////////////////////////////////////////////////////////
IE2 &= ~UTXIE1;
ME2 |= UTXE1 + URXE1; // Enable USART1 TXD/RXD
IE2 |= URXIE1;
_EINT();
/////////////////////////////////////////////////////////////////////////////
//while(1)
//{
////while((IFG2&URXIFG1)==0); //如果没有接收到数据时,等待
////r232buf[0]=RXBUF1;
////while ((IFG2 & UTXIFG1) == 0); //USART1 TX buffer ready?
////TXBUF1=0x55;
////ycsjre64();
//IE2&=~URXIE1; //
//_DINT();
//delay(255);
//disp_lcd(0x0d,0x0d,0x0d,0x04,0); //显示---4表示清除存储器的全部数据
//delay(255);
//delay(255);
//flashmaintry();
//}
TBCTL|=TBIE;
//checkcard(); //首先进行IC卡的检查并进行相应的显示
P6SEL=0X20;
ADC12CTL0&=~ENC; //stop a/d change
ADC12CTL0 = ADC12ON+REFON+REF2_5V+SHT0_8;
ADC12CTL1 = SHP; // Use sampling timer
ADC12MCTL0 = SREF_1+INCH_5; // Vr+ = VeREF+ (external)
ADC12CTL0 |= ENC;
mainloop:
while(1)
{
delay(10);
checkcard();
mainloop1:
P3OUT&=~BIT0; //关断外部电源
m=0;
exitjsq=0;
while((P1IN&BIT2)==0)
{
jcqy();
P3OUT&=~BIT0; //关断外部电源
_EINT();
FLAG2|=BIT3; //
//delay(200); //延时60ms
ycsjre64();
//if((P2IN&BIT1)==0)
//m++;
//else m=0; //如果按下确认键则m一直加一,否则m=0
if(((P1IN&BIT2)==0)&&(exitjsq>100)) //如果插卡且时间超过600ms
{
disp_lcd(0,0,0,0,0);
tljish = 0;
//timeoverf = 0;
FLAG&=~BIT5;
//testend_led = 1;
P5OUT&=~BIT0;
/*prep_led = 0;*/
P5OUT|=BIT2;
FLAG|=BIT3; //////////建立插卡测试标志位
FLAG2&=~BIT3; //////////清除空闲标志
delay(200); //延时60ms
ycsjre64();
goto next_test;
}
}
m=0;
disp_lcd(0xd,0xd,0xd,0xd,0x0);
while((P1IN&BIT2)!=0)
{
jcqy();
P3OUT&=~BIT0; //关断外部电源
FLAG2|=BIT3; //
P5OUT&=~BIT1;
//delay(200); //延时60ms
//if((P2IN&BIT1)==0)
//m++;
//else m=0; //如果按下确认键则m一直加一,否则m=0
P5OUT&=~BIT0;
P5OUT&=~BIT2;
P5OUT|=BIT3;
if(exitjsq>100)
{
disp_lcd(0,0,0,0,0);
tljish = 0;
//timeoverf = 0;
FLAG&=~BIT5;
//testend_led = 1;
P5OUT&=~BIT0;
P5OUT&=~BIT1;
P5OUT&=~BIT3;
/*prep_led = 0;*/
P5OUT|=BIT2;
FLAG2&=~BIT3; //////////清除空闲标志
FLAG&=~BIT3; //////////建立插卡测试标志位
delay(200); //延时60ms
ycsjre64();
goto next_test;
}
}
goto mainloop;
}
next_test: P3OUT|=BIT0; //打开外部电源
m=0;
sound_s();
ywqzjsq=0x00;
exitjsq=0;
while(ywqzjsq<3000) //延时等待
{
//delay(200);
if(ywqzjsq==0x05) sound_s();
if (exitjsq >700)
{
exitjsq=0;
//TR0 = 0;
TACTL&=~MC1; //定时器暂停
//EX0 = 0;
P2IE&=~BIT6; //
//EX1 = 0;
P2IE&=~BIT7; //禁止外部中断
tljish = 0;
//int0f = 0;
FLAG&=~BIT6;
//int1f = 0;
FLAG&=~BIT7;
//timeoverf = 0;
FLAG&=~BIT5;
sound_s();
delay(200);
delay(200);
delay(200);
goto testend;
}
if(((P1IN&BIT2)!=0)&&((FLAG&BIT3)!=0))
{
//TR0 = 0;
TACTL&=~MC1; //定时器暂停
//EX0 = 0;
P2IE&=~BIT6; //
//EX1 = 0;
P2IE&=~BIT7; //禁止外部中断
tljish = 0;
//int0f = 0;
FLAG&=~BIT6;
//int1f = 0;
FLAG&=~BIT7;
//timeoverf = 0;
FLAG&=~BIT5;
goto testend;
}
}
delay(200);
delay(200);
delay(200);
delay(200);
//sound_s();
for (i=0;i<=5;i++)
{
for (j=0;j<=5;j++)
{
delay(200);
//if (card_sw == 1)
if((P1IN&BIT2!= 0)&&(FLAG&BIT3!=0))
{
delay(240);
//if (card_sw == 1)
if((P1IN&BIT2!=0)&&(FLAG&BIT3!=0))
{
//TR0 = 0;
TACTL&=~MC1; //定时器暂停
//EX0 = 0;
P2IE&=~BIT6; //
//EX1 = 0;
P2IE&=~BIT7; //禁止外部中断
tljish = 0;
//int0f = 0;
FLAG&=~BIT6;
//int1f = 0;
FLAG&=~BIT7;
//timeoverf = 0;
FLAG&=~BIT5;
goto testend;
}
}
}
}
/////////////////////////////
/*prep_led = 1;*/
P5OUT|=BIT1;
/*test_led = 0;*/ //测试开始
P5OUT&=~BIT2;
dotime = 0;
disp1 = 6;
disp2 = 0;
disp3 = 0;
IC_error = 0;
//int0f = 0;
FLAG&=~BIT6;
//int1f = 0;
FLAG&=~BIT7;
FLAG&=~BIT5; ///////////////////
sound_star();
TAR=0X3caf; //初始化定时器内容
/*ET0 = 1;
TR0 = 1;
IT0 = 1;
EX0 = 1;
IT0 = 1;
IT1 = 1;
EX1 = 1;
IT1 = 1;*/
TACTL|=TAIE+MC1; //允许定时器中断,允许定时器开始工作
P2IE|=BIT6+BIT7; //开启外部中断
//firstnum = 0;
FLAG&=~BIT4;
//while (timeoverf == 0)
//while (timeoverf == 0)
exitjsq=0;
breaknum=50;
while((FLAG&BIT5)==0)//////////////////////////////////////////////////////////////////
{
delay(10);
if((FLAG&BIT3)!=0)
{
delay(10);
if((P1IN&BIT2)==0) goto loop4;
delay(200);
//TR0 = 0;
TACTL&=~MC1; //定时器暂停工作
//EX0 = 0;
//EX1 = 0;
P2IE&=~(BIT6+BIT7); //禁止外部中断
tljish = 0;
//int0f = 0;
FLAG&=~BIT6;
//int1f = 0;
FLAG&=~BIT7;
//timeoverf = 0;
FLAG&=~BIT5;
goto testend;
}
loop4: delay(10);
if (breaknum == 0)
{
breaknum = 50;
//TR0 = 0;
TACTL&=~MC1; //定时器暂停工作
goto endend;
}
if (exitjsq >700)
{
exitjsq=0;
//TR0 = 0;
TACTL&=~MC1; //定时器暂停工作
delay(200);
delay(200);
goto testend;
}
//if (firstnum == 0)//////////////
if((FLAG&BIT4)==0)
{
//if (int0f == 1)//////////
if((FLAG&BIT6)!=0)
{
//firstnum = 1;
FLAG|=BIT4;
sound_s();
dotime++;
//int0f = 0;
FLAG&=~BIT6;////////
//int1f = 0;
FLAG&=~BIT7;
goto firstnumend;
}
else
{
//int0f = 0;
FLAG&=~BIT6;
//int1f = 0;
FLAG&=~BIT7;
}
}
//if (int1f == 1)
if((FLAG&BIT7)!=0)
{
//if (int0f == 1)
if((FLAG&BIT6)!=0)
{
//int0f = 0;
FLAG&=~BIT6;
//int1f = 0;
FLAG&=~BIT7;
sound_s();
dotime++;
breaknum = 50;
//EX1 = 1;
P2IE|=BIT7;
}
else
{
//EX1 = 0;
P2IE&=~BIT7;
}
}
firstnumend:
//if ((input1_p == 1 ) && (input2_p == 1))
//if ((P2IN&BIT6)!=0)&&((P2IN&BIT7)!=0))
if ((P2IN&0xc0)==0xc0)
{
breaknum--;
delay(200);
//delay(200);
//delay(200);
}
}
///////////////////////////////////////////////////////////////////////////////////
/////////////////////////////
endend:
//EX0 = 0;
//EX1 = 0;
FLAG&=~BIT3; /////////////////////
P2IE&=~(BIT6+BIT7);
b = dotime;
/////////////////////////////
HEX_BCD(b);
disp_lcd(0,BCD[5],BCD[6],BCD[7],0);
//test_led = 1;
//P5OUT&=~BIT2;
//testend_led = 0;
//P5OUT|=BIT3;
delay(255);
sound_s();
delay(255);
delay(255);
FLAG&=~BIT3;
if((P1IN&BIT2) != 0)
{
/*incard_led = 1;*/
P5OUT|=BIT0;
/*test_led = 1;*/
P5OUT&=~BIT3;
/*incard_led = 1;*/
P5OUT&=~BIT2;
/*testend_led = 0;*/
P5OUT&=~BIT1;
for(i=0;i<50;i++)
delay(200);
goto testend;
}
delay(255);
delay(255);
delay(255);
delay(255);
//while (card_sw == 1)//是否插卡
FK_error1:
a=0;
while ((P1IN&BIT2) != 0)
{
FK_error:
disp_lcd(0x0c,0x0c,0x0c,0x0c,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;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -