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

📄 msp430ywqz.c

📁 tiMSP430F147体能监测设备源码
💻 C
📖 第 1 页 / 共 5 页
字号:
         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 + -