|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
請教張版主! |
| 作者:ecaibird 欄目:單片機 |
看了你精華區(qū)里的關(guān)于異步通訊的例子。有點地方可否解釋一下。比如:#define TMR0CONST .118 ;256-OSC_FREQ*1000/4/(BAUDRATE*3) + 2 解釋一下波特率與定時的關(guān)系。 還有就是有一句:movlw high($) 什么意思呢? 非常感謝。 |
| 2樓: | >>參與討論 |
| 作者: ecaibird 于 2003/4/11 9:47:00 發(fā)布:
!! 張版主不在!MARTING版主也不在嗎?那位高手知道的告訴我啊。我真的很急。 |
|
| 3樓: | >>參與討論 |
| 作者: ecaibird 于 2003/4/11 10:25:00 發(fā)布:
!! 在例程中設(shè)置TMR0值是。118,即使用TMR0的中斷時間是140us,也就是說每次查詢接收開始位的時間是140us,查詢到接收開始位后,接收每一位的時間還是104us,就是說查詢開始位的時間和接收數(shù)據(jù)位的時間是一樣的。這樣會不會有問題?在例程中給出的定時時間計算公式中有BAUTRATE*3,也就是說定時中斷地時間是一位所持續(xù)時間的三分之一了,如果波特率是2380,根據(jù)公式,定時時間是104us,那么TMRO值應該是。118了,不知道我這樣的理解有沒有問題。 |
|
| 4樓: | >>參與討論 |
| 作者: martin 于 2003/4/11 13:11:00 發(fā)布:
簡單地說 簡單地說,TMR0產(chǎn)生的定時時間要是波特率對應1位時間的三分之一,相應的TMR0的初值自己算都可以,當然公式更方便。之所以用三分之一的定時時間,是為了讓采樣點落在每個位的中間(把一個位分成三格的中間一格),看程序里的Slice,接收到起始位后間隔時間片(定時時間)分別是4,3,3…… movlw high($)把當前PC的高位送W。 |
|
| 5樓: | >>參與討論 |
| 作者: ecaibird 于 2003/4/11 15:13:00 發(fā)布:
^_^ 多謝marting,還有一點問題,為什么第一位是4,而后面都是3呢?還有就是程序里保存PC的高位不知有什么用? |
|
| 6樓: | >>參與討論 |
| 作者: martin 于 2003/4/11 16:09:00 發(fā)布:
答復 第一個問題看圖 ![]() 第二個問題: 應用例子 movlw high($) movwf PCLATH movf VALUE,W andlw 0x0f addwf PCL,F retlw 0x01 retlw 0x02 ... 該例中有修改PCL,在修改PCL的時候PCLATH會自動裝入PCH(PC的實際高位),如果沒有前面兩句,PCLATH里的值有可能不是指向當前塊(256字節(jié)),于是會產(chǎn)生錯誤跳轉(zhuǎn)。 |
|
| 7樓: | >>參與討論 |
| 作者: ecaibird 于 2003/4/14 10:30:00 發(fā)布:
^_^ 呵呵,不錯!非常感謝。 |
|
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |