0

私はいくつかのマイクロコントローラーの練習をしようとしています.私は一種の初心者です.

基本的には、RC4 と RC5 の PORTC にボタンを接続し、入力として設定した PIC16F877A があります。RC5 を使用して割り込みをアクティブにし、TMR0 割り込みがブザーをアクティブにするのを待ちます (現在は LED を使用しています)。次に、RC4 は割り込みを無効にし、ブザー/LED を停止する必要があります (RC0 に接続され、出力として構成されます)。

プログラムを作成し、MPLAB で問題なく動作しましたが、実際に実行するには問題がありました。

これはプログラムです:

list p=16f877a
include "p16f877a.inc"
__CONFIG _CP_OFF & _DEBUG_OFF & _WRT_OFF & _CPD_OFF & _LVP_OFF & _BODEN_OFF & _PWRTE_ON & _WDT_OFF & _HS_OSC


DELH EQU 0x2C
DELL EQU 0x2F   
DELI EQU 0x2E 
ORG 0x00
GOTO MAIN
ORG 0x04
GOTO INTERRUMPE

MAIN        BCF STATUS,RP0
            BCF STATUS,RP1
            CLRF PORTC
            CLRF PORTB

            BSF STATUS,RP0  
            MOVWF 0xF0
            MOVWF TRISC
            MOVWF 0x00
            MOVWF TRISB
            MOVLW 0x83
            MOVWF OPTION_REG
            BCF STATUS,RP0

TECLA       BTFSS PORTC,5
            GOTO TECLA
            MOVLW  0xB8
            MOVWF INTCON
            MOVLW 0x63
            MOVWF TMR0        


TECLA2      BTFSS PORTC,4
            GOTO TECLA2
            BCF INTCON,7
            BCF PORTC,0
            GOTO TECLA   

INTERRUMPE BTFSS INTCON,2
           GOTO REGRESO
           BSF PORTC,0
           MOVLW 0xBF
           MOVWF TMR0
           BCF  INTCON,T0IF
REGRESO    RETFIE   

END     

最小限のシステムに従う必要があります。

http://prntscr.com/jkz88

そして、オシレーターを 4Mhz から 12Mhz に変更するまでは何もしませんでした。20Mhzも試しましたが、うまくいきませんでした。さまざまな構成ワードを試してみましたが、良い結果は得られませんでした。

助けてください、私は少し必死です。

4

1 に答える 1

0

まず第一に、コード

        MOVWF 0xF0
        MOVWF TRISC
        MOVWF 0x00
        MOVWF TRISB

MOVWFは、作業レジスタの内容をGPRまたはSFRまたはそのアドレスに移動するため、アドレス0xF0(GPR)および0x00(間接アドレス指定レジスタ)に次のように入力します。作業レジスタの不明な値。代わりに、コードは次のように開始する必要があります

        MOVLW 0xF0
        MOVWF TRISC
        MOVLW 0x00
        MOVWF TRISB

また、RC4およびRC4入力がプッシュボタンまたはスイッチである場合は、HWまたはSWのいずれかでデバウンスソリューションを実装することを検討してください。

最後に、クロック設定では、8MHz以上のクロックを使用している場合は、MPLABのコンフィギュレーションワードをHSに設定し、4 MHzを使用している場合は、XTにする必要があります。

于 2012-11-13T22:03:44.720 に答える