在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

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

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

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

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

            評(píng)論


            相關(guān)推薦

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

            關(guān)閉