1樓:匿名使用者
即便是傳送ascii碼形式的字元,也可以傳送數字啊,如1234,mcu將收到4個ascii值,然後在mcu端判斷每個是否》='0'&&<='9'以確保是數字的ascii碼,如果是就將收到的ascii值減去『0』,不就得到它的十進位制值了麼。。。
2樓:匿名使用者
可以這樣:
向微控制器傳送非壓縮bcd碼0x01,0x02,0x03,0x04,或者壓縮bcd碼0x12,0x34。這樣是最簡單的,微控制器也容易處理。.
3樓:匿名使用者
要看你發的1234是什麼形式的資料了,串列埠助手可以發十六進位制或者是ascii字元(也許你用的有更多形式的)。
可以設一個4個位元組的接收緩衝區recebuf[4],每來一次串列埠中斷就把一個值寫進緩衝區。有以下兩種情況:
十六進位制0x01,0x02,0x03,0x04傳送:
緩衝區接收到的四個位元組即為0x01,0x02,0x03,0x04,就可以把四個位元組直接送顯(如果要發abcdef還要除以10轉換成十進位制)
ascii格式1234傳送:
緩衝區實際接收到的是49,50,51,52.分別把recebuf的值減去48再送顯,即為十進位制結果。
51微控制器在串列埠問題,我們從串列埠上傳送資料是以16進位制的,在微控制器上接收是10進位制的,
4樓:匿名使用者
16進位制代表的數值跟十進位制代表的數值是一樣的16進位制能取到的最大值是65536
所以可以首先資料對10000求模
得到最高位
然後對10000求餘數再對1000求模
其他依次類推。
51微控制器串列埠通訊問題(微控制器串列埠傳送10進位制顯示)
5樓:匿名使用者
不知道你的傳送值範圍如果是小於16的數,那麼修改如下:
void send_com(unsigned char x)
6樓:匿名使用者
你的晶振估計是12m的把 ,th=0xf3,試試
fa不行,我之前遇到過,好像12m只能用2400最好
51微控制器讀到的2進位制數怎麼轉化為十進位制傳送到串列埠(求高人,**等)
7樓:做而論道
高八位(data_h) * 256 + 第八位(data_l) ----> 整型變數;
把這個整型變數,分解成五個 char 變數:1、1、4、9、9。
再分別加上 0x30,傳送,即可。
8樓:匿名使用者
1,把每一位提取出來,然後乘上他的權 再全部加起來。
2,強制轉換 unsigned int (需要轉換的變數)
微控制器串列埠接收到16進位制的數,怎麼將其變成1
9樓:折柳成萌
串列埠都是用16進位制傳送的,有兩種辦法,
在接收到資料之後你把16進位制轉為10進位制就可以了,比如你傳送的十進位制10,傳送的時是十六進位制0x0a,接收到資料後轉成10進位制 0ah = 10。
在傳送時把資料轉換成bcd碼,傳送十進位制10,轉成bcd碼十六進位制就是0x10,接收到資料時顯示的就是10h。
在微控制器c語言怎麼把16進位制數變成10進位制發到串列埠
10樓:徐老二嗯嗯嗯
串列埠都是用16進位制傳送的,有兩種辦法,
在接收到資料之後你把16進位制轉為10進位制就可以了,比如你傳送的十進位制10,傳送的時是十六進位制0x0a,接收到資料後轉成10進位制 0ah = 10。
在傳送時把資料轉換成bcd碼,傳送十進位制10,轉成bcd碼十六進位制就是0x10,接收到資料時顯示的就是10h。
pic微控制器用串列埠傳送接收資料
當接收到資料時,rcif會被置1,如果讀了接收結果rcreg,則系統自動會把rcif清0。程式把清rcif語句遮蔽了,但txreg rcreg 這一句就是讀接收結果 把接收結果rcreg送到傳送暫存器txreg裡 所以會自動讓rcif清0,只有新資料來時,rcif才會置1,才能再進入中斷。如果把傳送...
51微控制器怎麼通過串列埠傳送小數,51微控制器怎麼通過串列埠傳送小數?
方法多的去了,把數字37.5轉換為字串 37.5 傳送可以,用壓縮bcd碼0x37 0x05傳送也可以,多得是。不一定一定要浮點處理。你自己定一個協議,1次發6個資料,選擇其中的2個作為資料,其他作為驗證碼,另一個微控制器接收到就演算法處理 微控制器不支援浮點運算的,你可以申請兩個變數,把整數和小數...
51微控制器,通過串列埠助手向微控制器傳送字串,微控制器將字串逆序傳送回計算機,用C語言程式設計
電腦通過串列埠助手向微控制器傳送字串,微控制器定義一個可以儲存7個字元的陣列,依次儲存接收的字串,當接收到7個字串後,就可以從陣列的最後一個字元向前傳送每一個字元給電腦就可以了。剩下的就是串列埠初始化,串列埠接收和傳送程式了,就比較好寫了。其實,電腦傳送任意的7個字元的字串都可以,微控制器收到後就可...