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

📄 msp430sgtz.c

📁 tiMSP430F147体能监测设备源码
💻 C
📖 第 1 页 / 共 5 页
字号:
        nop();
        nop();
        nop();
        nop();
        nop();
        nop();
        nop();
        nop();
        nop();
        P4OUT&=~SDA64;         //SDA=0;
        nop();
        nop();
        nop();
        nop();
        nop();
        nop();
        nop();
        nop();
        nop();
        nop();
        P4OUT&=~SCL64;         //SCL=0
        nop();
        nop();
        nop();
        nop();
        nop();
        nop();
        nop();
        nop();
        nop();
        nop();
}
 
 void stopb64(void)
{
	P4OUT&=~SDA64;       //SDA=0
        nop();
        nop();
        nop();
        nop();
        nop();
        nop();
        nop();
        nop();
        nop();
        nop();
        P4OUT|=SCL64;        //SCL=1
        nop();
        nop();
        nop();
        nop();
        nop();
        nop();
        nop();
        nop();
        nop();
        nop();
       P4OUT|=SDA64;        //SDA=1
        nop();
        nop();
        nop();
        nop();
        nop();
        nop();
        nop();
        nop();
        nop();
        nop();
}     
 
 void byte_tx(uchar shu) /*  发送一个字节  */
{
	
	uchar i,temp,temp1;
   	temp=shu;
   	for (i=0;i<8;i++)
   	{
   	     P4OUT&=~SCL64;    //SCL=0;
   	     nop();
             nop();
             nop();
             nop();
             nop();
             nop();
             nop();
             nop();
             nop();
             nop();
   	     //P3OUT&=~SDA430;
   	     nop();
   	     nop();
   	     temp1=(temp&0x80);
   	     if(temp1==0) P4OUT&=~SDA64;
   	     else P4OUT|=SDA64;  
   	     /*P3OUT|=((temp&0x80)/32); //sda=temp的最高位*/
   	     temp=temp<<1;
   	     nop();
             nop();
             nop();
             nop();
             nop();
             nop();
             nop();
             nop();
             nop();
             nop();
   	     P4OUT|=SCL64;    //SCL=1;
   	     nop();
             nop();
             nop();
             nop();
             nop();
             nop();
             nop();
             nop();
             nop();
             nop();
   	     
   	  }
   	P4OUT&=~SCL64;       //SCL=0
   	nop();
        nop();
        nop();
        nop();
        nop();
        nop();
        nop();
        nop();
        nop();
        nop();
   	P4OUT|=SDA64;      //SDA=1
   	nop();
        nop();
        nop();
        nop();
        nop();
        nop();
        nop();
        nop();
        nop();
        nop();
}
 
uchar byte_rx(void)  /*  接收一个字节  */
{
	uchar i,j,k=0;
        P4OUT&=~SCL64;   ///SCL=0;
        nop();
        nop();
        nop();
        nop();
        nop();
        nop();
        nop();
        nop();
        nop();
        nop();
     P4DIR&=~SDA64;   //SDA为输入状态
     for (i=0;i<8;i++)
     {
        
        nop();
        nop();
        nop();
        nop();
        nop();
        nop();
        nop();
        nop();
        nop();
        nop();
        P4OUT|=SCL64;  //SCL=1;
        nop();
        nop();
        nop();
        nop();
        nop();
        nop();
        nop();
        nop();
        nop();
        nop();
        if((P4IN&SDA64)==0) j=0;
        else j=1;
        k=(k<<1)|j;
        nop();
        nop();
        nop();
        nop();
        nop();
        nop();
        nop();
        nop();
        nop();
        nop();
        P4OUT&=~SCL64;  //SCL=0
     }
        nop();
        nop();
        nop();
        nop();
        nop();
        nop();
        nop();
        nop();
        nop();
        nop();
        P4DIR|=SDA64;  //SDA为输出状态
        nop();
        nop();
        nop();
        nop();
        nop();
        nop();
        nop();
        nop();
        nop();
        nop();
        return(k);
 }
 void judg_ack(void) 
{
	P4DIR&=~SDA64; //SDA为输入状态
        nop();
        nop();
        nop();
        nop();
        nop();
        nop();
        nop();
        nop();
        nop();
        nop();
        P4OUT|=SCL64;  //SCL=1;
        nop();
        nop();
        nop();
        nop();
        nop();
        nop();
        nop();
        nop();
        nop();
        nop();
        for(i=0;i<99;i++)
        {
        	if((P4IN&SDA64)==0)
        	break;
        	nop();
         }
        P4OUT&=~SCL64; //SCL=0
        nop();
        nop();
        nop();
        nop();
        nop();
        nop();
        nop();
        nop();
        nop();
        nop();
        P4DIR|=SDA64;  //SDA为输出状态
        P4OUT|=SDA64;  //SDA=1
        nop();
        nop();
        nop();
        nop();
        nop();
        nop();
        nop();
        nop();
        nop();
        nop();
 } 
 
 void wr1byte(uint addr,uchar shu) 
{
	uchar buf;
	_DINT();
	startb64();
	byte_tx(0xa0);
	judg_ack();
	buf=(uchar)(addr/0x100);
	byte_tx(buf);
	judg_ack();
	buf=(uchar)(addr%0x100);
	byte_tx(buf);
	judg_ack();
	byte_tx(shu);
	judg_ack();
	stopb64();
	delay(100);
	_EINT();
}
 
 uchar re1byte(uint addr)
 {
	uchar buf;
	_DINT();
	startb64();
	byte_tx(0xa0);judg_ack();	
        buf=(uchar)(addr/0x100);
	byte_tx(buf);judg_ack();
	buf=(uchar)(addr%0x100);
	byte_tx(buf);judg_ack();
	startb64();
	byte_tx(0xa1);judg_ack();
        buf=byte_rx();
        nop();
        nop();
        nop();
        nop();
        P4OUT|=SDA64;    //sda=1;
        nop();
        nop();
        nop();
        nop();
        P4OUT|=SCL64;   //scl=1;
        nop();
        nop();
        nop();
        nop();
        P4OUT&=~SCL64;   //scl=0;
        nop();
        nop();
        nop();
        nop();
        stopb64();
	_EINT();
	return(buf);
}
void readicid(void)                                           /*************读取卡号****************/
{
	a=0x55;                                               //卡号存在0X55单元开始处
	for(i=0;i<8;i++)
	{
	    icidbuf[i] = IC_read(a);
	    a++;
	 }
}
		
/******************串行通信处理程序***************************/
void  r232cl(void)
{
       ///
       ///
       ///进行预处理
       if((FLAG1&BIT1)!=0)           //如果接收数据完毕则进行相应的处理
       {
       	   if((FLAG1&BIT2)!=0)
       	   {
       	       if((FLAG2&BIT0)!=0)  //正在测试过程中
       	       {
       	       	
       	       }
       	       else
       	       {
       	       }
       	   
       	   
       	   	                    //上位机进行读操作命令的处理
       	    }
       	    if((FLAG1&BIT3)!=0)
       	    {
       	    	///                  //下位机进行写操作命令的处理
       	    }
        }
}
/***************读取串口的数据,通过查询方式********/
/***************数据放到r232buf里******************/
/***************需要关闭中断***********************/
void readuart(void)
{
	uchar temp;
	P4OUT|=BIT3;                                  // P4.3=1打开电源
	r232buf[0]=0;                                 //首先附于初值
	for(r232buf[0]=0;r232buf[0]<39;r232buf[0]++)
	{ 
	        while((IFG2&URXIFG1)==0);              //如果没有接收到数据时,等待  
	        temp=r232buf[0]+1;                       
	        r232buf[temp]=RXBUF1;                  //读取接收缓存区的数据
	}
	delay(255);
	delay(255);                              
	r232buf[40]=RXBUF1;                           //为了将接收缓冲区清空,清除接收标志位                                  
}

void readuart1(void)
{
	//uchar temp;
	//P4OUT|=BIT3;                                // P4.3=1打开电源
	while ((IFG2 & UTXIFG1) == 0);                //USART1 TX buffer ready?
	TXBUF1=0x43;                                  //将信道1发送出去
	while ((IFG2 & UTXIFG1) == 0);                //USART1 TX buffer ready?
	TXBUF1=0x48;                                  //将信道1发送出去
	while ((IFG2 & UTXIFG1) == 0);                //USART1 TX buffer ready?                                               
	TXBUF1=0x0d; 	
        while ((IFG2 & UTXIFG1) == 0);                //USART1 TX buffer ready?                                               
	TXBUF1=0x0a;                                  //发送确认键
	for(r232buf[0]=0;r232buf[0]<5;r232buf[0]++)
	{ 
	        while((IFG2&URXIFG1)==0);              //如果没有接收到数据时,等待                       
	        r232buf[r232buf[0]+1]=RXBUF1;                  //读取接收缓存区的数据
	}
	delay(255);
	delay(255);                              
	r232buf[40]=RXBUF1;                           //为了将接收缓冲区清空,清除接收标志位                                  
}
void readuart2(void)
{
	//uchar temp;
	//P4OUT|=BIT3;                                // P4.3=1打开电源
	while ((IFG2 & UTXIFG1) == 0);                //USART1 TX buffer ready?
	TXBUF1=0x52;                                  //将信道1发送出去
	while ((IFG2 & UTXIFG1) == 0);                //USART1 TX buffer ready?
	TXBUF1=0x53;                                  //将信道1发送出去
	while ((IFG2 & UTXIFG1) == 0);                //USART1 TX buffer ready?                                               
	TXBUF1=0x0d; 	
        while ((IFG2 & UTXIFG1) == 0);                //USART1 TX buffer ready?      

⌨️ 快捷键说明

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