⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 msp430ywqztry.c

📁 tiMSP430F147体能监测设备源码
💻 C
📖 第 1 页 / 共 5 页
字号:
        /*incard_led = 1;*/
	P5OUT&=~BIT0;
	/*prep_led = 1;*/
	P5OUT&=~BIT1; 
	/*test_led = 1;*/
	P5OUT&=~BIT2; 
	/*testend_led = 1;*/
	P5OUT&=~BIT3; 
        P3OUT&=~BIT0;                         //关断外部电源
        P4OUT&=~BIT3;                         //关断外部电源
        P4OUT&=~BIT2;
        LPM4;                                 //如果欠电超过2分钟,进入超低功耗状态
      }
      if(loatadbuf<3200) goto waitloop;
      if((loatad>3200)&&(FLAG5&BIT4)!=0)
      {  
         loatjsq=0;                   //欠压计数器清零
         disp_lcd(0xd,0xd,0xd,0xd,0x0);
         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();
	              delay(200);
	              ywqzjsq=0x00;
	              exitjsq=0;
	              P2IFG=0X00;
                      FLAGTRY=0X55;
                      FLAG10=0x55;
			        
	                      /////////////////////////////
			       /*prep_led = 1;*/
			        P5OUT|=BIT1; 	
			        /*test_led = 0;*/		//测试开始
			        P5OUT&=~BIT2;
			       dotime = 0;
			       disp1 = 0;
			       disp2 = 0;
			       disp3 = 0;
			       IC_error = 0;
			       //int0f = 0;
			       FLAG&=~BIT6;
			       //int1f = 0;
			       FLAG&=~BIT7;
			       FLAG&=~BIT5;                  ///////////////////                
			       sound_star();
			       //TAR=0X3caf;                   //初始化定时器内容
			       TAR=0XFC17;
			       /*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;
		              while((FLAGTRY==0X55)||(FLAGTRY==0Xaa))
		              {
		              	    if(FLAGTRY==0xaa)
		              	    {HEX_BCD(jishi1);
				    disp_lcd(BCD[4],BCD[5],BCD[6],BCD[7],0);
				    }
		              	    delay(30);
		              	   
		               }                                                             
		      endend:
				//EX0 = 0;
				//EX1 = 0;
				FLAG&=~BIT3;                      /////////////////////
				P2IE&=~(BIT6+BIT7);
				b = jishi1;
				/////////////////////////////
				  HEX_BCD(b);
				  disp_lcd(BCD[4],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);
				  delay(255);
				  delay(255);
				  delay(255);
				  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;
					}
				  }
				IC_error = 0;
				a = IC_read(0x00);
				if (IC_error == 0xff)
				{
					sound_s();
					goto FK_error;		//卡查反
				}
				IC_error = 0;//
				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);
	                        }//
				////////////////////////////////////////////////////////////
				readicid();                     //读取卡号
				result[0]=0x00;
				result[1]=0x00;
				result[2]=BCD[5];
				result[3]=(BCD[6]<<4)+BCD[7];
				FLAG2|=BIT0;                    //置数据有标志,可进行发送
				//disp_lcd(0x01,0x01,0x01,0x01,0);
				for(i=0;i<5;i++)
				delay(200);
                                FLAG2&=~BIT0;
                                lsbuf=(uint)(re1byte(0x00));
                                lsbuf=(uint)(lsbuf*256+re1byte(0x01));
                                for(ii=0;ii<8;ii++)
                                {
                                    temp=icidbuf[ii];
                                    wr1byte(0x40+12*lsbuf+ii,temp);
                                    delay(50);
                                 }
                                 for(ii=0;ii<4;ii++)
                                 {
                                     temp=result[ii];
                                     wr1byte(0x40+12*lsbuf+8+ii,temp);
                                     delay(50);
                                 }
                                lsbuf++;
                                at64count++;
                                temp=(uchar)(lsbuf/256);
                                wr1byte(0x00,temp);
                                delay(50);
                                temp=(uchar)(lsbuf%256);
                                wr1byte(0x01,temp);
                                delay(50);
				////////////////////////////////////////////////////////////
				a = (BCD[6]<<4)+BCD[7];
				IC_write(FYS_save1,a);
				delay(20);
				a = BCD[5];
				IC_write(FYS_save0,a);	
				delay(20);
				IC_write(FYS_flag,1);
				delay(20);	
disp_end:		
				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);
				sound_s();
				
				/*incard_led = 1;*/
	                        P5OUT|=BIT0; 
	                        /*test_led = 1;*/
                                P5OUT&=~BIT3; 
                                /*incard_led = 1;*/
	                        P5OUT&=~BIT2; 
	                        /*testend_led = 0;*/
			        P5OUT&=~BIT1; 
			        FLAG&=~BIT3;
			        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;
		                goto mainloop; 
				
	               disp_lcd(0x0d,0x0d,0x0d,0x0d,0);
        
}
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
		  {
		  	/*prep_led = 0;*/
			//P5OUT|=BIT1;
			/*incard_led = 1;*/
			P5OUT&=~BIT0; 
			/*P5OUT|=BIT0; */
			a = IC_read(NUM0);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -