<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > P89C51RD2的Boot ROM與ISP功能的實現(xiàn)

          P89C51RD2的Boot ROM與ISP功能的實現(xiàn)

          作者: 時間:2012-04-09 來源:網(wǎng)絡(luò) 收藏

          3.1.2 tp對應(yīng)的計數(shù)值

          首先看一下在 中是如何計算一個位所對應(yīng)的計數(shù)值的。以下為 從地址FC00H ~FC17H之間的源代碼及反匯編程序:

          源代碼 反匯編程序
          FC00 75 89 02 MOV TMOD,#02H ;T1工作模式2,定時器
          FC03 75 C8 30 MOV T2CON,#30H ;T2工作為串行口波特
          ;率發(fā)生器
          FC06 E4 CLR A
          FC07 F5 CD MOV TH2,A
          FC09 F5 CC MOV TL2,A ;T2=0000H
          FC0B 30 B0 FD JNB P3.0,$ ;若P3.0=0,則等待,
          ;直到其變?yōu)?
          FC0E 20 B0 FD JB P3.0,$ ;若P3.0=1,則等待,
          ;直到下降沿到來
          FC11 D2 CA SETB TR2 ;啟動T2定時器
          FC13 30 B0 FD JNB P3.0,$ ;若P3.0=0,則等待,
          ;直到上升沿到來
          FC16 C2 CA CLR TR2 ;關(guān)閉T2定時器,此時
          ;T2中的數(shù)值為tp

          首先將T2清0,然后測下降沿,測到下降沿后,開始置TR2=1,T2開始計數(shù),等測到上升沿后,置TR2=0,停止計數(shù),則此時T2中為傳送 1bit(低電平)的計數(shù)值。以波特率2400 bps為例,則傳送1bit所用的時間為1/2400 s,即416.67μs。主頻為11.0592 MHz,再由PHILIPS公司的數(shù)據(jù)手冊可知,當(dāng)T2工作于波特率發(fā)生器模式時,OSC未經(jīng)分頻直接進入T2計數(shù)器,由此可得在tp時間內(nèi)T2的理論計數(shù)值為:(T2)=0.000 416 67×110 592 00= 4608(十進制)=1200H。在這里,特別要強調(diào)的是:該數(shù)只是一個理論值。對波特率為2400 bps時的實際值進行測試,發(fā)現(xiàn)實測值為11FAH左右。不管怎樣測,實測值總是小于理論值6個數(shù)左右。這個數(shù)據(jù)為下面的波特率計算提供了重要依據(jù)。

          3.1.3 波特率的計算

          程序中對波特率的計算頗有特色,下面是地址FC18H~FC36H之間的源代碼和反匯編程序:

          源代碼 反匯編程序
          FC18 E5 CC MOV A,TL2
          FC1A C4 SWAP A
          FC1B 54 0F ANL A,#0FH ;取TL2高4位
          FC1D F8 MOV R0,A
          FC1E E5 CD MOV A,TH2
          FC20 C4 SWAP A
          FC21 54 F0 ANL A,#0F0H;取TH2低4位
          FC23 48 ORL A,R0
          FC24 F8 MOV R0,A ;組合后送入R0
          FC25 E5 CD MOV A,TH2
          FC27 C4 SWAP A
          FC28 54 0F ANL A,#0FH ;取TH2高4位
          FC2A F9 MOV R1,A
          FC2B E8 MOV A,R0 ;以上程序T2中數(shù)據(jù)除以
          ;16,送R1和R0保存
          FC2C F4 CPL A ;低位取反
          FC2D F5 CC MOV TL2,A
          FC2F F5 CA MOV RCAP2L,A
          FC31 E9 MOV A,R1
          FC32 F4 CPL A ;高位取反
          FC33 F5 CD MOV TH2,A
          FC35 F5 CB MOV RCAP2H,A

          上述程序就是將tp對應(yīng)值轉(zhuǎn)換成波特率的程序,先來看一下波特率是怎樣定義的。定時器2工作在波特率發(fā)生器模式,外部時鐘信號由T2腳進入,波特率為

          46.jpg

          所以程序中首先將T2中的計數(shù)值進行處理,相當(dāng)于右移4位,將低4位去掉,11FAH變?yōu)?11FH,對應(yīng)式(1)中除以16,送R1和R0保存,然后將R1和R0中的值取反,其值為FEE0H。該值恰恰與根據(jù)式(1)計算出的數(shù)值相同。將該數(shù)值送T2和RCAP2,即得2400bps對應(yīng)的賦值。



          關(guān)鍵詞: 功能 實現(xiàn) ISP ROM Boot P89C51RD2

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();