Vai al contenuto
PLC Forum


P16f876a E Conversione A/d - dove sbaglio?


Kajok

Messaggi consigliati

sto provando a fare la mia prima conversione a/d, vorrei prendere gli 8bit dati dal risultato della conversione di AN0 e metterli sul port B. questo e' il mio programma in assembler, cosa sbaglio???

PROCESSOR 16F876A

RADIX DEC

INCLUDE "P16F876A.INC"

__CONFIG 3F31H

LED0 EQU 0

LED1 EQU 1

LED2 EQU 2

LED3 EQU 3

LED4 EQU 4

LED5 EQU 5

LED6 EQU 6

LED7 EQU 7

SW0 EQU 0

SW1 EQU 1

SW2 EQU 2

SW3 EQU 3

ORG 0CH

ORG 00H

movlw 11000001b ;definizione convertitore a/d con ADCON0 -vedi datasheet pag 113-

movwf ADCON0

bsf STATUS,RP0 ;bank 1

movlw 10000000b ;definizione convertitore a/d con ADCON1 -vedi datasheet pag 114-

movwf ADCON1 & 7FH

movlw 00011111b ;Definizione della porta A

movwf TRISA & 7FH

movlw 00000000b ;Definizione della porta B

movwf TRISB & 7FH

movlw 00001111b ;Definizione della porta C

movwf TRISC & 7FH

bcf STATUS,RP0 ;bank 0

MainLoop

;Spegne tutti i led

clrw

clrf PORTB

Conversione

bsf ADCON0,GO_DONE

Attesaconversione

btfsc ADCON0,GO_DONE ;testa go_done, se =0 salta l'istruzione sucessiva

goto Attesaconversione

bsf STATUS,RP0

movf ADRESL & 7FH

bcf STATUS,RP0

movwf PORTB

goto MainLoop

END

Modificato: da Kajok
Link al commento
Condividi su altri siti


Mi correggo, l'errore non può essere quello perchè il compilatore, quando manca sia W che F, mette W di default.

Quindi l'errore va cercato altrove.

Ciao

Gariel

Link al commento
Condividi su altri siti

ora pero' funziona... l'unico errore che il compilatore mi da' e' questo :

Message[302] F:\ELETTRONICA\PIC\MPASMWIN401\PROGRAMMI FATTI\AD876A.ASM 54 : Register in operand not in bank 0. Ensure that bank bits are correct.

che non capisco....

il programma nuovo e' qua:

PROCESSOR 16F876A

RADIX DEC

INCLUDE "P16F876A.INC"

__CONFIG 3F31H

LED0 EQU 0

LED1 EQU 1

LED2 EQU 2

LED3 EQU 3

LED4 EQU 4

LED5 EQU 5

LED6 EQU 6

LED7 EQU 7

SW0 EQU 0

SW1 EQU 1

SW2 EQU 2

SW3 EQU 3

ORG 0CH

COUNT RES 2

ORG 00H

movlw 11000001b ;definizione convertitore a/d con ADCON0 -vedi datasheet pag 113-

movwf ADCON0

bsf STATUS,RP0 ;bank 1

movlw 10000000b ;definizione convertitore a/d con ADCON1 -vedi datasheet pag 114-

movwf ADCON1 & 7FH

movlw 00011111b ;Definizione della porta A

movwf TRISA & 7FH

movlw 00000000b ;Definizione della porta B

movwf TRISB & 7FH

movlw 00001111b ;Definizione della porta C

movwf TRISC & 7FH

bcf STATUS,RP0 ;bank 0

;Spegne tutti i led

clrf PORTB

MainLoop

bsf ADCON0,GO_DONE

Attesaconversione

btfsc ADCON0,GO_DONE ;testa go_done, se =0 salta l'istruzione sucessiva

goto Attesaconversione

bsf STATUS,RP0

movf ADRESL,W

bcf STATUS,RP0

movwf PORTB

call Delay

goto MainLoop

Delay

clrf COUNT

clrf COUNT+1

Delayloop

decfsz COUNT,1

goto Delayloop

decfsz COUNT+1,1

goto Delayloop

return

END

Modificato: da Kajok
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...