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

📄 msp430ywqzkok.c

📁 tiMSP430F147体能监测设备源码
💻 C
📖 第 1 页 / 共 2 页
字号:
			sound_s();
			delay(50);
			/*addnumbf = 0;*/      //没用上
			/***********************/	
			//测试结束,存储数据
			//while (card_sw == 1)//是否插卡
			while ((P1IN&BIT2) != 0)
			{
	FK_error:	disp_lcd(0x0d,0x0c,0x0c,0x0d,0); 
				//EA = 0;
				_DINT();
				sound_s();
				//EA = 1;
				_EINT();
				delay(255);
				a++;
				if (a == 5)
				{
					disp_lcd(0,0,0,0,0);
					delay(255);
					delay(255);
					delay(255);
					goto e_lop;
				}
			}
			IC_error = 0x00;
			a = IC_read(0x00);
			if (IC_error == 0xff)
			{
				sound_s();
				goto FK_error;		//卡查反
			}
			a = (BCD[6]<<4)+BCD[7];
			IC_write(SG_save1,a);
			delay(20);
			a = (BCD[4]<<4)+BCD[5];
			IC_write(SG_save0,a);	
			delay(20);
			IC_write(SG_flag,1);
	
								
														
disp_end:		/*test_led = 1;*/
                        P5OUT&=~BIT2; 
			/*incard_led = 1;*/
			P5OUT&=~BIT0; 
			/*testend_led = 0;*/
			P5OUT|=BIT3; 
			sound_s();
			//while(card_sw == 0)   
			while((P1IN&BIT2) == 0)
			{
				a = IC_read(SG_save0);
				BCD[4] = a>>4;
				a = a<<4;
				BCD[5] = a>>4;
				a = IC_read(SG_save1);
				BCD[6] = a>>4;
				a = a<<4;
				BCD[7] = a>>4;
				disp_lcd(BCD[4],BCD[5],BCD[6],BCD[7],3);
				i = 0;
				//while(card_sw == 0&&i != 0xffff)  
				while((P1IN&BIT2) == 0&&i != 0xffff)
					i++;
				//if(card_sw == 1)     (P1IN&BIT2)
				if((P1IN&BIT2) != 0)
					break;
				a = IC_read(TZ_save0);
				BCD[4] = a>>4;
				a = a<<4;
				BCD[5] = a>>4;
				a = IC_read(TZ_save1);
				BCD[6] = a>>4;
				a = a<<4;
				BCD[7] = a>>4;
				disp_lcd(BCD[4],BCD[5],BCD[6],BCD[7],3);
				i = 0;
				//while(card_sw == 0&&i != 0xffff)   
				while((P1IN&BIT2) == 0&&i != 0xffff)
					i++;
				//if(card_sw == 1)
				if((P1IN&BIT2) != 0)
					break;
			}
			//------------------
			a = IC_read(NUM0);
			i = a;
			i = i<<8;
			a = IC_read(NUM1);
			dis[0] = i+a;
			//------------------
			/*incard_led = 1;*/
			P5OUT&=~BIT0; 
			/*prep_led = 1;*/
			P5OUT&=~BIT1; 
			/*test_led = 1;*/
			P5OUT&=~BIT2; 
			//testend_led = 0;
			P5OUT|=BIT3; 
			a = 0;
	lop:	//while(card_sw == 0);  
	        while((P1IN&BIT2) == 0);
			delay(15);
			//if(card_sw == 0)   
			if((P1IN&BIT2) == 0)
				goto lop;
			delay(255);
			delay(255);
			delay(255);
			delay(255);
			delay(255);
			delay(255);
			delay(255);
			delay(255);
			delay(255);
			//while(card_sw == 0)    
			while((P1IN&BIT2) == 0)
			{
				a = IC_read(NUM0);
				i = a;
				i = i<<8;
				a = IC_read(NUM1);
				i = i+a;
				if(i == dis[0])
				{
					//testend_led = 1;
					P5OUT&=~BIT3; 
					disp_lcd(0,0,0,0,0);
					goto next_test;	
				}	
			}
			
		}
				
		
e_lop:	delay(10);
		/*incard_led = 0;*/
		P5OUT|=BIT0; 
		/*prep_led = 1;*/
		P5OUT&=~BIT1; 
		/*test_led = 1;*/
		P5OUT&=~BIT2; 
		/*testend_led = 1;*/
		P5OUT&=~BIT3; 
		disp_lcd(0x0d,0x0d,0x0d,0x0d,0);
		//}	 	
	}
}
uint BCD_HEX(void) 
{
	uint dat;
	uint i,dd;
	dd=1000;dat=0;
	for (i=4;i<8;i++) 
	{
		dat+=dd*BCD[i];
		dd/=10;
	}
	return(dat);
}
void init(void)
{
	//P1 = 0xff;
	/*sound = 0;*/
	P5OUT&=~BIT7;     //关闭蜂鸣器
	/*incard_led = 1;*/
	P5OUT&=~BIT0;
	/*prep_led = 1;*/
	P5OUT&=~BIT1; 
	/*test_led = 1;*/
	P5OUT&=~BIT2; 
	/*testend_led = 1;*/
	P5OUT&=~BIT3; 
	IC_error = 0x00;
	data_int = get100da();
	//TMOD = 0x21;
	//EA = 1; 
	_EINT();
}	
void disp_lcd(uchar d1,uchar d2,uchar d3,uchar d4,uchar dot)
{
	uchar disp1[5],i1,j1,a1;
	disp1[0] = 0xff;
	disp1[1] = ledtab[d1];
	disp1[2] = ledtab[d2];
	disp1[3] = ledtab[d3];
	disp1[4] = ledtab[d4];
	switch(dot)
	{
		case 1:
			disp1[1] = leddottab[d1];
			break;
		case 2:
			disp1[2] = leddottab[d2];	
			break;
		case 3:
			disp1[3] = leddottab[d3];	
			break;
		case 4:
			disp1[4] = leddottab[d4];	
			break;
	}
				
	for (i1=0;i1<5;i1++)
	{
		a1 = disp1[i1];
		for (j1=0;j1<8;j1++)
		{       P5OUT&=~BIT5;            // 先将第五位清零 
		        P5OUT|=((al&0x01)*32);   // 使最低位0位移到第5位
			a1 = a1>>1;
			/*dat = CY;*/
			
	       		/*clk = 1; 
	      		clk = 0;
	      		clk = 1;*/
	      		P5OUT|=BIT4;
	      		P5OUT&=~BIT4;
	      		P5OUT|=BIT4;
			
   		}	
	}
}

/*uint getdata(void)
{
	uchar i;
	uint b;
	MAX197 = 0x40;
	for(i=0;i<5;i++);
	data_selet = 1;
	b = MAX197<<8;
	data_selet = 0;
	b = b+MAX197;
	return b;
}*/
uint getdata(void)
{
       uint b;
       while ((ADC12IFG & ADC12BUSY)==0);
       b = ADC12MEM0;                      //将转换的数据送到b
       ADC12CTL0 |= ADC12SC;               // Start conversion
       return b;
}



unsigned long get100da(void)
{
	uchar i;
	unsigned long j = 0;
	for (i=0;i<100;i++)
		j = j+getdata();
	j = j/100;
	return j;
}
/*void get_data(void)
{
	uchar i;
	P2 = 0xc0;
	while(1)
	{
next:	while(RI == 0);
		RI = 0;
		while(SBUF == 0x40)
			for(i=0;i<3;i++)
			{
				while(RI == 0);
				RI = 0;
				comdata[i] = SBUF;
			}
			if (comdata[0] == 0x40)
				goto next;
			if (comdata[1] == 0x40)
				goto next;
			if (comdata[2] == 0x40)
				goto next;
			goto end;
	}
	
	P2 = 0xff;
end:;
}*/
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 delay(uchar ti)
{
	uchar i;
	uchar j;
	for (i=0;i<ti;i++)
		for (j=0;j<255;j++);
			
}
void sound_s(void)
{
	/*sound = 1;*/
	P5OUT|=BIT7;     //打开蜂鸣器
	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()
{
        P3DIR|=SCL430+SDA430;   //将SCL SDA定义为输出
        P3OUT|=SDA430;          //将SDA置1
        nop();
        nop();
        P3OUT|=SCL430;          //SCL=1
        nop();
        nop();
        P3OUT&=~SDA430;         //SDA=0;
        nop();
        nop();
        P3OUT&=~SCL430;         //SSCL=0
        nop();
        nop();
}
/*void stop()
{
   	sda=0; 
   	nop(); 
   	scl=1; 
   	nop(); 
   	sda=1; 
   	nop();
}*/
void stop430()
{
       P3OUT&=~SDA430;       //SDA=0
       nop();
       nop();
       P3OUT|=SCL430;        //SCL=1
       nop();
       nop();
       P3OUT|=SDA430;        //SDA=1
       nop();
       nop();
}
/*void writex(uchar j)
{
   	uchar i,temp;
   	temp=j;
   	for (i=0;i<8;i++)
   	{
      		temp=temp<<1; 
      		scl=0; 
      		nop(); 
      		sda=CY; 
      		nop(); 
      		scl=1; 
      		nop();
   	}
   	scl=0; 
   	nop(); 
   	sda=1; 
   	nop();
}*/
void writex430(uchar j)
{      
        uchar i,temp;
   	temp=j;
   	for (i=0;i<8;i++)
   	{
   	     P3OUT&=~SCL430;    //SCL=0;
   	     nop();
   	     nop();
   	     P3OUT&=~SDA430;   
   	     P3OUT|=(temp&0x80)/32; //sda=temp的最高位
   	     temp=temp<<1;
   	     nop();
   	     nop();
   	     P3OUT|=SCL430;    //SCL=1;
   	     nop();
   	     nop();
   	  }
   	P3OUT&=~SCL430;
   	nop();
   	nop();
   	P3OUT|=SCL430;
   	nop();
   	nop();
   	nop();
   	nop();
}
   	  
/*uchar readx()
{
   	uchar i,j,k=0;
   	scl=0; 
   	nop(); 
   	sda=1;
   	for (i=0;i<8;i++)
   	{
      		nop(); 
      		scl=1; 
      		nop();
      		if (sda==1) j=1;
      		else j=0;
      		k=(k<<1)|j; 
      		scl=0;
   	}
   	nop(); 
   	return(k);
}*/

uchar readx430()
{
     uchar i,j,k=0;
     P3OUT&=~SCL430;   ///SCL=0;
     nop();
     nop();
     P3DIR&=~SDA430;   //SDA为输入状态
     for (i=0;i<8;i++)
     {
          nop();
          nop();
          P3OUT|=SCL430;  //SCL=1;
          nop();
          nop();
          if((P3IN&SDA430)==0) j=0;
          else j=1;
          k=(k<<1)|j;
          P3OUT&=~SCL430; //SCL=0;
     }
          nop();
          nop();
          P3DIR|=SDA430;  //SDA为输出状态
          nop();
          nop();
          return(k);
 }

/*void clock()
{
   	IC_error=0;
   	scl=1; 
   	nop();
   	while ((sda==1)&&(IC_error<255))IC_error++;
   	scl=0; 
   	nop();
}*/
////////////////////////////////////////////////////////////////////////////////
void clock430()
{
        P3DIR&=~SDA430; //SDA为输入状态
        IC_error=0x00;
        P3OUT|=SCL430;  //SCL=1
        nop();
        nop();
        while(((P3IN&SDA430)!=0)&&(IC_error<255)) IC_error++;
        P3OUT&=~SDA430; //SDA=0
        nop();
        nop();
        P3DIR|=SDA430;  //SDA为输出状态
        nop();
        nop();
 }
////////////////////////////////////////////////////////////////////////////////


uchar IC_read(uchar address)
{
   	uchar i;
   	start430(); 
   	writex430(ICID_W);
   	clock430(); 
   	writex430(address);
   	clock430(); 
   	start430();
   	writex430(ICID_R); 
   	clock430();
   	i=readx430(); 
   	stop430();
   	delay1(10);
   	return(i);
}
void IC_write(uchar address,uchar info)
{
   	//EA=0;
   	_DINT();
   	start430(); 
   	writex430(ICID_W);
   	clock430(); 
   	writex430(address);
   	clock430(); 
   	writex430(info);
   	clock430(); 
   	stop430();
   	//EA=1;
   	_EINT();
   	delay1(50);
}
uchar IC_R(uchar address)
{
   	uchar i;
   	start430(); 
   	writex430(IC_ID_W);
   	clock430(); 
   	writex430(address);
   	clock430(); 
   	start430();
   	writex430(IC_ID_R); 
   	clock430();
   	i=readx430(); 
   	stop430();
   	delay1(10);
   	return(i);
}
void IC_W(uchar address,uchar info)
{
   	//EA=0;
   	_DINT();
   	start430(); 
   	writex430(IC_ID_W);
   	clock430(); 
   	writex430(address);
   	clock430(); 
   	writex430(info);
   	clock430(); 
   	stop430();
   	//EA=1;
   	_EINT();
   	delay1(50);
 }
 

⌨️ 快捷键说明

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