最新免费av在线观看,亚洲综合一区成人在线,中文字幕精品无码一区二区三区,中文人妻av高清一区二区,中文字幕乱偷无码av先锋

登錄 免費(fèi)注冊(cè) 首頁(yè) | 行業(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

請(qǐng)各位大俠幫我看看這個(gè)程序

作者:love pic 欄目:單片機(jī)
請(qǐng)各位大俠幫我看看這個(gè)程序
;;;;;;;利用RB電平中斷實(shí)現(xiàn)鍵盤擴(kuò)展;;;;;;;;;;;;;;;;;
;;;;;;;當(dāng)S1按下時(shí)數(shù)碼管顯示1,當(dāng)S2按下時(shí)顯示2,S3按下時(shí)顯示3,S4按下時(shí)顯示4;;;;;;
;;;PIC16F877單片機(jī)的端口的4個(gè)個(gè)引腳RB7~RB4上有電平變化時(shí),可以產(chǎn)生中斷,但只有當(dāng)I/O
;;;設(shè)為輸入狀態(tài)時(shí),才能產(chǎn)生中斷。其功能實(shí)現(xiàn)是通過(guò)把RB7~RB4引腳上的輸入信號(hào)與上次讀入的舊值進(jìn)行比較
;;;如果不等,則把二者異或后輸出,產(chǎn)生變化中斷,并把RBIF置1
    LIST P=16F877
     INCLUDE"P16F877.INC"
COUNT    EQU    20H
W_TEMP    EQU    21H
STATUS_TEMP    EQU    22H
PCL_TEMP    EQU    23H
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ORG        0000H
    NOP
    GOTO    MAIN
    ORG        0004H
    GOTO     SERVE
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MAIN
    BCF    PORTB,1;初始化I/O
    BCF    PORTB,2
    BSF    PORTB,4
    BSF    PORTB,5
    BCF    STATUS,RP1
    BSF    STATUS,RP0
    CLRF    TRISC
    BCF    TRISB,1
    BCF    TRISB,2
    BSF    TRISB,4
    BSF    TRISB,5
    BCF    OPTION_REG,7;啟動(dòng)弱上拉
    BCF    STATUS,RP0
    MOVLW    B'10001000'
    MOVWF    INTCON
    BCF    PORTB,1
    BCF    PORTB,2
    MOVF    PORTB,W
    GOTO    $
    
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SERVE
    MOVWF    W_TEMP;保護(hù)現(xiàn)場(chǎng)
    SWAPF    STATUS,W
    CLRF    STATUS
    MOVWF    STATUS_TEMP
    MOVF    PCLATH,W
    MOVWF    PCL_TEMP
    CLRF    PCLATH
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    BCF    INTCON,GIE
    BCF    INTCON,RBIF
    MOVF    PORTB,W
    ANDLW    30H;判斷是否是RB中斷?
    SUBLW    30H
    BTFSC    STATUS,Z
    GOTO    LOP
    MOVLW    0FDH;鍵值判斷并送顯
    MOVWF    PORTB
    NOP
    NOP
    BTFSS    PORTB,4
    GOTO    S4
    BTFSS    PORTB,5
    GOTO    S3
    MOVLW    0FBH
    MOVWF    PORTB
    NOP
    NOP
    BTFSS    PORTB,4
    GOTO    S2
    BTFSS    PORTB,5
    GOTO    S1
S3    MOVLW    .3
    MOVWF    COUNT
    CALL    READ
    MOVWF    PORTC
    GOTO    LOP
S4    MOVLW    .4
    MOVWF    COUNT
    CALL    READ
    MOVWF    PORTC
    GOTO    LOP
S2    MOVLW    .2
    MOVWF    COUNT
    CALL    READ
    MOVWF    PORTC
    GOTO    LOP
S1    MOVLW    .1
    MOVWF    COUNT
    CALL    READ
    MOVWF    PORTC
    GOTO    LOP
LOP    ;MOVF    PORTB,W
    CLRF    COUNT
    BCF    INTCON,RBIF
    MOVF    PCL_TEMP,W;恢復(fù)現(xiàn)場(chǎng)
    MOVWF    PCLATH
    SWAPF    STATUS_TEMP,W
    MOVWF    STATUS
    SWAPF    W_TEMP,F
    SWAPF    W_TEMP,W
    BCF        INTCON,RBIF
    BSF        INTCON,GIE
    RETFIE
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
READ
    ADDWF    PCL,F
    RETLW    B'00000110'
    RETLW    B'01011010'
    RETLW    B'01001111'
    RETLW    B'01100110'
    RETURN
    END
    
我把這個(gè)程序看了幾遍,沒(méi)有發(fā)現(xiàn)什么問(wèn)題(為了調(diào)試方便去掉了去抖程序),可是不知道為什么不能實(shí)現(xiàn)功能。數(shù)碼管不能正常顯示,麻煩各位大俠抽出寶貴的時(shí)間幫我看看,小弟感激不盡。!
    


2樓: >>參與討論
xieyuanbin
錯(cuò)了
    BCF    INTCON,GIE     ;這句可不要,一旦進(jìn)入中斷GIE自動(dòng)清零
    BCF    INTCON,RBIF ;這句和下句應(yīng)該對(duì)掉。請(qǐng)仔細(xì)看數(shù)據(jù)手冊(cè)。
    MOVF    PORTB,W
    ANDLW    30H;判斷是否是RB中斷?!一般來(lái)講,判斷是什么中斷應(yīng)該在中斷保護(hù)之后測(cè)試*IF標(biāo)志位來(lái)看是什么中斷。RB口電平變化中斷只要有任何一口電平改變就會(huì)發(fā)生中斷,因此你只需要判斷是否是RB口中斷就行,不必去看RB口是否有變化?多看看數(shù)據(jù)手冊(cè),或者多買幾本書(shū)看看。
    SUBLW    30H
    

3樓: >>參與討論
love pic
謝謝
請(qǐng)問(wèn)這位大俠,你是說(shuō)只要判斷RBIF是否是1 就可以了嗎?小弟初學(xué)PIC,請(qǐng)多多指教!!
QQ:44312923

4樓: >>參與討論
xieyuanbin
不錯(cuò)。
 
5樓: >>參與討論
love pic
thank you
多謝大俠指點(diǎn),我已按照你說(shuō)的改過(guò)來(lái)了,可是還是不能實(shí)現(xiàn)功能,請(qǐng)問(wèn)這個(gè)程序別處還有錯(cuò)誤嗎?硬板件電路沒(méi)有問(wèn)題

6樓: >>參與討論
xieyuanbin
程序這么長(zhǎng),
不可能逐句看下來(lái),您用MPLAB里面的軟仿真仿真一下,應(yīng)該能看出結(jié)果。MPLAB中的軟仿真功能很強(qiáng)的,也有異步引腳激勵(lì),試試看。我現(xiàn)在寫程序都不用硬件仿真器。

7樓: >>參與討論
love pic
謝謝
我用軟件防真沒(méi)有發(fā)現(xiàn)什么問(wèn)題,可是用軟件防真時(shí)出現(xiàn)了數(shù)碼管無(wú)法正常顯示,我的硬件電路沒(méi)有什么問(wèn)題,我查過(guò)幾次,現(xiàn)在懷疑是程序的問(wèn)題,如果有空請(qǐng)大俠幫我看看程序。

8樓: >>參與討論
xieyuanbin
查表錯(cuò)了。
查表中容易出現(xiàn)的問(wèn)題:
一、如果W里的值為1,如下查表:
ADDWF PCL
RETLW D'1'
RETLW D'2'
...
返回的值為2而不是1;
二、查表小心溢出,如果W里的值超過(guò)表長(zhǎng),則會(huì)造成溢出,程序跑飛。
三、(W+PCL)的值不能超過(guò)255,如果超過(guò)則要進(jìn)位到PCLAH,否則程序也跑飛。初學(xué)者最好將小的表放在程序的開(kāi)頭,這樣不怎么會(huì)溢出。大的超過(guò)255句長(zhǎng)度的一定要進(jìn)位到PCLAH,我一般超過(guò)幾十句便會(huì)判斷是否有進(jìn)位。


9樓: >>參與討論
love pic
thank you
呵呵,這確實(shí)是一個(gè)錯(cuò)誤,多謝大俠提醒。這個(gè)程序別處還有問(wèn)題嗎?改過(guò)來(lái)了,還是不能實(shí)現(xiàn)功能。

參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
PIC的EEPROM問(wèn)題
請(qǐng)教張大俠和各位高手
關(guān)于keeloq技術(shù)!
請(qǐng)教關(guān)于877A的AD硬件
求助,請(qǐng)幫俺做第一個(gè)硬件
免費(fèi)注冊(cè)為維庫(kù)電子開(kāi)發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


Copyright © 1998-2006 www.udpf.com.cn 浙ICP證030469號(hào)