zps110 发表于 2012-5-1 11:41:55

5418a 并行通信时,传递浮点数,判断上升沿,请指点

本帖最后由 zps110 于 2012-5-1 18:41 编辑

双机通信,传递浮点数,使用并口。
主机判断P2.7上升沿读数据程序如下:
float TXD_float(void)
{
    char tt;
    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=='\0')
            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();
}

zps110 发表于 2012-5-1 11:43:49

双机通信是并行通信好呢,还是i2c好呢?
页: [1]
查看完整版本: 5418a 并行通信时,传递浮点数,判断上升沿,请指点