當前位置:編程學習大全網 - 源碼下載 - 單片機與相位計的RS232串口通信編程問題。 硬件已經沒有問題,c程序存在問題,請幫忙修改壹下。

單片機與相位計的RS232串口通信編程問題。 硬件已經沒有問題,c程序存在問題,請幫忙修改壹下。

/*************************************************

如果妳的相位計只需要在初始的時候發送p0 c0 l0 這三個的話,也就是說後繼的數據都是由相位計發送,

單片機接收的話,初始化部分沒有大問題,但接收數據的部分 ReceStr()有問題,應該是收不到數據吧?

1、串口初始化程序先確定TH1的值和單片機晶振匹配不?0xfd是用於11.0592M晶振的波特率不加倍(smod = 0)方式下的9600bps的

這個可以控制單片機發送,由pc設定9600接收,看單片機串行速率設置是否正確

2、妳現在的串口接收函數執行了也收不到數據, 因為單片機串口只有壹個字節的緩沖,所以壹般用中斷方式來接收數據,

每次有壹個字節收到後,通過中斷來將收到的字節放入程序緩沖去。

還有接收變量怎麽會寫成float的?單字節用char 。

如果是相位計的數據發過來是float類型,那需要妳自己程序轉換,串口發送的只會是8bit的hex數據

3、如果程序需要很準確的延遲的話,延遲函數需要調試壹下的

串口接收例程:

全局變量:

unsigned char x_Buf[50] = {0};

unsigned char * pX = x_Buf;

//volatile unsigned char posBf = 0;

中斷服務:

void Serial_ISR(void) interrupt 4

{

if(RI)

{

RI = 0;

*pX++ = SBUF;

if(pX == &x_Buf[49]+1) pX = x_Buf;

}

}

*************************************************/

/*------------------------------------------------

串口初始化

------------------------------------------------*/

void InitUART (void)

{

SCON = 0x50;

TMOD |= 0x20;

TH1 = 0xFD;

TR1 = 1;

ES = 1; //串口中斷使能

EA = 1;

}

  • 上一篇:網頁上的視頻怎麽樣?
  • 下一篇:湖南衛視的天天向上和快樂大本營哪個好?
  • copyright 2024編程學習大全網