新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 用51單片機+11.0592的晶振,如何產生115200的波特率?

        用51單片機+11.0592的晶振,如何產生115200的波特率?

        作者: 時間:2016-10-07 來源:網絡 收藏

          今天解決了一個小問題(查書后才得到確切結論。。。)用單片機+11.0592的,如何產生115200的波特率?

        本文引用地址:http://www.104case.com/article/201610/310908.htm

          本來感覺這個小意思,直接初始化定時器1,程序如下:

          void init_com( void )

          {

          SCON = 0x50 ; //串口工作方式1,8位UART,波特率可變

          TMOD |= 0x20 ; //定時器1,工作方式2,自動再裝入8位定時器

          PCON |= 0x80 ; //SMOD=1; 波特率加倍

          TH1 = 0xfa ; //波特率:9600 =11.0592MHz

          IE |= 0x90 ; //使能串口中斷

          TR1 = 1 ; // 定時器1開始

          }

          結果發現這樣只能得到9600的波特率。。。

          當SMOD=1時,K=2,波特率加倍,公式為:

          波特率=K×11059200/32×12×(256-TH1)

          所以,TH1=0xfa=256-(2×11059200/384×波特率) 其中波特率為9600

          這時,及時令TH1=0xff,所得波特率最大只能為57600,也就是說,這樣無法得到115200的波特率。。。

          這樣就只有采用其他方法了:

          1、換,用22.1184M晶振,在TH1=0xff時,剛好可以產生115200波特率。

          2、采用6個時鐘周期的單片機(換單片機啊。。。)

          3、增強型單片機有定時器2!(幸好偶用的是增強型。。。)

          就用第三種方法啦!這時的公式如下:

          波特率=11059200/32×[65535-(RCAP2H,RCAP2L)]

          其中的RCAP2H,RCAP2L為自動重裝值,由上式得:

          RCAP2H,RCAP2L=65536-11059200/32×波特率

          這樣得波特率為115200時,RCAP2H,RCAP2L=0xff,0xfd,初始化程序如下:

          void init_com( void )

          {

          SCON=0x50; //串口工作方式1,8位UART,波特率可變

          TH2=0xFF;

          TL2=0xFD; //波特率:115200 晶振=11.0592MHz

          RCAP2H=0xFF;

          RCAP2L=0xFD; //16位自動再裝入值

          /*****************/

          TCLK=1;

          RCLK=1;

          C_T2=0;

          EXEN2=0; //波特率發生器工作方式

          /*****************/

          TR2=1 ; //定時器2開始

          }

          OK!這樣就實現用單片機+11.0592的晶振,產生115200的波特率了,當然老鳥看來很基本,但好長時間不用了,再復習一下~~



        關鍵詞: 晶振 51

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 绥化市| 手机| 台前县| 广元市| 苍山县| 平山县| 昌吉市| 包头市| 张家界市| 玉屏| 襄汾县| 华容县| 益阳市| 丰顺县| 德昌县| 宜章县| 东兴市| 永州市| 益阳市| 福清市| 灵宝市| 拜泉县| 扬中市| 镇江市| 丰原市| 临武县| 南通市| 乡宁县| 安陆市| 凤城市| 阳春市| 宽甸| 伊川县| 永宁县| 漠河县| 开平市| 宁南县| 鄯善县| 吉木萨尔县| 舟曲县| 庆阳市|