Foros de Electrónica

Comunidad de discusión sobre Automatización, Electrónica industrial, Microcontroladores y electrónica digital, Robótica, Domótica, Telemática, Tecnologías móviles, y muchos temas más.




Programa no enciende un display


       



#1  Programa no enciende un display
yukardo
Registrado: 08 Feb 2007
Mensajes: 151
citar
Saludos

Estoy realizando un termometro, abajo coloco el programa

Código: Seleccionar todo
@ DEVICE pic16F876A
' Registro

cmcon=7
TRISB=0
TRISC=0
ADCON1=%10001110

' Variable

temp var word
result var byte
result2 var byte
digt var byte
digt2 var byte

   
 'Definir los parametros del ADCIN
DEFINE  ADC_BITS 10       ' Setear el numero de bits del resultado
Define   ADC_SAMPLEUS 50

' Inicialización de variables

main:
ADCIN 0,temp
temp=temp-2
temp=temp*100
temp=temp*5
temp=temp/1024

if temp>273 then
temp=temp-273
low portA.5
else
temp=273-temp
high portA.5
endif

digt2=temp/10

lookup digt2,[%00111111,%00000110,%01011011,%01001111,%01100110,%01101101,%01111100,%00000111,%01111111,%01100111],result2
portb=result2

digt=temp-(digt2*10)

lookup digt,[%00111111,%00000110,%01011011,%01001111,%01100110,%01101101,%01111100,%00000111,%01111111,%01100111],result
portc=result

goto main


El problema es que no me enciende el primer display, y la verdad no se porq.

Espero me ayuden a conseguir y resolver el error. El programa esta realizado en PicBasic Pro.

Sin mas les doy las gracias de antemano por su ayuda.

#2  Rangos?
Ardogan
Ubicación: Argentina
Registrado: 19 Ago 2006
Mensajes: 471
citar
Por lo que veo leés el conversor AD y prendés un led según el valor leído sea mayor/menor a cierto límite.
Me parece que puede ser el manejo de rangos que hacés con temp...
Temp es un word (16 bits), el cual cargás con la lectura del CAD, le restás 2, lo multiplicás por 100 y después por 5.
Cuidado con esas multiplicaciones, no sé cual es el valor máximo que te da la lectura del CAD, pero al multiplicar por 100 y después por 5, o sea al multiplicar por 500 estás eliminando los bits de mayor orden (son 10 bits de la lectura del CAD, desplazados casi 9 a la izquierda por esa multiplicación, el resultado cabría en 19 bits pero el registro tiene 16-> se pierden los 3 bits de mayor peso) si es que usás solo el registro temp para hacer las cuentas.
Después dividís por 1024 pero esos bits perdidos no se recuperan.
No usé el basic para programar pic's, pero me imagino que podrás declarar una variable word-doble y guardar el resultado de la multiplicación ahí.
Pero viendo eso, te diría que trates de hacer la cuenta en menos pasos, en vez de multiplicar por 100 luego por 5 y después dividir por 1024, trata de multiplicar/dividir por un solo numero.
Así vas a tener un tamaño de código 3 veces menor y esa parte se ejecuta 3 veces más rápido.

Más aún, esa cuenta es muuuuy cercano a dividir por 2, dividir por dos se puede hacer desplazando a la izquierda 1 vez, y listo. Por ahí tenes que cambiar el valor de comparación de temp (el 273 tal vez se convierta en 274) y nada más.

Bueno, todo depende de que rango de numeros leas en el CAD, si los 3 bits más significativos siempre están a 0 no es lo que yo digo, pero sino puede serlo.

Saludos

 Responder



 Otros temas de interés 
No hay mensajes nuevos motor con resolver
No hay mensajes nuevos Amplificador para Bajo
No hay mensajes nuevos Resolver practica con lcd en pic16f84
No hay mensajes nuevos Necesito resolver un temporizador, no se que mas hacer
No hay mensajes nuevos Una duda que no consigo resolver....

Foros de Electronica
|| Cuestiones Elementales de Electrónica || Fuentes de alimentacion || Circuitos de radio || Diseño de circuitos en general ||
|| Sistemas de Audio: Preamplificadores, Ecualizadores || Amplificadores || Reparación || Discusión ||
|| Microcontroladores y sistemas embebidos || Circuitos logicos combinacionales y secuenciales || Interfaces y Programacion || Dudas en general || Sistemas de Video || PC Hardware || Telematica y comunicaciones || Tecnologias moviles || Software Electronico || Robotica, Domotica y Mecatronica || Autotrónica || Automatizacion, Electronica industrial y de Potencia || Documentacion, circuitos y esquemas || Donde Las Ideas Convergen... || Tutoriales y Manuales || Proyectos Prácticos ||
Contacto | Acerca de | Ayuda | Normas de la Comunidad | Privacidad | Mapa de los foros
© Foros de Electrónica - Comunidad Internacional de Electrónicos