Forum: Mikrocontroller und Digitale Elektronik PIC 16F684 Interrupt an AN2


von Ma B. (drumstick)


Lesenswert?

Hallo Zusammen!

Ich habe ein Programm von einer früheren Aufgabe übernommen (ohne 
Beschreibung). Nun funktionieren die Interrupts nicht!



Der Code:

______________________________________________________________________ 
_


list  p=16F684
  #include   <p16F684.inc>
  RADIX     DEC
  errorlevel  -302
  errorlevel  -306

__CONFIG  B'11001111010100'

org     0x00
nop
goto    Init
org     0x04
goto Interrupt


Init    call    InitWatchdocOff
        call    InitOszillator
        call    InitPort
    call  InitTMR
        call  InitTMR2
  call  InitInterrupt
        goto    Main


;Teilprogramm von Init

InitWatchdocOff
    clrwdt
    movlw  b'00001000'
    banksel  WDTCON
    movwf  WDTCON
    banksel  PORTA
    return


;Teilprogramm von Init

InitOszillator
                bsf  STATUS,RP0
    movlw  b'01101000'
    movwf  OSCCON
    movlw  b'00000000'
    movwf  OSCTUNE
    bcf  STATUS,RP0
    return


;Teilprogramm von Init

InitPort                    movlw  b'00000000'
    movwf  PORTA
    movwf  PORTC
    movlw  b'00011101'
    movwf  ADCON0
    movlw  b'00000111'
    movwf  CMCON0
    bsf  STATUS,RP0
    movlw  b'10000000'
    movwf  ANSEL
    movlw  b'00010000'
    movwf  ADCON1
    movlw  b'11111100'
    movwf  TRISA
    movlw  b'11001011'
    movwf  TRISC
    movlw  b'00100000'
    movwf  IOCA
    bcf  STATUS,RP0
    return


;Teilprogramm von Init

InitTMR  movlw  b'00000000'
    movwf  T1CON
    bsf    PIE1,0
    movlw  b'11111111'
    addwf  TMR1IE,1
    movlw  TMR1H_V
    movwf  TMR1H
          movlw  TMR1L_V
    movwf  TMR1L
    bsf  T1CON,TMR1ON
    bcf  PIR1,TMR1IF
    return


;Teilprogramm von Init

InitTMR2
    movlw  b'00000000'
    movwf  T2CON
    movlw  d'255'
    movwf  PR2
    bsf   PIE1,1
    bcf  PIR1,1
    return


;Teilprogramm von Init

InitInterrupt

    bcf  INTCON,1
    bsf     INTCON,4
    bsf     INTCON,6
    bsf     INTCON,7
    return


;Interruptsubroutine

Interrupt
    btfsc  INTCON,1
    goto    EXINT
    btfsc  INTCON,RAIF


Interrupt1
    btfsc  PIR1,TMR1IF
    call  TMR1ir
    btfsc  PIR1,1
    call  TMR2ir
    goto  EXIT

EXINT          bsf     PORTC,5
    bcf     INTCON,1
    goto    EXIT

TMR1ir          bcf  T1CON,TMR1ON

EndTMR  movlw  TMR1H_V
    movwf  TMR1H
    movlw  TMR1L_V
    movwf  TMR1L
    bsf  T1CON,TMR1ON
    bcf  PIR1,TMR1IF
    return

TMR2ir          bcf  T2CON,2
    bsf  PORTC,5
    movlw  d'255'
    movwf  PR2
    bsf   T2CON,2
    bcf  PIR1,1
    return

Hallir          movf  PORTA,w
    movwf  SavePortA
    bcf  INTCON,RAIF
    return
EXIT          retfie


;Hauptprogramm

Main          nop
    btfss  PORTC,0
    goto  links
    bsf  PORTC,4
    bsf  PORTC,5
    goto   End1

links          btfss  PORTC,1
    goto  MotDis
    bcf    PORTC,4
    goto  End1
End1          nop
    goto   Main
    end
______________________________________________________________________ 
_



So wie ich das sehe sind die Interrupts der beiden Timers auch 
konfiguriert/Aktiv!?!!

Aber ich komme gar nie in die Interrupt-Routienen!



Vielen Dank für die Hilfe und Gruess!

M.B

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.