Visualizza messaggio singolo
Vecchio 07 maggio 11, 01:20   #13 (permalink)  Top
faustog_2
User
 
L'avatar di faustog_2
 
Data registr.: 19-07-2008
Residenza: catania
Messaggi: 978
Ok Funziona!!!

CIAO msCHIEPP...

non mi chiedere perchè , ma stasera dopo tanto tempo che non ci mettevo le mani, funziona, adesso mi accende 10 led, come numerazione binaria.
Adesso voglio andare avanti provando prima a gestire pseudo parallelamente due porte analogiche.. poi vorrei fare esperimenti usanto Vref diversi da quello del Pic..

Insomma pian pian mi allargo le conoscenze..

bene per il momento ecco il sorgente per la letura a 10 bit da una porta analogica, il bello che questo è molto simile per la serie 18F ..insomma messo a segno questo targhet. in futuro potrò sfruttare al meglio i sensori:


;************************************************* *
; Analog_1024.asm
;
; fausto.giudice@gmail.com
;************************************************* *

PROCESSOR 16F876
RADIX DEC
INCLUDE "P16F876.INC"

__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_OFF & _HS_OSC & _WRT_ENABLE_OFF & _LVP_OFF& _DEBUG_OFF & _CPD_OFF

cblock 0x20
L_CONT
H_CONT
SELREG
AN0_
AN1_
NumH
NumL
endc
;
; __________________________________________________ ________________________
;
; START PROGRAM
; ------------------------------------
ORG 0
;
;================================================= =====================
; Set Analog Port for RA0
;================================================= =====================
;
BSF STATUS,RP0 ; * SELECT BANK 1 *

; - Set ADCON1 register
MOVLW b'10000000' ; 0 > giustificazione a sinistra
MOVWF ADCON1
; 000 > - nessun significato
; 0000> tutte porte digitali di PORTA
; Vref+ = Vdd, Vref- = GND
BCF STATUS,RP0 ; * SELECT BANK 0 *
BCF STATUS,RP1

; - Set ADCON0 register
MOVLW b'11000001' ; 11 > velocità campionamento = clock interno
MOVWF ADCON0 ; 000 > RA0, 001 RA1, 010 RA2, 011 RA3, 100 RA4
; 0 > GO/DONE (SE = 1 AVVIA CONVERTITORE)
; 0 > - nessun significato
; 1 > convertitore attivo pronto per l'uso
;
;================================================= =====================
; Set Input and Output Port
;================================================= =====================
;
BSF STATUS,RP0 ; * SELECT BANK 1 *

MOVLW b'00000000' ; RC7/RX entrata seriale
MOVWF TRISC ; RC6/TX uscita seriale


MOVLW b'00011111'
MOVWF TRISA ; Set RA<3:0> as input RA<5:4> as output

movlw b'00000000'
MOVWF TRISB

;
;================================================= =====================
; MAIN LOOP
;================================================= =====================
;
MAIN
BCF ADCON0,3 ; --
BCF ADCON0,4 ; ** --
BCF ADCON0,5 ; ** --
BSF ADCON0,2
LOOP
BTFSC ADCON0,2
GOTO LOOP

movf ADRESH,W
andlw 0x03 ; solo i primi due bit
movwf NumH

BTFSS NumH,0
goto YY
goto XX

BTFSS NumH,1
goto WW
goto ZZ

ABAB BSF STATUS,RP0
movf ADRESL,W ; tutti i bit del registro
BCF STATUS,RP0

movwf NumL
movwf PORTC

BTFSS NumH,0
GOTO $+2
BSF PORTB,0
BCF PORTB,0

BTFSS NumH,1
GOTO $+2
BSF PORTB,1
BCF PORTB,1

GOTO MAIN

;_________________________________________________ ______
WW
BCF PORTB,1
GOTO ABAB
;_________________________________________________ ______
ZZ
BSF PORTB,1
GOTO ABAB
;_________________________________________________ ______
YY
BCF PORTB,0
GOTO ABAB
;_________________________________________________ ______
XX
BSF PORTB,0
GOTO ABAB

END


Citazione:
Originalmente inviato da MSchiepp Visualizza messaggio
Ti confermo che stai leggendo solo il registro ADSRH!!
Se vuoi mandami il codice che gli dò un'occhiata.

Michele
faustog_2 non è collegato   Rispondi citando