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

📄 msp430ldty.c

📁 tiMSP430F147体能监测设备源码
💻 C
📖 第 1 页 / 共 5 页
字号:
	     FLAG2&=~BIT3;
	     //if((P2IN&BIT1)==0) m++;                  //如果按下确认键则m一直加一,否则m=0
	     //else m=0;             
             if(((P1IN&BIT2)==0)&&(exitjsq>100))      //如果插卡且时间超过600ms
	     {
	     	//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)
	  {
	      FLAG2|=BIT3;                              //
	      //delay(200);                             //延时60ms
	      //if((P2IN&BIT1)==0) m++;
	      //else m=0;                               //如果按下确认键则m一直加一,否则m=0
	      P5OUT&=~BIT0;
	      P5OUT&=~BIT1;
	      P5OUT&=~BIT2;
	      P5OUT|=BIT3;
	      P5OUT&=~BIT1;
	      if(exitjsq>100)
	     {
	          disp_lcd(0,0,0,0,0);
	          //testend_led = 1;
		 P5OUT&=~BIT0; 
		 /*prep_led = 0;*/
		  P5OUT&=~BIT1;
		  P5OUT&=~BIT3;
		  P5OUT|=BIT2;
		  FLAG2&=~BIT3;                         //////////清除空闲标志
		  FLAG&=~BIT3;                          //////////复位插卡测试标志位
		  delay(200);                        //延时60ms
		  ycsjre64();
	          goto next_test;	
	       }
	   }
	   goto mainloop; 
        }
  next_test:  m=0;
	      //sound_s();
	      /*prep_led = 1;*/
	      P5OUT|=BIT1; 	
	      /*test_led = 0;*/		//测试开始
	      P5OUT&=~BIT2;
	      //delay(200);
		//delay(200);
		//delay(200);
	      for (c=1;c<4;c++)
	      {	
		disp_lcd(0,0,0,c,0);
		sound_s();
		//receive = 0;
		P3OUT|=BIT4;                  //
		delay(200);
		delay(200);
		delay(200);
		delay(200);
		delay(200);
		delay(200);
		delay(200);
		delay(200);
		delay(200);
		delay(200);
		//receive = 1;
		P3OUT&=~BIT4;                 //
		//disp_lcd(0,0,0,8,0);
		//delay(20);
  receivecon:	while (1)
	       {   
	           TBCTL|=TBIE;
	       	   //while((RI == 0)&&(card_sw==0));
	       	   while((IFG1&URXIFG0)==0)
	       	   {
	       	   	if(((P1IN&BIT2)!=0)&&((FLAG&BIT3)!=0)) goto testend;
	       	   	if(exitjsq>700) goto testend;
	       	   	//delay(200);
			//delay(200); 
			//delay(200);                      //延时60ms
		        //if((P2IN&BIT1)==0) m++; 
			//else m=0;
			//if(m>30) goto programbegin;
		   }
		   TBCTL&=~TBIE;
		   a=RXBUF0;
		   switch  (a)
	           {
			case 0xee:
			          disp_lcd(0x0c,0x0c,0x0c,0x0c,0);
				  sound_s();
				  delay(200);
				  delay(200);
				  delay(200);
				  disp_lcd(0,0,0,0,0);
				  break;
		        case 0xdd:
		                  while((IFG1&URXIFG0)==0);
	       	                  data1 = RXBUF0;
	       	                  guancha1=RXBUF0;
	       	                  while((IFG1&URXIFG0)==0);
	       	                  data2 = RXBUF0;
	       	                  guancha2=RXBUF0;
	       	                  goto receivend;
		    }
		}
   receivend:
	      dis[c] = 0;
	      dis[c]=((dis[c]+data1)<<8)+data2;
	      HEX_BCD(dis[c]);                               //最大值
	      disp_lcd(BCD[4],BCD[5],BCD[6],BCD[7],0);
	      sound_s();
	      if((c==1)&&((FLAG&BIT3)!=0))
	      {
	        ////////////////////////////////////////////////////////////
	        ME2&=~URXE1; 
	        delay(50);
	        lsbuf=(uint)(re1byte(0x00));
                lsbuf=(uint)(lsbuf*256+re1byte(0x01));
                if(lsbuf<2700)
                {
	        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);
		//delay(200);
		//delay(200);
		//delay(200);
		//delay(200);
		//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);
               }
	    ////////////////////////////////////////////////////////////
	      
	      }
	      if((c==2)&&((FLAG&BIT3)!=0))
	      {
	         ////////////////////////////////////////////////////////////
	         delay(50);
	         lsbuf=(uint)(re1byte(0x00));
                 lsbuf=(uint)(lsbuf*256+re1byte(0x01));
                 if(lsbuf<2700)
                 {
	         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);
		 //delay(200);
		 //delay(200);
		 //delay(200);
		 //delay(200);
		 //delay(200);
                 //FLAG2&=~BIT0;
                 lsbuf=(uint)(re1byte(0x00));
                 lsbuf=(uint)(lsbuf*256+re1byte(0x01));
                 lsbuf--;//////////////////////////////////////////////////////////
                 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);
	    ////////////////////////////////////////////////////////////
	      
	      }
	      for (b=0;b<17;b++)
	      {
		 delay(255);
		 delay(255);
		 delay(255);
	       }   
	   }	
	   b = 2;
	   a = 1;
	   while(b != 4)							
	  {
	      if(dis[a]>=dis[b])
	      ++b;
	      else
	      {
	          a = b;	++b;
	       }
	   }
	   if((FLAG&BIT3)==0)
	    {
	    	delay(255);
	        delay(200);
	        HEX_BCD(dis[a]);
	        disp_lcd(BCD[4],BCD[5],BCD[6],BCD[7],0);/*显示*/
	    	for(i=0;i<50;i++)
                delay(200);
		goto testend;
	    }
	   
	   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);
	    }//
	    delay(255);
	    delay(200);
	    HEX_BCD(dis[a]);
	    disp_lcd(BCD[4],BCD[5],BCD[6],BCD[7],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;
		 }
	    }
	    IC_error = 0;
	    a = IC_read(0x00);
	    if(IC_error == 0xff)
	    {
		sound_s();
		goto FK_error;		//卡查反
	    }
	    
	    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);                  
            sound_s();
	    a = IC_read(FYS_save0);
	    BCD[4] = a>>4;
	    a = a<<4;
	    BCD[5] = a>>4;
	    a = IC_read(FYS_save1);
	    BCD[6] = a>>4;
	    a = a<<4;
	    BCD[7] = a>>4;
	    disp_lcd(BCD[4],BCD[5],BCD[6],BCD[7],0);
	    //------------------
	    a = IC_read(NUM0);
	    i = a;
	    i = i<<8;
	    a = IC_read(NUM1);
	    dis[0] = i+a;
	    //------------------
	    /*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;
}
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);
			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;
			a = IC_read(FYS_flag);
			if (a!=0)
			{
			   //repeatestf = 0xb0;
			   //goto disp_end;	//已经测试,显示结果
			   /*prep_led = 0;*/
			    P5OUT|=BIT0;
			    /*incard_led = 1;*/
			    P5OUT&=~BIT3; 
			    /*P5OUT|=BIT0; */
			    P5OUT&=~BIT1;
			   xsjg();
			}
			else
			{
			   P5OUT&=~BIT3; 
			   /*P5OUT|=BIT0; */
			   P5OUT&=~BIT0; 

⌨️ 快捷键说明

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