⑴ C51單片機如何從PC機串口接收字元串
1、單片機串口不管從哪
接收數據
都是遵循串口協議的。字元串就是一個挨一個的ASKII碼,中間沒有加任何東西。2、不發字元串結束標志。3、回車符可以發送,但具體發不發送看你程序了。
⑵ 51單片機如何查看接受緩沖區的數據
通過改變rs1和rs0的值,來更改工作寄存區是採用第幾組的。
目前是使用ClearCommError來獲取串口緩沖區內的位元組數,然後用ReadFile來讀取數據。
⑶ 怎樣用51單片機接收數組(就是一長串的字母和數字)
定義通訊協議,與位元組接收最大間隔時間。因為發送的每幀數據的位元組數不相同,所以在下位機上定義一個超時定時器,當收到一個位元組後馬上開啟超時定時器檢測是否超時,沒有超時的情況下接收的一個位元組就要清一下超時定時器的值,這樣一幀數據發完後,下位機收不到數據就會超時退出,這一幀數據接收完畢。然後根據定義的協議解析數據。這樣做好處就是上位機發送每幀數據長度隨意。應用性較強。
⑷ 51單片機怎麼接收電腦發送的16位數據
51單片機是8位的,一次只能接一個位元組,你這16位的,要分兩次的。 電腦串口也是按兩次來發送,也就是把這個16位的拆成兩個位元組,所以每個位元組發送都是遵循串口協議的,你在單片機裡面開串口接收中斷即可。 你可能會疑問,要是第一個位元組中斷了,進入中斷函數接第一個位元組後,那第二個位元組會不會錯過,來不及接收? 這個不會的,上面說了,第二個位元組也是按串口標准發的,也就是起始位,數據位,(校驗位),結束位。 電腦在發一個位元組後,又會接著發第二個位元組。可是,要知道串口的波特率是很低的,遠遠比單片機的處理速度低。當你接了第一個位元組,將此位元組做一些處理,比如存起來時,電腦可能都還沒開始發第二個位元組呢,因為電腦發數據的速率是以K為單位的,而單片機處理速度是以M為單位的。 因此,不用擔心第二個位元組會丟失。
⑸ 關於51單片機如何接收串口的大量數據
這要看你這個大量有多大了,連續接收數據一般都是開辟一個緩沖區,而緩沖區是受內部寄存器空間限制的,最大256個(52單片機),還不能全用做緩沖區,得留下工作寄存器去,位地址也得留下一些,堆棧也得留下一些,所以這些因數都需要考慮到。
如果不開辟緩沖區得話,接收後就處理,可能有丟失一些數據的可能。
⑹ 51單片機通過串口實現數據的發送與接收程序
串口收發,要有通信協議。也就是什麼時候開始接收,接收到指令後,轉發什麼數據。這個要知道,才可以寫。而且使用不同的51單片機,其內部寄存器配置是不同的。
一般來說,過程如下:
1,配置串口參數、波特率等,開啟串口中斷;
void Init_UART()
{
}
2,中斷函數里寫中斷響應函數,根據接收的指令或者數據,執行相應的動作;
程序一般為:
void UART_ISR() interrupt x using y
{
;串口中斷處理函數
}
x - 單片機的C51中斷號
y - 指定使用的當前工作寄存器組號(0-3 PSW中的RS0,RS1組合)
3,主程序
int main(void)
{
Init_UART();
while(1)
{
;//數據發送函數
}
}
⑺ 51單片機接收多位元組數據 串口通信
按發送是四個位元組一起出去的,...。
----------------------
它們不是「一起」出去的。
實際上,串列口是按照波特率,把一位一位的二進數,順序送出去的。
51的接收器,也是按照波特率,一位一位的收。
等到收齊了8個位(如55H),就送到SBUF,並且在RI置一;
再接著收,33H、...等等。
⑻ 請問51單片機如何接收字元串
上位機 與 下位機,發送 與 接收 一串數據,單片機接收 是一個位元組 一個位元組 接收的
需要有 通訊協議,可以自己設計 一個 如 多機通訊
指令碼 機器號 數據1 數據2 - - - 數據n 校驗碼 結束碼
這樣 單片機可以判斷 接收的數據 類型,接收到數據 先存放在 緩沖區,收到結束碼後
再判斷 指令 是否是 本機數據,是再按照 數據類型處理。
⑼ 請問51單片機怎麼通過串口接收字元串能解釋一下代碼嗎謝謝了
看流程是什麼了,如果等待14個位元組接收完,那就是for循環,或者while等待。如果只是接收的話,就中斷,然後去讀數組,超過14個位元組就處理。