双机通信,传递浮点数,使用并口。
主机判断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 编辑 ]
此帖出自
小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
并行通信好呢,还是i2c好呢?谁有这方面的实例啊。
[ 本帖最后由 shzps 于 2012-5-1 18:41 编辑 ]{
while(!(P2IN & 0x80));
tt=P3IN;
pp=0;
while(P2IN & 0x80);
}
一周热门 更多>