線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:4381
推到 Plurk!
推到 Facebook!

關於8051 to RS-232鮑率的問題

答題得分者是:mymj
leeli
初階會員


發表:57
回覆:55
積分:27
註冊:2003-06-25

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-08-10 09:58:19 IP:61.30.xxx.xxx 未訂閱
各位大大您們好: 小弟我現在要使用8051透過RS-232的方式與PC溝通。翻了一些參考書籍之後,書本上的鮑率都是使用同一的公式去算出TH1的值(我是使用串列埠模式3的方式)。但是,小弟我只能算出9600bps,再快就會出問題了。請問,到底TH1要設多少,才能工作在57600下呢?&在高速的鮑率下工作,有沒有什麼事情需要多注意的呢? 小弟我使用的是Winbond W78E54BP-40 ,我使用的震盪頻率為40MHz。(不過目前測試的時候,震盪頻率為11.0592MHz) 小弟我是BCB的新手,若有發問一些蠢問題,敬請見諒。 對於各位的大力協助,感激不盡!
------
小弟我是BCB的新手,若有發問一些蠢問題,敬請見諒。
對於各位的大力協助,感激不盡!
mymj
版主


發表:132
回覆:486
積分:608
註冊:2002-10-25

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-08-10 20:41:43 IP:210.68.xxx.xxx 未訂閱
貼上計算方法極巨集
;*                FLASH IC : W78E516
;*              Clystal : 11.059MHZ    Fosc                    equ     24000000/1000
BaudRate                equ     9600/10    TH1_SMOD0               equ     256-((Fosc*1000)/(BaudRate*10*384))
TH1_SMOD0_decimal       equ     ((Fosc*1000*10)/(BaudRate*10*384))-(((Fosc*1000)/(BaudRate*10*384))*10)
TH1_SMOD1               equ     256-((Fosc*1000)/(BaudRate*10*192))
TH1_SMOD1_decimal       equ     ((Fosc*1000*10)/(BaudRate*10*192))-(((Fosc*1000)/(BaudRate*10*192))*10)
TH2_BaudRate            equ     65536-((Fosc*1000)/(BaudRate*10*32))
TH2_BaudRate_decimal    equ     ((Fosc*1000*10)/(BaudRate*10*32))-(((Fosc*1000)/(BaudRate*10*32))*10)    ;;*********************************************************
smode0_baudRate_setTH1  macro
                mov     scon,#01010000b         ; mode=mode1 ,ren=enable
                mov     t2con,#00000000b
                orl     tmod,#00100000b ; Timer1=auto-raload
;
        ;       setb    rrc_flag
                anl     pcon,#01111111b
                mov     th1,#TH1_SMOD0
;
                mov     a,#TH1_SMOD0_decimal                    clr     c
                cjne    a,#6,$ 3
                jc      $ 2 2 2
                dec     th1
        ;       clr     rrc_flag                    cjne    a,#4,$ 3
                jnc     $ 2 2
        ;       clr     rrc_flag
;
                setb    tr1
                endm
;;=========================================================
smode1_baudRate_setTH1  macro
                mov     scon,#01010000b         ; mode=mode1 ,ren=enable
                mov     t2con,#00000000b
                orl     tmod,#00100000b ; Timer1=auto-raload
;
        ;       setb    rrc_flag
                orl     pcon,#10000000b
                mov     th1,#TH1_SMOD1
;
                mov     a,#TH1_SMOD1_decimal
                clr     c
                cjne    a,#6,$ 3
                jc      $ 2 2 2
                dec     th1
        ;       clr     rrc_flag                    cjne    a,#4,$ 3
                jnc     $ 2 2
        ;       clr     rrc_flag
;
                setb    tr1
                endm
;;*********************************************************
Timer2_BaudRate_Set     macro
                mov     scon,#01010000b         ; mode=mode1 ,ren=enable
                mov     t2con,#00110000b ;Timer2=BaudRate CLK
;
                mov     rcap2h,#>TH2_BaudRate
                mov     rcap2l,#
        發表人 - 
        
leeli
初階會員


發表:57
回覆:55
積分:27
註冊:2003-06-25

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-08-11 09:21:56 IP:61.30.xxx.xxx 未訂閱
感謝大大的解答~ 不過,小弟我是直接用C語言下來接觸8051的。組語看不太懂耶~ 能不能直接轉換成 > 小弟我是
------
小弟我是BCB的新手,若有發問一些蠢問題,敬請見諒。
對於各位的大力協助,感激不盡!
liangnet
中階會員


發表:19
回覆:148
積分:83
註冊:2004-01-03

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-08-11 20:40:36 IP:218.174.xxx.xxx 未訂閱
你好! 我如果你使用的W78E54BP是一個8052的話,那建議你可以使用Time2! 我使用的震盪頻率11.0592MHz,115200可能會不穩定!建議到57600就好了。 c語言程式設定如下: //Time2 = 65536 - (OSC / (32 * Baudrate)) #define B1200 (65536-288) #define B2400 (65536-144) #define B4800 (65536-72) #define B9600 (65536-36) #define B19200 (65536-18) #define B28800 (65536-12) #define B38400 (65536-9) #define B57600 (65536-6) #define B115200 (65536-3) #BAUDRATE B57600 // Timer2 T2MOD = 0x00; T2CON = 0x30; RCAP2L = BAUDRATE % 256; RCAP2H = BAUDRATE / 256; //COM Initial PCON&=0x7f; SCON=0x50; ES=1; EA=1; //Enable Time2 ET2 = 1; TR2 = 1; 發表人 - liangnet 於 2004/08/11 20:42:22
系統時間:2024-04-20 3:14:34
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!