Vai al contenuto
PLC Forum


Sempre A Caccia Del Baco Software O Hardware - L'interrupt della porta BO non Funziona


Armando pic

Messaggi consigliati

Generato un impulso largo 700uS l'interrupt non parte( sia positivo^ che negativo!) se lostesso impulso viene ripetuto di continuo

con un generatore di funzioni la rutin si avvia.

Perche questo stupido programma non funziona??????

:huh:

TITLE 'PROG01: INVIO IN SERIALE UN BYTE CON INTERRUPT RB0
 list F=INHX8M,P=16f84A

    INCLUDE         "P16F84A.INC"

       __CONFIG _CP_ON & _WDT_OFF & _PWRTE_OFF & _HS_OSC

       ORG       0
       goto      START        ;Reset vector
       nop

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>> INTERRUPT >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
       ORG       4

        MOVWF   WTEMP    ; SALVO W IN WTEMP
        SWAPF   STATUS,W       ; SALVO I REGISTRI DI STATO
        BCF     STATUS,5; ATTIVO IL BANCO 0
        MOVWF   STEMP    ; SALVO IL REGISTRO DI STATO "SWAPPATO"


        BTFSS   INTCON, T0IF; VERIFICO SE L'INTERR. E DEL TIMER0
        GOTO    BINT

        BCF     INTCON, T0IF
        MOVLW   .100
        MOVWF   TMR0
        DECF    TEMP, F    ; RUTIN DEL TIME0
    GOTO    ENDERR



BINT    BTFSS    INTCON,    INTF; ineterrupt rb0
    GOTO    ENDERR  


ASSURDO    MOVF    LPOWER,W    
    MOVWF    RAM4  
    
    MOVLW    .20
    MOVWF    ERRORE



    CALL    DECOBIT    ;1
    CALL    ATT102us

    RRF    RAM4,F
    CALL    DECOBIT    ;2
    CALL    ATT102us

    RRF    RAM4,F
    CALL    DECOBIT    ;3
    CALL    ATT102us

    RRF    RAM4,F
    CALL    DECOBIT    ;4
    CALL    ATT102us

    RRF    RAM4,F      ; BYTE POWER LAMP
    CALL    DECOBIT    ;5
    CALL    ATT102us

    RRF    RAM4,F
    CALL    DECOBIT    ;6
    CALL    ATT102us

    RRF    RAM4,F
    CALL    DECOBIT    ;7
    CALL    ATT102us

    RRF    RAM4,F
    CALL    DECOBIT    ;8
    CALL    ATT102us



ENDERR   BCF     INTCON, INTF    ; AZZERO BIT INT FLEG
    SWAPF   STEMP, W
         MOVWF   STATUS
         SWAPF   WTEMP, F
         SWAPF   WTEMP, W
        

         RETFIE               ; esce dalla rutin e riabbilita il GIE

;---------------------------------------------------------------------------
;                             START PROGRAM
;---------------------------------------------------------------------------

START
; ++++++++++++++++++++++++++++ RAM SETTING ASSIGN ++++++++++++++++++++

TEMP      equ           0x20       
UNITA     equ           0x21      
DECINE    equ           0x22      
CENTIN    equ           0x23       
STATO     equ           0x24      
TEMPM     equ           0x25      
VCODEC    equ           0x26       
DISPV     equ           0x27      
DLED1     equ           0x28      
DLED2     equ           0x29
DLED3     equ           0x2a
WAIT1     equ           0x2b
WAIT2     equ           0x2c
WAIT3     equ           0x2d
WAIT4     equ           0x2e
WTEMP     equ           0x2f
STEMP     equ           0x30
TON       equ           0x31
RUNON     equ           0x32
LPOWER   equ  0x33
LSTATUS   equ  0x34
LEDBAR   equ  0x35
SERV1   equ  0x36
SERV2   equ  0x37
SERV3   equ  0x38
SERV4   equ  0x39
RAM1   equ  0x3a
RAM2   equ  0x3b
RAM3   equ  0x3c
RAM4   equ  0x3F
INCFST   equ  0x3d
DECFST   equ  0x3e
ERRORE   equ  0x40
; ******************************** Setto tutte le porte *************************


       BSF       STATUS,5     ; Banco 1 
       movlw     b'00011110'  ; RA1,RA2,RA3,RA4 INPUT - RA0 OUT
       movwf     TRISA        ;
       movlw     b'00000001'  ; RB1...RB6 out 25 mA RB0 in
       movwf     TRISB        ; 

       movlw     b'00000111'  ; pull up 'on' / INT up /TIMER Osc
       movwf     OPTION_REG   ; TIMER up / PSA for TIMER0/ PRESC 256


       bcf       STATUS,5     ; Seleziona SRAM banco 0

       clrf      PORTA        ; Uscite della porta A tutte a 0
       clrf      PORTB        ; Uscite della porta B tutte a 0

       bsf       STATUS,5     ; Seleziona SRAM banco 1

       movlw     b'00010000'  ; INT GLOB off / INT EEP off / INT TIMER0 off 
       movwf     INTCON       ; INT RB0 on /INT RB7-4 off / RES ALL flags

       bcf       STATUS,5     ; Seleziona SRAM banco 0


;

;---------------------- main program ----------------------------
MAIN
        CLRF    RUNON
    CLRF    LPOWER
    CLRF    LSTATUS
    CLRF    LEDBAR
    MOVLW    .170
    MOVWF    LPOWER  ;azzera tutte le variabili e setta a 200 la V LPOWER
        BSF    INTCON,GIE    ; abilito interrupt potra B


MAIN2
    BSF    PORTB,1
; ho eliminato tutto il resto del programma solo per
; poter escludere dei possibili erroriho lasciato solo
; questa stupidissima rutin in interrupt che chiramente
; non funziona.



         goto     MAIN2                                       ;start del programma


;||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
;|||||||||||||||||||||||||| RUTIN DI RITARDO ||||||||||||||||||||||||||||||||



ATT102us

        MOVLW   .4
        MOVWF   WAIT1
        MOVWF   WAIT2


ATTL000    MOVLW   .5
        MOVWF   WAIT1

ATTL111    DECFSZ  WAIT1, F
        GOTO    ATTL111
        DECFSZ  WAIT2, F
        GOTO    ATTL000
    NOP
    NOP
    NOP
    NOP
        RETURN

;===================================== SUBRUTIN DECO BIT ===========================

DECOBIT      ; RBO è ELTO

    BTFSS    RAM4,0    ;I
    GOTO    BTD4    ;I
    BSF    PORTB,1    ;I    BIT2
    GOTO    BTD5    ;I
BTD4    BCF    PORTB,1    ;I
BTD5    RETURN



       goto      MAIN         ;
;----------------------------------------------------------------
       END

Link al commento
Condividi su altri siti


Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...