1樓:匿名使用者
晶振頻率是11.0592m,波特率9600,定時器初始值th0=0xfd;tl0=0xfd;
收發資料錯誤,就是波特率不對,雖然換晶振,不知初始值對不對呀?還有pcon=0;這個不用改。
2樓:匿名使用者
波特率就是一秒鐘串列埠收發資料的位數,速率就是一秒鐘串列埠收發資料的位元組數,所以
速率*8=波特率
51微控制器關於波特率的問題?
3樓:千雨風林
贊同樓上,只要改一下暫存器設定就行了,不用改定時器
4樓:匿名使用者
晶振 11.0592mhz
#include
void inituart(void)
void main(void)
void uartinterrupt(void) interrupt 4
else
ti = 0;
}void sendonebyte(unsigned char c)晶振22.1184mhz
#include
void inituart(void)
void main(void)
void uartinterrupt(void) interrupt 4
else
ti = 0;
}void sendonebyte(unsigned char c)
51微控制器串列埠問題,波特率設定問題
5樓:天上曲
計算時溢位了, 計算時先整合公式,簡化一下, 用一個long變數儲存, 計算原則是先乘後除
看你後面所問的, 問題是出在優先順序上了,
單目執行符的優先順序最高,比如+、-、!、~、*(指標)……,如果要讓最終計算結果取反,就應該全部計算完成後再取反,也相當於用0減去那個數,跟用256減是一樣的
th1是8位暫存器
微控制器c語言中計算時尤其要注意資料溢位和運算優先順序的問題最好的方法就是加括號,萬能的
6樓:匿名使用者
巨集定義不要用無符號數!
#define osclk 11059200l
#define bps 9600
【微控制器】關於微控制器產生波特率的問題。萬分感謝!
7樓:做而論道
51微控制器,廠家設計的功能,就是用 t1 控制串列埠的波特率。
後來,52 系列,可以用 t2 了。
用 t0 ?
為什麼要用 t0 呢?
8樓:匿名使用者
可以用t0
但是t0通常在程式裡要做時基用,所以t0一般是留作定時器。
51微控制器串列埠通訊波特率問題
9樓:一萬光年
肯定是微控制器相連的晶振。
12m和微控制器的波特率無關。
10樓:匿名使用者
既然是要跟微控制器通訊,那當然是要用11.0592mhz的
在網上隨便找個 「51波特率初值設定軟體」 就能用了
微控制器波特率計算問題
11樓:匿名使用者
溢位速率=fosc/[12*(256-th1初值)]比如晶振為11.0592mhz,波特率不加倍,那麼波特率=(1/32)*11059200/12/(256-th1初值)如果波特率要求為9600
那麼th1初值=256-11059200/12/32/9600=256-3
12樓:
這是固定的公式,微控制器的核心設計會告訴你,你可以查閱相關文件,其實沒必要知道為什麼,你又不是設計微控制器的,會用就好了
微控制器波特率時間常數怎麼求
x值 256 fosc 10的6次方 smod 1 384 波特率 例如 晶振fosc 11.0592 x值 256 11.0592 100000 1 384 9600 256 11059200 3686400 256 3 253 0xfd 舉個例子吧 qpsk調製是四相位碼,它的一個單位碼元對應四...
51微控制器pwm波形頻率問題,51微控制器pwm波形輸出問題
很多微控制器帶pwm模組,可以出很工整的pwm波,非用定時器做也可以,比較耗資源.定時器做pwm好處是任意的io都可以輸出且沒有通道個數的限制.定時器用作pwm你需要兩個中斷,一個是pwm週期中斷 所有通道置低 一個是pwm的開關點中斷 置高電平 有些微控制器還是難以實現一個定時器兩種中斷,另一個做...
微控制器中斷問題,51微控制器外部中斷問題
不太明白你問的問題。t0還有空間呢?如果想在t0中斷內增加程式,也是可以的,長度和t0沒有關係,只要微控制器的儲存空間夠就可以了。儘量不要在中斷中執行程式,會影響整個流程的合理性。所以一般只在中斷中設定標誌。微控制器的中斷入口都是排列在地址的最低端的,分別為0003,000b,0013,001b,0...