Programación Específica > Microcontroladores
Codigo Adc Pic18f877
(1/1)
jcjorque:
hola: si alguien me puede ayudar, prestar o regalar un codigo para transformar señales analogas en digitales en un PIC18F877, seria de gran ayuda para mi proyecto, muchas gracias.
© Jonathan ©:
HOla, Aqui te paso un codigo verificado. Saludos :)
--- Código: Text --- ;*****************************************************;lee un valor analogico por el AN0;y escribe el resultado binario por el puerto D;;***************************************************** List p=16F877a ;procesador #include <P16F877a.INC>;registros internos org 0x000 ;vector reset goto inicio ;va a inicio nop org 0x005 ;vector interrupcioninicio clrwdt ;borra watch-dog bcf STATUS,RP1 bsf STATUS,RP0 ;banco 1 movlw B'11111111' movwf TRISB movlw b'00000000' movwf TRISD movwf TRISC ;portc salida movwf PIE2 movlw b'00000010' movwf PIE1 ;cambiar bit 6 movlw b'00000111';prescaler TMR0 1:256 movwf OPTION_REG movwf b'00100000';habilitada intrr TMR0 movwf INTCON movlw b'11111111' movwf PR2 movlw B'10000000' movwf ADCON1 ;justificacion<7>,conf port<3:0> ;se activan todos los ADC,vref+=RA<3>,vref-=vss bcf STATUS,RP0;banco 0 movlw b'00101101' movwf CCPR1L movlw b'00111111' movwf CCP1CON movlw b'01111111' movwf T2CONconv0 clrwdt ;borra watch-dog movlw B'10000001' ;81h-->w movwf ADCON0 ;fosc/32<7:6>,adc0<5:3>,go/done<2>,adc on<0> bcf PIR1,ADIF ;borra PIR1adc0 clrwdt ;borra watch-dog btfss INTCON,T0IF ;T0IF indica interrupcion por final ;de temorizacion(overflow) ;intcon<2>=1? goto adc0 ;si.va a conv bcf INTCON,T0IF ;no.borra intcon<2> bsf ADCON0,GO ;adcon0<2>=1 ;GO/DONE=estado de conversion ;GO/DONE=0-->done ;GO/DONE=1-->go ;comienza conversion A/D retraso0 clrwdt ;borra watch-dog btfss PIR1,ADIF ;pir1<6>=1? goto retraso0 ;no.va a retraso bsf STATUS,RP0 ;banco 1 banksel ADRESL ;si.adc_lsb-->w movf ADRESL,w ;adc_lsb-->w bcf STATUS,RP0 movwf PORTD movwf CCPR1Lbucle btfss PIR1,TMR2IF goto bucle clrf PIR1 goto conv0 end
Navegación
Ir a la versión completa