• Domingo 29 de Septiembre de 2024, 07:26

Autor Tema:  Codigo Adc Pic18f877  (Leído 2349 veces)

jcjorque

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Codigo Adc Pic18f877
« en: Viernes 20 de Mayo de 2005, 01:07 »
0
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 ©

  • Moderador
  • ******
  • Mensajes: 1671
  • Nacionalidad: ar
    • Ver Perfil
    • http://www.einstec.com.ar
Re: Codigo Adc Pic18f877
« Respuesta #1 en: Lunes 30 de Mayo de 2005, 03:17 »
0
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.  
EINSTEC Tecnología «La única fuente del conocimiento es la experiencia.»

«Lo importante es no dejar de hacerse preguntas.»