; Assembly PIC18 - Versione 0.1 - Marzo 2017 ; Copyright (c) 2016-2017, Vincenzo Villa ; Creative Commons | Attribuzione - Condividi allo stesso modo 4.0 Internazionale (CC BY-SA 4.0) ; Creative Commons | Attribution-Share Alike 4.0 Unported ; https://www.vincenzov.net/tutorial/PIC18/assembly/adc.htm ; PIC18F26K20 / MPLAB X 3.55 / MPASM v5.72 ; Questo programma legge la tensione presente sul PIN A0 (0.. VDD) ; Procedura descritta al paragrafo 19.2.9 A/D CONVERSION PROCEDURE dei fogli tecnici #include "p18f26k20.inc"; il file con la definizine dei registri specifici del PIC in uso UDATA tensione res 2 ; Tensione (0... 1023) CODE 0x0000 ; vettore di reset, indirizzo 0. Il codice inizia qui ; Configurazione degli ingresso analogici bsf TRISA, RA0 ; Imposta A0 come ingresso ; REGISTER 10-2: ANSEL: ANALOG SELECT REGISTER 1 bsf ANSEL, ANS0 ; Imposta ANS0 (AO) come ingresso analogico (disattiva l'ingresso digitale) ; REGISTER 10-2: ANSEL: ANALOG SELECT REGISTER 1 ; Configurazione dell'ADC movlw B'10100000' ; Configura ADCON2 ; 1 x 100 000 - REGISTER 19-3: ADCON2: A/D CONTROL REGISTER 2 ; 1 Allineato a destra ; 100 ACQ pari a 8 colpi di clock (valore intermedio) ; 000 Clock di conversione pari a 500 KHz movwf ADCON2 movlw B'00000000' ; Configura ADCON1 ; xx 0 0 xxxx - REGISTER 19-2: ADCON1: A/D CONTROL REGISTER 1 ; 0 Tensione di riferimento negativa: massa ; 0 Tensione di riferimento positiva: alimentazione movwf ADCON1 movlw B'00000001' ; Configura ADCON0 ; xx 0000 x 1 - REGISTER 19-1: ADCON0: A/D CONTROL REGISTER 0 ; 0000 Selezione il canale AN0 ; 1 L'ADC viene alimentato movwf ADCON0 ; Fase di conversione bsf ADCON0, GO ; Inizio della conversione attendi btfsc ADCON0, DONE ; Conversione terminata? bra attendi ; No, attendi ancora movff ADRESH, tensione+1 movff ADRESL, tensione sleep END ; Fine del file