5418a 并行通信传递16个浮点数,时序方面有问题,请指点

2019-03-24 14:30发布

双机通信,传递浮点数,使用并口。
主机判断P2.7上升沿读数据程序如下:
float TXD_float(void)
{
    char tt[4];
    uchar i;//while( P8IN & BIT3 )
    for(i=0;i<4;i++)
    {
      while(!(P2IN & 0x80));
      tt=P3IN;
      while(P2IN & 0x80);
    }
  return(atof(tt));
}

void main(void)   //send command
{
    P4DIR=0XFF;
    P4OUT|=0X0C; //CS3,CS4
   
    uchar i=0;
    P3DIR =0X00;  //DATA
    P2DIR &= ~BIT7; //WR
    for(i=0;i<16;i++)
    {
      value_pdBm_IL=TXD_float();
    }
    P4OUT&=0XF3; //CS3,CS4
    delay_us(20);
}

从机使用终端接收,程序如下:

#define LCD_WR_H() P2OUT |= BIT7
#define LCD_WR_L()  P2OUT &= ~BIT7

void BUS_TXD(uchar Command)   //send command
{
    P3OUT = Command;
    LCD_WR_H();
    LCD_WR_L();
}

/************************************************/
void uart_send_str(const char *data_point)
{
  while(1)
  {
    if(*data_point=='')
     break;
    else
    {
     BUS_TXD(*data_point);
     data_point++;
    }
  }
}


#pragma vector=PORT1_VECTOR
__interrupt void port1_ser( void )
{
  _DINT();  //通过中断程序数据发送
  uchar i;
  if(P1IN == 0X03) //模块地址,可以修改
  {
    P2DIR |= 0X80;
    P3DIR |= 0XFF;
    //P2OUT |= 0X80;
    for(i=0;i<16;i++)
    {
      if(P1IN == 0X03) //mokuaidizhi
      {
      sprintf(TxBuf,"%6.2f",value_pdBm_IL);
      uart_send_str(TxBuf);
      }
      else
        break;
    }
    P3DIR =0X00;
    P2DIR &=0X1F;
  }
  P1IFG  = 0;
  _EINT();
}

[ 本帖最后由 shzps 于 2012-5-1 18:40 编辑 ] 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
shzps
1楼-- · 2019-03-24 16:57

并行通信好呢,还是i2c好呢?谁有这方面的实例啊。

[ 本帖最后由 shzps 于 2012-5-1 18:41 编辑 ]
shower.xu
2楼-- · 2019-03-24 19:23
< :TI_MSP430_内容页_SA7 --> for(i=0;i<4;i++)
{
while(!(P2IN & 0x80));
tt=P3IN;
pp=0;
while(P2IN & 0x80);
}
shower.xu
3楼-- · 2019-03-25 01:00
 精彩回答 2  元偷偷看……

一周热门 更多>

相关问题

    相关文章