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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > PIC單片機(jī)I/O口單線通訊的實現(xiàn)

          PIC單片機(jī)I/O口單線通訊的實現(xiàn)

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

          中、低檔有些不帶串口,有些雖然有串行口,卻受串口固定協(xié)議的限制或留作他用,故需用普通I/O口進(jìn)行通訊。由于中、低檔機(jī)I/O口數(shù)量相對較少,為節(jié)省口線,就要用I/O口模擬串行通訊。
          本文以兩片采用不同主頻的(A機(jī)時鐘頻率為6MHz,使用口線RB6;B機(jī)時鐘頻率為4MHz,使用口線RB4)之間用異步通訊方式傳送一組數(shù)據(jù)為例,說明I/O口一線通訊的實現(xiàn)方法。
          一、設(shè)計思想
          1.時鐘同步問題
          因兩個單片機(jī)的時鐘不同,故采用異步通訊方式。發(fā)送、接收一位數(shù)據(jù)時,采用軟件延時,保證發(fā)送、接收完全同步。
          2.?dāng)?shù)據(jù)發(fā)送、接收方式
          I/O口一線串行通訊,并-串(或串-并)轉(zhuǎn)換用軟件完成。將欲發(fā)送的字節(jié)存于16H中,經(jīng)移位指令移至進(jìn)位位。根據(jù)進(jìn)位位的值,將口線RB6置0或1。接收端RB4接收并判斷后,置進(jìn)位標(biāo)志為0或1,再經(jīng)移位指令移入14H中。這樣循環(huán)執(zhí)行8次,就可將一個字節(jié)由低位到高位一位位地發(fā)送出去。數(shù)據(jù)傳送速率可用延時循環(huán)的方法進(jìn)行調(diào)節(jié)。
          3.握手協(xié)議
          先發(fā)握手信號,后發(fā)數(shù)據(jù)。假定A機(jī)為發(fā)送,B機(jī)為接收。A機(jī)開始發(fā)送時,先發(fā)送一個握手?jǐn)?shù)據(jù)信號,B機(jī)收到后回送一個應(yīng)答信號,表示同意接收。
          A機(jī)收到應(yīng)答信號后,開始發(fā)送數(shù)據(jù)。握手信號和數(shù)據(jù)信號都按異步通訊格式,先發(fā)準(zhǔn)備信號“1”,接著發(fā)送起始位“0”,然后發(fā)數(shù)據(jù)位。
          4.?dāng)?shù)據(jù)傳送
          異步通訊時,發(fā)送時鐘控制數(shù)據(jù)位的定時移位串行輸出,接收時鐘檢測起始位,并控制數(shù)據(jù)的定時接收移入。兩個時鐘信號不是通過信號線傳遞,而是采用編程約定的辦法,使之和實際使用的數(shù)據(jù)速率基本保持一致,而數(shù)據(jù)信號中的起始位則是發(fā)和收的同步控制。接收時鐘為數(shù)據(jù)傳送波特率的16倍頻信號,即一個數(shù)據(jù)位寬的時間內(nèi)將會出現(xiàn)16個接收時鐘的信號,這是檢測起始位和保證在數(shù)據(jù)位中央位置接收數(shù)據(jù)所需要的。為排除瞬時干擾,在檢測到數(shù)據(jù)輸入線的電平由“1”變?yōu)椤埃啊敝?,接收端將繼續(xù)檢測。僅當(dāng)連續(xù)8個接收時鐘周期內(nèi)都檢測到數(shù)據(jù)線上的電平為“0”時,才確認(rèn)是起始位,且發(fā)送端每一個“0”或“1”都發(fā)送16次,接收端將以16倍的時鐘周期,即以位寬時間為間隔,接收各數(shù)據(jù)位(在其中央位置接收數(shù)據(jù))。一個字長數(shù)據(jù)(8位)接收完后,子程序返回。
          二、程序框圖和源程序
          下面給出發(fā)送、接收一字長(8位)信號的子程序框圖(見圖1、圖2)和源程序(發(fā)送、接收聯(lián)絡(luò)信號與數(shù)據(jù)信號相同)。注:所有延時程序略。
          1.發(fā)送子程序
          list p=16c65,f=inhx8m
          portb equ6
          trisb equ 16h
          status equ3
          rp0 equ5
             org0x100
          fs bsf status,rp0;選存儲體1
            bcf trisb,6 ;置RB6為輸出
            bcf status,rp0;恢復(fù)存儲體0
            bsf portb,6 ;發(fā)準(zhǔn)備信號“1”
          ?。恚铮觯欤鳎埃埃?BR>  movwf1f ;置發(fā)送字長
            call ystb ;延時同步
            movlw0x10
            movwf1c
          fs1 bcf portb,6 ;發(fā)16個起始位
            decfsz1c,1
            goto fs1
          ts call ystj ;延時調(diào)節(jié)波特率
            rrf 16h,1 ;發(fā)送字節(jié)移位
          ?。猓簦妫螅?status,0
            goto ty
            movlw0x10
            movwf1c
          fs2 bcf portb,6 ;位為0,發(fā)16個“0”
            decfsz1c,1
            goto fs2
            goto tr
          ty movlw0x10
            movwf1c
          fs3 bsf portb,6 ;位為1,發(fā)16個“1”
            decfsz1c,1
            goto fs3
          tr decfsz1f, 1
             goto ts ;發(fā)送未完,延時發(fā)下一位
            return ;發(fā)送結(jié)束返回
            end
          2.接收子程序
          list p=16c65,f=inhx8m
          portb equ6
          trisb equ 16h
          status equ 3
          rp0 ?。澹瘢酰?BR>   ?。铮颍?0x200
          js bsf status,rp0 ;選存儲體1
            bsf trisb,4 ;置RB4為輸入
             bcf status,rp0 ;恢復(fù)存儲體0
          js1 btfss portb,4 ;檢測收到“1”否
             goto js1 ;未收到“1”繼續(xù)檢測
           ?。恚铮觯欤鳎埃埃?;置接收字長8位
             movwf1f
          loop1 movlw0x08 ;置循環(huán)次數(shù)8
              ?。恚铮觯鳎妫保?BR>loop btfsc portb,4 ;檢測起始位
              goto loop1 ;未收到“0”重置8次循環(huán)
           ?。洌澹悖妫螅保?,1
              goto loop ;收到“0”繼續(xù)檢測
          jz call ystb ;收到8個“0”,延時同步,接收數(shù)據(jù)
          btfsc portb,4 ;測試接收位
          goto jy
             bcf status,0 ;收到“0”置c=0
             goto j1
          jy bsf status,0 ;收到“1”置c=1
          j1 rrf 14h,1 ;接收位移入14h
             decfsz 1f,1
             goto jz ;未接收完,延時接收下一位
          return ;接收完返回
          end

          單片機(jī)相關(guān)文章:單片機(jī)教程


          單片機(jī)相關(guān)文章:單片機(jī)視頻教程


          單片機(jī)相關(guān)文章:單片機(jī)工作原理


          數(shù)字通信相關(guān)文章:數(shù)字通信原理


          通信相關(guān)文章:通信原理




          關(guān)鍵詞: PIC單片機(jī) IO口 單線通訊

          評論


          相關(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); })();