Vai al contenuto
PLC Forum


Registro Adcon1 - errore nella selezione del banco


adone79

Messaggi consigliati

vorrei programmare un pic 16f780 per acquisire la risposta indiciale di un filtro e ho iniziato a buttare giù dure righe di codice ( non è ovviamente completo , è solo la parte iniziale :D ) :

;acquisizione della risposta indiciale di un sistema lineare
    
  List    p=16F870    ;Tipo di processore
  include    "P16F870.INC";Definizione dei registri interni

Contatore  equ    0x20    ;Variabile per la temporizzazione
                    
  org 0
                goto inizio
                org 4

                

inizio         BCF STATUS,RP1; si utilizzeranno solo il banco 1 ed il banco 0
                MOVLW 0x00
                TRIS  PORTA   ; la linea 0 della porta A è l'uscita tramite cui inviare il gradino
                MOVLW 0xFF
                TRIS PORTB   ; la linea 1 della porta A è l'ingresso analogico tramite cui rilevare la risposta indiciale
  MOVLW 0b01000001; scegli la linea 1 per l'acquisizione (CHS0=1) e come tempo di acquisizione 8*Tosc 
                MOVWF ADCON0
                MOVLW 0b1000000; ADFM=1 significa che gli 8 bit meno significativi della conversione finiscono in ADRESL
                BSF STATUS,RP0
                MOVWF ADCON1
                MOVLW 0b00000001; invia il gradino ( da perfezionare, ad esempio sincronizzando con un comando esterno)
                MOVWF PORTA  
                goto ciclo_attesa

ciclo_attesa    goto ciclo_attesa
                 
                end                

e ricevo la seguente warning:

Message[302] D:\DANIELE\PIC\PROGRA~2\ACQUIS~1\ACQUIS~1.ASM 23 : Register in operand not in bank 0. Ensure that bank bits are correct.

Ma ADCON1 non sta nel bank1? E ponendo RP1=0,RP0=1 non seleziono quel banco? Perché ricevo quest'errore?

Grazie a chiunque vorrà darmi una mano.

Link al commento
Condividi su altri siti


cioè mi segnala ogni registro che utilizzo al di fuori del banco 0?

eppure mi sembra strano , perché prima di mettere BSF STATUS,RP0 mi dava comunque un messaggio e non un errore. :(

Link al commento
Condividi su altri siti

il prg non riesce a capire se hai settato il banco giusto.

Te lo dira' sempre ogni volta che lo usi.

Per non far apparire questo warning devi inserire

ERRORLEVEL -302

all'inizio del tuo programma

questo disabilita i warn. 302.

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...