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

📄 msp430sgtz.c

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