<pre id="3rxvn"></pre>
      <address id="3rxvn"><meter id="3rxvn"><big id="3rxvn"></big></meter></address>

              <meter id="3rxvn"></meter>

              51單片機串行口的工作方式解析

              發布時間:2023-07-17
              方式0是外接串行移位寄存器方式。工作時,數據從rxd串行地輸入/輸出,txd輸出移位脈沖,使外部的移位寄存器移位。波特率固定為fosc/12(即,txd每機器周期輸出一個同位脈沖時,rxd接收或發送一位數據)。每當發送或接收完一個字節,硬件置ti=1或ri=1,申請中斷,但必須用軟件清除中斷標志。
              實際應用在串行i/o口與并行i/o口之間的轉換。
              方式1
              方式1是點對點的通信方式。8位異步串行通信口,txd為發送端,rxd為接收端。一幀為10位,1位起始位、8位數據位(先低后高)、1位停止位。波特率由t1或t2的溢出率確定。
              在發送或接收到一幀數據后,硬件置ti=1或ri=1,向cpu申請中斷;但必須用軟件清除中斷標志,否則,下一幀數據無法發送或接收。
              (1)發送:cpu執行一條寫sbuf指令,啟動了串行口發送,同時將1寫入輸出移位寄存器的第9位。發送起始位后,在每個移位脈沖的作用下,輸出移位寄存器右移一位,左邊移入0,在數據最高位移到輸出位時,原寫入的第9位1的左邊全是0,檢測電路檢測到這一條件后,使控制電路作最后一次移位,/send和data無效,發送停止位,一幀結束,置ti=1。
              (2)接收:ren=1后,允許接收。接收器以所選波特率的16倍速率采樣rxd端電平,當檢測到一個負跳變時,啟動接收器,同時把1ffh寫入輸入移位寄存器(9位)。由于接、發雙方時鐘頻率有少許誤差,為此接收控制器把一位傳送時間16等分采樣rxd,以其中7、8、9三次采樣中至少2次相同的值為接收值。接收位從移位寄存器右邊進入,1左移出,當最左邊是起始位0時,說明已接收8位數據,再作最后一次移位,接收停止位。此后:
              a、若ri=0、sm2=0,則8位數據裝入sbuf,停止位入rb8,置ri=1。
              b、 若ri=0、sm2=1,則只有停止位為1時,才有上述結果。
              c、若ri=0、sm2=1,且停止位為0,則所接數據丟失。
              d、若ri=1,則所接收數據丟失。
              無論出現那種情況,檢測器都重新檢測rxd的負跳變,以便接收下一幀。
              方式2、方式3
              方式2和方式3是9位異步串行通信,一般用在多機通信系統中或奇偶校驗的通信過程。在通訊中,tb8和rb8位作為數據的第9位,位sm2也起作用。方式2與方式3的區別只是波特率的設置方式不同。
              (1)發送
              向sbuf寫入一個數據就啟動串口發送,同時將tb8寫入輸出移位寄存器第9位。開始時,send和data都是低電平,把起始位輸出到txd。data為高,第一次移位時,將‘1’移入輸出移位寄存器的第9位,以后每次移位,左邊移入‘0’,當tb8移到輸出位時,其左邊是一個‘1’和全‘0’。檢測到此條件,再進行最后一次移位,/send=1,data=0,輸出停止位,置ti=1。
              (2)接收
              置ren=1,與方式1類似,接收器以波特率的16倍速率采樣rxd端。
              起始位0移到輸入寄存器的最左邊時,進行最后一次移位。在ri=0,sm2=0或接收到的第9位=1時,收到的一字節數據裝入sbuf,第9位進入rb8,置ri=1;然后又開始檢測rxd端負跳變。
              多機通信
              在這里,多機系統是指‘一主多從’。51系列單片機中,利用第9位tb8/rb8來區分地址與數據信息,用位sm2確定接收方是否對地址或數據幀敏感。其原則是:
              1)發送方用第9位tb8=1標志地址幀,tb8=0標志數據幀。
              2)接收方若設置sm2=1,則只能接收到地址信息,若設sm2=0,則不管是地址還是數據幀,都能接收到。
              利用方式2、3的特點,在點對點的通訊中,在發送方可以用第9位tb8作為奇偶校驗位。在接收方,sm2位必須清0。
              波特率
              1)方式0的波特率=fosc/12
              2)方式2的波特率=2^smod*fosc/64
              3)方式1、3的波特率由t1或t2的溢出率和smod位確定:
              (1)用t1:波特率=2^smod*t1定時器的溢出率/32,t1為方式2t1定時器溢出率=1/((12/fosc)*(256-x))例:已知fosc=6mhz,smod=0,設置波特率為2400,求t1的計數初值x。
              波特率=1/((12/fosc)*(256-x))/32=fosc/12*32(256-x)(256-x)=fosc/2400/384=6m/2400/384;256-x~=6.5104x~=250=fah 只能近似計算。
              若fosc=11.0592mhz, 則256-x=11.0592m/2400/384=4068/384=12 x=f4h;可精確算出,對其它常用的標準波特率也是能正確算出。所以這個晶振頻率是最常用的。
              如果smod=1,則同樣的x初值得出的波特率加倍。
              (3)用t2:
              在52型單片機中,串口方式1、3的波特率發生器選擇由tclk、rclk位確定是t1還是t2。若tclk=1,則發送器波特率來自t2,否則來自t1。若rclk=1,則接收器波特率來自t2,否則來自t1。
              由t2產生的波特率與smod無關。t2定時的最小單元=2/fosc。t2的溢出脈沖16分頻后作為串口的發送或接收脈沖。
              波特率=(1/((2/fosc)(65536-x)))/16=fosc/(32(65536-x))例:已知fosc=11.0592mhz,求波特率=2400時的x2400=11059200/(32(65536-x)) 65536-x=144 x=65392=ff70h計數器初值寄存器:rcap2h=0ffh,rcap2l=70h。
              上一個:直流他勵電動機的制動特性
              下一個:水利施工冬季安全檢查,五大防護不容忽視!

              網絡貨運平臺如何吸引貨源
              鐵路物流運輸需要注意的地方,上海物流公司告訴您
              什么樣的牽引車才適合冷鏈干線運輸場景?
              天津物流公司說,省內運輸效率應該如何提升
              貨物運輸的分類
              網絡貨運平臺虛開亂象,如何引起警惕?受票企業如何防范與應對?
              汽車運輸企業如何保證車輛安全
              物流成本構成因素有哪些?
              物流運輸行業的分類方式1
              我國企業物流成本控制存在的問題及對策
              人妻推油中文字幕组_国产高潮无码喷水流白浆_国产超爽超碰人人做wwwcom_亚洲a级在线免费