1樓:匿名使用者
你通過串列埠助手要接受字串或一組資料需要在微控制器端開闢一個緩衝區,否則可能丟失資料。
以下程式是較為通用的串列埠收發例程,開闢一個16位元組的緩衝區,兩個指標,一個存數指標,一個取數指標,兩指標相等,證明沒有新的接收資料。
#include
#define uchar unsigned charuchar buf[16],getptr,putptr;
void uart_isr() interrupt 4}main() }}
2樓:之之
串列埠出現問題,大多是時鐘不精確。請先檢查。若正確,請檢查接收程式中,是否有等到系統不忙的判定再接收資料。
3樓:匿名使用者
是不是串列埠接收程式對接收結束的判斷沒處理好?
串列埠助手傳送的是以字元格式傳送的,不同的作業系統對字串結束的標誌形式不一樣。
windows和linux對字串的結束標誌就不同,具體是怎麼樣的,我也記不清了,\n和\r的區別吧!
4樓:匿名使用者
接收序列資料是靠時序實現的,不是接收1的ascii碼
怎麼用微控制器確定串列埠接收資料的時間間隔?
5樓:
肯定是先要設定定時器,但是定時器也不能設定那麼長的時間間隔,可以設定100ms,然後再定時器中斷裡用一個變數計數,計10次就是1s咯,一個單元最大值為255,也就是最長可以255*100ms,如果要更長,就用兩個單元計數,最長就變成255*255*100ms,依次類推就行了。
關於換行的問題,換行符也是一個asii碼,找到對應的asii碼,然後傳送就行了。
1. 什麼是波特率
不管是什麼微控制器,在使用串列埠通訊的時候,有一個非常重要的引數:波特率。什麼是波特率:
波特率就是每秒傳送的位元組數。雙方在傳輸資料的過程中,波特率一致,這是通訊成功的基本保障。下面以stm32微控制器為例,講解一下串列埠波特率的計算方法。
stm32波特率相關的暫存器
stm32微控制器設定波特率的暫存器只有一個:usart_brr暫存器,
波特率暫存器
該暫存器的有效位數為16位,前4位用於存放小數部分,後12位用於存放整數部分。將波特率算出來後,數值填入這個波特率就可以了。
必須用中斷的方式接收,每接收一個位元組中斷一次,然後統計接收位元組數,達到要求的數量後再進行處理。對於不等長的資料幀,可根據第一個位元組(這種通訊方式都有一個位元組的特徵字)或特徵字來區分,然後確定接收的位元組數。
51微控制器用串列埠跟pc通訊進行收發資料
6樓:匿名使用者
//**來
來自 微控制器
自小精靈v1.3
//波特率9600 11.0592晶振 方式2#include
void inituart(void)
void sendonebyte(unsigned char c)void main(void)
void uartinterrupt(void) interrupt 4
else
ti = 0;}
7樓:匿名使用者
程式中是19200.
通訊不上有很多原因,你的電路不對、甚至是連線不對,也會導致通訊不上內.
你可以試試跟蹤你的容程式,看看可否正確地接收到pc發過去的資料,先把接收程式調好,然後再調傳送部分,這樣才有目標.
8樓:windy_諾
樓主試試只傳送一個字元,1或者2,不要12一起傳送。如果硬體,連線沒有問題應該是傳送什麼pc就接收到什麼。
9樓:音悅
我提下問題,你看下是不是:
1、com口對不對
2、波特率在燒錄程式的時候有的,你看下是否相同
微控制器怎麼通過串列埠傳送一串資料,微控制器怎麼通過串列埠傳送unsigned int型別的資料?
通過sbuf 一塊是接受,一塊傳送!還要設定工作方式。微控制器 microcontrollers 是一種積體電路晶元,是採用超大規模積體電路技術把具有資料處理能力的 處理器cpu 隨機儲存器ram 唯讀儲存器rom 多種i o口和中斷系統 定時器 計數器等功能 可能還包括顯示驅動電路 脈寬調變電路 ...
微控制器串列埠通訊問題,51微控制器串列埠通訊問題
修者世界 p3 0xff的作用其實很簡單,就是為了更好的完成 讀 修改 寫 這個過程,其實對於p3口是沒有必要的,對於p0口這樣做是應該的。 革玉花戚雪 微控制器串列埠通訊的問題,其實你只有乙個問題,就是 p0 0xf0 s2buf 0xfc p0 s2buf 為什麼這裡p0是0x00 你覺得p0應...
微控制器通過串列埠控制另外微控制器問題
撒辰狂綺南 沒試過兩個微控制器直接tx對rx,rx對tx。貌似這樣不安全。我試過加上max232的。如圖所示的那種,不要九針底座。u2的t1out可以直接連線到u3的r1in。再u2的r1in直接連線到t1out.另外兩個微控制器的地線一定要相連,即電壓0點相同。可用u2的地線和u3的地線相連即可。...