Autor Tema: 4 puertos analogos a 16f877 con MicrocodeStudio  (Leído 2804 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado josb86

  • PIC10
  • *
  • Mensajes: 12
4 puertos analogos a 16f877 con MicrocodeStudio
« en: 09 de Noviembre de 2008, 20:00:06 »
Buenas soy nuevo en el foro y necesito ayuda con un programa para programación de pics que parece que han utilizado bastante aquí, es el MicroCodeStudio. Estoy haciendo un programa que lea 4 puertos análogos de un 16f877 donde estas conectados unos lm35 y mandar los resultados a un lcd. He logrado conectar dos sensores y el lcd pero cuando trato de conectar otro sensor  el lcd no prende ni muestra nada no se que pasa les agradecería su ayuda. Aquí les diejo el programa para ver en que me pueden ayudar:
La verdad se encuentra muy poca info sobre este programa entonces he aprendido tomando parte de los ejemplos que trae al instalarlo. como hago para conectar 2 sensores mas a otras patas del puerto A?


' PicBasic Pro program to display result of
' 8-bit A/D conversion on LCD
' Connect analog input to channel-0 (RA0)
' Define LCD registers and bits
Define   LCD_DREG   PORTD
Define   LCD_DBIT   4
Define   LCD_RSREG   PORTE
Define   LCD_RSBIT   0
Define   LCD_EREG   PORTE
Define   LCD_EBIT   1

' Define ADCIN parameters
Define   ADC_BITS      8   ' Set number of bits in result
Define   ADC_CLOCK      3   ' Set clock source (3=rc)
Define   ADC_SAMPLEUS  50   ' Set sampling time in uS

   adval1   var   word          ' Create adval to store result
   adval2   var   word
   adval3   var word
   adval4   var word
   temp1   var   word
   temp2   var   word
   temp3    var word
   temp4    var word
   prom     var word
   
   TRISA = 255   ' Set PORTA to all input   %11111111
   ADCON1 = %00000010    ' Set PORTA analog  %00000010
   ADCON1 = %00000100

   
   Low PORTE.2          ' LCD R/W line low (W)
   Pause 500          ' Wait .5 second

' inicio del sistema

   LCDOUT $fe, 1
   LCDOUT "inicio del"
   LCDOUT $FE, $C0
   LCDOUT "sistema"
   PAUSE  600
   LCDOUT $fe, 1
   LCDOUT "Hola Jose"
   PAUSE  1200
   LCDOUT $fe, 1


   
loop:


   
   adcin 0, adval1              ' Read channel 0 to adval
   temp1 = (adval1 * 2)
   ADCIn 1, adval2
   temp2 = (adval2 * 2)
   ADCIn 2, adval2
   temp3 = (adval3 * 2)
   ADCIn 3, adval2
   temp4 = (adval4 * 2)
   
   Prom =  (temp1+temp2+temp3+temp4)/4
   
   Lcdout $fe, 1              ' Clear LCD

   lcdout "T1:", DEC temp1
   LCDOUT "C"
   'lcdout $FE, $14
   lcdout "T2:", dec temp2
   lcdout "C"
   lcdout $FE, $C0
   lcdout "T3:", DEC temp3
   LCDOUT "C"
   'lcdout $FE, $14
   lcdout "T4:", dec temp4
   lcdout "C"
   'lcdout $FE, $C0
   lcdout "Pr:", dec prom
   pause 100
   goto loop
   
   End




Desconectado navaismo

  • Jubilado Todopic
  • PIC24H
  • ****
  • Mensajes: 1973
Re: 4 puertos analogos a 16f877 con MicrocodeStudio
« Respuesta #1 en: 09 de Noviembre de 2008, 20:22:45 »
En esta lineas:
   ADCON1 = %00000010    ' Set PORTA analog  %00000010
   ADCON1 = %00000100

El pic termina tomando el valor del segundo ADCON con lo que le estas diciendo que tu PIC tenga 3 conversores analogos en RA0,RA1 y RA3 los demas son digitales ademas de que la resolucion es de 8bits.

Para que tengas 4 AD's y que sean de 8bits ADCON debe tomar el valor %00000010 como lo tenias en la primer linea asi todo tu PORTA es analogico y el PORTE es digital.

Lo del LCD trata de mostrar en una sola linea los valores es decir:
LCDOUT $FE,1,"t1",dec temp1," t2",dec temp2.....
LCDOUT $FE,$C0,"t3",dec temp3,........

Y si hay muchisima informacion sobre el PBP en la red incluso manuales traducidos y cientos de ejemplos para empezar una muestra este subforo. Tambien en google encontraras mucha informacion de adc,pbp y pics; pero aqui lo tienes todo.

Saludos.
"Mi tercer deseo, que otra cosa podría ser, poner un final a todo el sufrimiento, que sólo con mi propia extinción el planeta podrá ser aliviado. Pobre de mí, Si tuviera tres deseos hoy, la elección no sería dificil para mí, Sólo tres deseos serían suficientes, No tendría uso para más."

"He sido un hombre que busca y aun lo sigo siendo, pero ya no busco en las estrellas y en los libros, sino en las enseñanzas de mi sangre."