你可能遇到了"臨界區"的問題。X

再詳細描述一下應用場景。


@0零妖1,你怎麼把添加的說明寫到評論上了?

可以發多個字元啊!不是多個位元組!

char *px="hello";//定義五個字元,最後自動添加一個 , 是ascii表中第一個值,真實內存中的值是0b00000000。

Send_Str1(px);//發送"hello"五個ascii碼值,

你這個Send_Str1(px)永遠是不會發送 的,它是用於最後while判斷結束條件的。

!!串口有文本模式和二進位模式。!!

C語言定義的字元串中的每個字元不能是 ,因 已經作為結束標誌。

可以修改Send_Str1()函數中利用判斷數組長度來表示發送結束,就可以什麼都可以發送了。


SBUF在設計上只允許一次性寫入一個位元組,不可能寫入兩個位元組。如果要傳輸多個位元組的數據,可以在發送完成中斷裡面寫一些業務邏輯,參考下面代碼。


不能51單片機是8位的,所有的寄存器也是8位。也就是一個位元組,因此不能一次寫入兩個。如果這麼操作了,只會保存後寫入的位元組,或者如果直接賦值一個16位值,那麼餘下的會是低八位


做不到,因而也決定了通訊通道的上限。


分別寫高低位就可以了


只能先後寫入兩個位元組


推薦閱讀:
相关文章