TODOPIC
Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: josb86 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
-
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.