中文字幕 另类精品,亚洲欧美一区二区蜜桃,日本在线精品视频免费,孩交精品乱子片免费

<sup id="3hn2b"></sup>

    1. <sub id="3hn2b"><ol id="3hn2b"></ol></sub><legend id="3hn2b"></legend>

      1. <xmp id="3hn2b"></xmp>

      2. 新聞中心

        EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > PIC16F877單片機(jī)的應(yīng)用--A/D轉(zhuǎn)換器

        PIC16F877單片機(jī)的應(yīng)用--A/D轉(zhuǎn)換器

        作者: 時(shí)間:2011-02-24 來(lái)源:網(wǎng)絡(luò) 收藏
        PIC16F877片內(nèi)有8路10位A/D轉(zhuǎn)換器,引腳②~⑤為AN0~AN3、⑦~⑩為AN4~AN7。MPLAB-ICD的實(shí)驗(yàn)板上16F877的RA0口接了一只供有電壓的10kΩ電位器,在D口(RD0~RD7)接了8只LED,如附圖所示。筆者用16F877A/D轉(zhuǎn)換通道其中一路作A/D轉(zhuǎn)換,以說(shuō)明A/D轉(zhuǎn)換編寫(xiě)程序的方法和在線調(diào)試及編程。
        在附圖中,筆者把R6的可變輸出(電壓模擬量)端接到RA0/AN0作為模擬量輸入;用D口(RD0~RD7)的8只LED顯示A/D轉(zhuǎn)換的結(jié)果(按二進(jìn)制顯示)。
        一、建立A/D轉(zhuǎn)換源程序的要點(diǎn)編寫(xiě)10位的一路A/D轉(zhuǎn)換程序看似簡(jiǎn)單,但對(duì)初學(xué)者卻有一定難度,因?yàn)榫帉?xiě)A/D轉(zhuǎn)換程序時(shí),要熟練使用PIC16F877內(nèi)部的多個(gè)特殊功能寄存器。附表列出了與A/D轉(zhuǎn)換有關(guān)的部分特殊功能寄存器。在A/D轉(zhuǎn)換器中未用到的寄存器位以空白表示。
        1.A/D引腳控制寄存器ADCON1ADCON1的bit0~bit3(PCFG0~PCFG3)為A/D轉(zhuǎn)換功能選擇位,若為1110,則表示AN0(RA0)通道是模擬量輸入,其余通道為數(shù)字I/O(其他編碼功能,請(qǐng)參見(jiàn)書(shū)籍介紹)。Bit7(ADFM)為A/D結(jié)果格式選擇位,1表示結(jié)果右移,0表示結(jié)果左移。
        2.中斷標(biāo)志寄存器PIR1PIR1的bit6(ADIF)為A/D中斷標(biāo)志位,該位為1表示模數(shù)轉(zhuǎn)換已完成,為0表示轉(zhuǎn)換未完成。
        3.A/D操作控制寄存器ADCON0ADCON0的bit0(ADON)為A/D轉(zhuǎn)換允許位,該位為1打開(kāi)A/D轉(zhuǎn)換器,為0關(guān)閉A/D轉(zhuǎn)換器;bit2(GO/DONE)為A/D轉(zhuǎn)換狀態(tài)位,該位為1啟動(dòng)A/D轉(zhuǎn)換,為0表示A/D轉(zhuǎn)換已完成(A/D轉(zhuǎn)換完成后該位自動(dòng)清零);bit3~bit5為A/D通道選擇位,其值對(duì)應(yīng)于通道號(hào),000為0通道;bit6~Bit7(ADCS0、ADCS1)為A/D轉(zhuǎn)換時(shí)鐘選擇,00=fosc/2,01=fosc/8,10=fosc/32,11=fRC(RC振蕩器)。為正確進(jìn)行A/D轉(zhuǎn)換,A/D轉(zhuǎn)換時(shí)鐘值不宜選得太小。
        4.A/D結(jié)果高字節(jié)寄存器ADRESH存放A/D轉(zhuǎn)換結(jié)果的高字節(jié)。
        編寫(xiě)A/D轉(zhuǎn)換的源程序,還會(huì)用到STATUS、OPTION、INTCON……寄存器。
        二、PIC16F877A/D轉(zhuǎn)換源程序.ASM實(shí)例
        筆者編寫(xiě)的A/D轉(zhuǎn)換源程序清單如下:
        LISTP=PIC16F877;選單片機(jī)型號(hào)
        #INCLUDEP16F877.INC
        ORG0;復(fù)位矢量
        GOTUSTART
        ORGD'20";程序起始
        STARTBCFSTATUS,6
        BSFSTATUS,5;選BANK1
        CLRFTRISD;設(shè)D口為輸出
        CLRW;0→W
        MOVLWB'10000111';TMR0,預(yù)分頻
        MOVWFOPTION_REG;1:256
        CLRW
        MOVLWB'00000001'
        MOVWFTRISB;設(shè)B0為輸入
        MOVWFTRISA
        MOVLW0
        MOVLWB'00001110';A/D結(jié)果左移
        MOVWFADCON1;VDD為參考電壓
        BCFSTATUS,5;復(fù)位
        ;BANK0
        CLRFPORTD;清D口
        MOVLWB'01000001';打開(kāi)A/D選時(shí)鐘
        MOVWFADCON0;fosc/8
        MAINBTFSSINTCON,T0IF;TMR0溢出?
        GOTOMAIN;等待
        BCFINTCON,T0IF;TMR0溢出
        BCFPIR1,ADIF;清標(biāo)志位
        ;T0IF
        BSFADCON0,GO;啟動(dòng)A/D變換
        WAITBTFSSPIR1,ADIF;變換判標(biāo)志位?
        GOTOWAIT;等待
        MOVFADRESH,W;A/D轉(zhuǎn)換完成
        MOVWFPORTD;高字節(jié)到D口
        CLRFPORTD;0→D口
        WAITPWSHBTFSSPORTB,0;判0位
        GOTOWAITPUSH;等待
        MOVWFPORTD;高字節(jié)送D口
        GOTOMAIN
        END
        說(shuō)明:1.因LED顯示僅用了8位(D口上),所以A/D轉(zhuǎn)換的低二位未顯示。2.從源程序中可以看出,A/D轉(zhuǎn)換是通過(guò)控制PIC16F877內(nèi)部特殊功能寄存器來(lái)完成的。
        三、PIC01.ASM的在線調(diào)試和程序固化
        上述源程序可按照上期本版介紹的方法進(jìn)行在線調(diào)試。調(diào)試時(shí)可用MPLAB工具欄中的連續(xù)功能鍵操作。若在操作一次后再連續(xù)調(diào)試時(shí),應(yīng)改變附圖中電位器中心抽頭的電壓值,方能觀察A/D變換的結(jié)果。程序調(diào)試好后再把目標(biāo)碼.Hex固化到16F877單片機(jī)中,即可觀察不同的模擬量變換成數(shù)字量的結(jié)果,并可用三用表實(shí)測(cè)進(jìn)行驗(yàn)證。

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


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


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




        評(píng)論


        相關(guān)推薦

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

        關(guān)閉