SoloCodigo

Programación Específica => Microcontroladores => Mensaje iniciado por: jcjorque en Viernes 20 de Mayo de 2005, 01:07

Título: Codigo Adc Pic18f877
Publicado por: jcjorque en Viernes 20 de Mayo de 2005, 01:07
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.
Título: Re: Codigo Adc Pic18f877
Publicado por: © Jonathan © en Lunes 30 de Mayo de 2005, 03:17
HOla, Aqui te paso un codigo verificado. Saludos :)

Código: Text
  1.  
  2. ;*****************************************************
  3. ;lee un valor analogico por el AN0
  4. ;y escribe el resultado binario por el puerto D
  5. ;
  6. ;*****************************************************
  7.  
  8.   List  p=16F877a  &#59;procesador
  9.   #include  <P16F877a.INC>&#59;registros internos  
  10.   org    0x000  &#59;vector reset
  11.   goto  inicio  &#59;va a inicio
  12.   nop
  13.   org    0x005  &#59;vector interrupcion
  14. inicio
  15.   clrwdt      &#59;borra watch-dog
  16.   bcf    STATUS,RP1    
  17.   bsf    STATUS,RP0 &#59;banco 1          
  18.   movlw  B'11111111'  
  19.   movwf  TRISB    
  20.   movlw  b'00000000'
  21.   movwf  TRISD
  22.   movwf  TRISC  &#59;portc salida  
  23.   movwf  PIE2
  24.   movlw  b'00000010'
  25.   movwf  PIE1  &#59;cambiar bit 6
  26.   movlw  b'00000111'&#59;prescaler TMR0 1:256
  27.   movwf  OPTION_REG
  28.   movwf  b'00100000'&#59;habilitada intrr TMR0
  29.   movwf  INTCON
  30.   movlw  b'11111111'
  31.   movwf  PR2
  32.   movlw  B'10000000'  
  33.   movwf  ADCON1  &#59;justificacion<7>,conf port<3:0>
  34.           &#59;se activan todos los ADC,vref+=RA<3>,vref-=vss          
  35.   bcf    STATUS,RP0&#59;banco 0
  36.   movlw  b'00101101'
  37.   movwf  CCPR1L
  38.   movlw  b'00111111'
  39.   movwf  CCP1CON
  40.   movlw  b'01111111'
  41.   movwf  T2CON
  42. conv0
  43.   clrwdt        &#59;borra watch-dog
  44.   movlw  B'10000001'     &#59;81h-->w
  45.   movwf  ADCON0         &#59;fosc/32<7:6>,adc0<5:3>,go/done<2>,adc on<0>
  46.   bcf    PIR1,ADIF  &#59;borra PIR1
  47. adc0
  48.    clrwdt        &#59;borra watch-dog
  49.   btfss  INTCON,T0IF    &#59;T0IF indica interrupcion por final
  50.             &#59;de temorizacion(overflow)
  51.             &#59;intcon<2>=1?
  52.   goto  adc0           &#59;si.va a conv
  53.   bcf    INTCON,T0IF    &#59;no.borra intcon<2>
  54.   bsf    ADCON0,GO     &#59;adcon0<2>=1
  55.             &#59;GO/DONE=estado de conversion
  56.             &#59;GO/DONE=0-->done
  57.             &#59;GO/DONE=1-->go
  58.             &#59;comienza conversion A/D                  
  59. retraso0
  60.   clrwdt        &#59;borra watch-dog
  61.   btfss  PIR1,ADIF  &#59;pir1<6>=1?
  62.   goto   retraso0       &#59;no.va a retraso
  63.   bsf    STATUS,RP0  &#59;banco 1                  
  64.   banksel ADRESL         &#59;si.adc_lsb-->w
  65.   movf    ADRESL,w       &#59;adc_lsb-->w
  66.   bcf    STATUS,RP0
  67.     movwf  PORTD
  68.     movwf  CCPR1L
  69. bucle
  70.   btfss  PIR1,TMR2IF
  71.   goto  bucle
  72.   clrf  PIR1
  73.   goto conv0
  74.   end
  75.  
  76.