TODOPIC
Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: Androgeno en 23 de Febrero de 2012, 19:31:52
-
Hola:
Primeramente felicitarlos a todos por toda la ayuda que prestan a nosotros los novatos en el tema de programacion de pics.Mi pregunta es la sgte:
Hace ya un tiempo vengo trabajando en un proyecto que consiste en enviar datos numericos, via serial, desde un indicador de peso a un display remoto formado por 4 digitos de 7 segmentos. Utilizo un 16f877a .El codigo es :
Define HSER_RCSTA 90h
Define HSER_TXSTA 24h
Define HSER_BAUD 4800
w var BYTE
x var BYTE
y var BYTE
z var BYTE
TRISB=0
TRISD=0
TRISC.7=1
display:
hserin[wait(96),skip 2, w] 'el indicador me envia la cadena 2*p'xxxxxx000000'
'asi solo tomo los 4 ultimos digitos'
portd=w
high portb.1
pause 5
low portb.1
hserin
portd=x
high portb.2
pause 5
low portb.2
hserin[y]
portd=y
high portb.3
pause 5
low portb.3
hserin[z]
portd=z
high portb.4
pause 5
low portb.4
goto display
End
El codigo funciona , se muestran correctamente los digitos que quiero, pero lo hacen parpadeando. Mi pregunta es como consigo hacer un multiplexado continuo. Ya intente por interrupcion de la USART pero no funciono. De antemano muchisimas gracias. Saludos desde Santa Cruz, Bolivia
-
Si todavía te hace falta, te puedo recomendar un par de cosas:
1ª Hserin normalmente para el programa esperando ha recibir datos por el puerto serie, por lo que no sirve en este caso. Esto sucede en la mayoría de Basic, el problema esta en que yo no utilizo este.
2ª Los Pauses o pausas absolutas no se utilizan, porque mientras estas parado no puedes leer el puerto serie o hacer otra cosa si no utilizas las interrupciones, y si utilizas las interrupciones el tiempo del pause se alarga por lo que no es exacto.
3ª Y ultimo, para realizar este trabajo lo ideal seria utilizar las interrupciones, para leer la Uart e interrupciones de un Timer para controlar la impresión en los display.
-
Muchas gracias dogflu66.Tomare en cuenta tus sugerencias.T comento cualquier avance.
Saludos