音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費(fèi)注冊(cè) 首頁 | 行業(yè)黑名單 | 幫助
維庫(kù)電子市場(chǎng)網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

PIC16f87x 各種子程序(續(xù)1)

作者:小村之戀 欄目:單片機(jī)
PIC16f87x 各種子程序(續(xù)1)
第5章  數(shù)字濾波及控制算法
5.1  平均值濾波
程序清單如下:
;************* AD采樣中斷子程序******************
AD            CALL        PUSH        ;調(diào)PUSH子程序保護(hù)現(xiàn)場(chǎng)
            BCF            PIR1,ADIF    ;清AD中標(biāo)志位
            BTFSS        TEMP,2        ;TEMP=4?
            GOTO        AD1            ;否,采樣周期沒完,求和
            CLRF        ADH            ;是,新的采樣周期開始,清ADH寄存器
            CLRF        ADL            ;清ADL寄存器
            MOVF        ADRESHL,0    ;AD采樣結(jié)果低8位送W寄存器
            ADDWF        ADL            ;加至ADL寄存器
        BTFSC         STATUS,C    ;有進(jìn)位?
    INCF         ADH            ;有,加進(jìn)位位
    MOVF         ADRESH,0    ;加AD結(jié)果高半字節(jié)
    ADDWF         ADH
    DECFSZ        TEMP        ;本次采樣周期結(jié)束?
    GOTO        AD2
    MOVLW        0X04            ;是,重新初始化TEMP寄存器
    MOVWF        TEMP    
    BSF            FLAG,1        ;置AD采樣周期結(jié)束標(biāo)志位
    CALL        POP            ;恢復(fù)現(xiàn)場(chǎng)
    RETFIE                    ;本次采樣周期結(jié)束,返回
AD2    CALL        DELAY        ;調(diào)延時(shí)子程序,延時(shí)2μs
            BSF            ADCON0,GO    ;開始下一次采樣
            CALL        POP            ;恢復(fù)現(xiàn)場(chǎng)
            RETFIE                    ;中斷返回
;*************中斷保護(hù)現(xiàn)場(chǎng)子程序****************
PUSH                                    
            MOVWF        W_STACK        ;暫存W寄存器
            MOVF        STATUS,0    ;暫存STATUS寄存器
            MOVWF        ST_STACK
            BCF            STATUS,RP0    ;選擇存儲(chǔ)體0
            RETURN                    ;子程序返回
;**************中斷恢復(fù)現(xiàn)場(chǎng)子程序***************
POP                    
    MOVF        ST_STACK,0    ;恢復(fù)STATUS寄存器值
            MOVWF        STATUS
            MOVF        W_STACK,0    ;恢復(fù)W寄存器值
            RETURN                    ;子程序返回
【例程】
    ORG            0X0004
    BTFSC        PIR1,ADIF    ;AD中斷矢量入口
        GOTO        AD
    RETFIE
    ORG            0X0000
MAIN        MOVLW        0X01            ;初始化ADCON0寄存器
    MOVWF        ADCON0
    BSF            STATUS,RP0    ;選擇BANK1
    MOVLW        0XFF            ;將RA口設(shè)置成模擬輸入
    MOVWF        TRISA
    MOVLW        0XFF            ;初始化ADCON1
    MOVWF        ADCON1
    BSF            PIE1,ADIE    ;開AD中斷
    BCF           &
2樓: >>參與討論
小村之戀
第6章  秒  表

6.2.2  程序清單
    該源程序已在實(shí)驗(yàn)板上調(diào)試通過,讀者可直接引用,并可以利用軟件編程的靈活性,加以拓展,實(shí)現(xiàn)更為復(fù)雜的功能。
LIST            P=16F877
        INCLUDE        "P16F877,INC"
;************此程序?qū)崿F(xiàn)計(jì)時(shí)秒表功能******************
;時(shí)鐘顯示范圍:00.00秒-99.99秒,分辨度:0.01秒;所用的寄存器如下
S0            EQU        0X20            ;0.01 秒計(jì)時(shí)器
S1            EQU        S0+1            ;0.1 秒計(jì)時(shí)器
S2            EQU        S0+2            ;1 秒計(jì)時(shí)器
S3            EQU        S0+3            ;10   秒計(jì)時(shí)器
SREG        EQU        S0+4            ;軟計(jì)數(shù)器
LEDF        EQU        S0+5            ;顯示的LED的位置指示寄存器
XW_TEMP    EQU        S0+6            ;用于中斷中保護(hù)W的值
XHOSTS        EQU        S0+7            ;用于中斷中保護(hù)STATUS的值
DEYH        EQU        S0+8
DEYL        EQU        S0+9            ;以上兩個(gè)寄存器用于軟件延時(shí)
HOSTF        EQU        S0+0A        ;用于中斷中保護(hù)FSR的值
    ORG            0X00
    GOTO        MAIN
    ORG            0X04
    GOTO        CLKINT                ;轉(zhuǎn)向中斷服務(wù)程序
    ORG            0X10
;****************************************
;數(shù)字到段碼的轉(zhuǎn)換子程序(最好放在程序開頭,避免超過2 KB的空間發(fā)生跨頁讀表)
CONVERT                                    ;不帶小數(shù)點(diǎn)的共陽極碼表    
……                                ;詳細(xì)的程序語句見A/D應(yīng)用章節(jié)的程序清單
CONVERT2                                ;帶小數(shù)點(diǎn)的共陽極碼表
……                                ;詳細(xì)的程序語句見A/D應(yīng)用章節(jié)的程序清單
TRANSMIT                                       ;SPI發(fā)送顯示子模塊
    CLRF        PORTA                  ;LACK送低電平,為鎖存做準(zhǔn)備
    MOVWF        SSPBUF                   ;啟動(dòng)發(fā)送    
WAIT    BANKSEL        PIR1
    BTFSS        PIR1,SSPIF
    GOTO        WAIT                     ;等待發(fā)送結(jié)束
    BCF            PIR1,SSPIF            ;清除中斷標(biāo)志
    NOP
    RETURN
;***********顯示子程序模塊************
DISPLAY    MOVLW        0X01
    MOVWF        LEDF
    MOVLW        0XA0
    MOVWF        FSR
AGAINXIAN    MOVF    LEDF,W
    SUBLW        0X02
    BTFSS        STATUS,Z
    GOTO        XIANB
    MOVF        INDF,W
    CALL        CONVERT2            ;若是第二位,則查帶小數(shù)點(diǎn)的碼表
    GOTO        TRAN
XIANB    MOVF        INDF,W
    CALL        CONVERT
TRAN    CALL        TRANSMIT            ;發(fā)送一個(gè)顯示數(shù)據(jù)
    INCF            FSR
    INCF            LEDF
    MOVF        LEDF,W
    SUBLW        0X05
    BTFSS        STATUS,Z
    GOTO        AGAINXIAN
    MOVLW        0X01
    MOVWF     &
3樓: >>參與討論
tao2000
感激
感謝老大的慷慨大帖,我要頂!


參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
救急,VFD真空屏如何驅(qū)動(dòng)?
請(qǐng)教一關(guān)于PIC16C73的菜鳥問題
幫忙推薦一款18JIAO
求助,各位大蝦,有對(duì)PIC16C72A的解密的辦法嗎?急用!
以上是啥意思? 英語高手請(qǐng)賜教
免費(fèi)注冊(cè)為維庫(kù)電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào)