TODOPIC

Microcontroladores PIC => Almacén del Assembler => Mensaje iniciado por: Hector_c89 en 25 de Marzo de 2009, 20:54:08

Título: ayuda con un programa
Publicado por: Hector_c89 en 25 de Marzo de 2009, 20:54:08
hola, el motivo de mi peticion es solamente para preguntar si alguien tendra el programa que imita las funsiones
de las torretas de led´s de las unidades de emergencia, es desir, RB1 y RB2 flashean 2 veses por segundo o un poco antes, se apagan y le toca el turno a RB3 y RB4 de flashear 2 veses por segundo.

en este proyecto utilizare el pic16f84-A
con oscilador de cuarzo de 4 mhz.

El motivo de mi peticion es para intentar crear una barra de led´s que sirban de precaucion en la parte de atras de el camion de bomberos que manejo en mi trabajo y evitar algun percance.

ya se utilizar el programa MPLAB Y IC-PROG
solo me falta conseguir el programa espero me ayuden ya que aun soy nobato en esto de los pic´s





Título: Re: ayuda con un programa
Publicado por: jhozate en 26 de Marzo de 2009, 01:38:26
si te quieres iniciar en la programacion pasate por aqui (http://www.todopic.com.ar/foros/index.php?topic=23623.0),  para empezar esta bien...respecto al programa de pronto este hace lo q tu quieres

Código: [Seleccionar]

LIST P=16F84A
#INCLUDE "P16F84A.INC"

CBLOCK 0X0C
PDel0
PDel1
ENDC

ORG 0
GOTO INICIO

INICIO BSF STATUS,5
           CLRF PORTB
           CLRF PORTA
           BCF STATUS,5
         
           CLRF PORTB

BUCLE  MOVLW B'00000011'
           MOVWF PORTB
           CALL DEMORA ;retardo de 500mS
           CLRF PORTB
           CALL DEMORA
   MOVLW B'00000011'
           MOVWF PORTB
           CALL DEMORA
           CLRF PORTB
   CALL DEMORA

           MOVLW B'00001100'
           MOVWF PORTB
           CALL DEMORA
           CLRF PORTB
           CALL DEMORA
   MOVLW B'00001100'
           MOVWF PORTB
           CALL DEMORA
           CLRF PORTB
           CALL DEMORA
           GOTO BUCLE

;**********RUTINA DE RETARDO***********
DEMORA    movlw     .239     
                 movwf     PDel0   
PLoop1      movlw     .232     
                 movwf     PDel1   
PLoop2      clrwdt             
PDelL1      goto PDelL2         
PDelL2      goto PDelL3         
PDelL3      clrwdt             
                decfsz    PDel1, 1
                goto      PLoop2   
                decfsz    PDel0,  1
                goto      PLoop1   
PDelL4      goto PDelL5         
PDelL5      goto PDelL6         
PDelL6      goto PDelL7         
PDelL7      clrwdt             
        return   

END
Título: Re: ayuda con un programa
Publicado por: Hector_c89 en 27 de Marzo de 2009, 16:26:30
Gracias por el programa JHOZATE.  :P

ahora solo me falta hacer que flashen 2 beses por segundo o menos
Título: Re: ayuda con un programa
Publicado por: jhozate en 27 de Marzo de 2009, 18:41:30
pss haber este programa lo q hace es prender el bit 1 y 2 de puertob, se mantienen encendidos por medio segundo, se apagan, y luego se vuelven a prender por medio segundo y luego hace lo mismo con los bit 3 y 4 de puertob,,,no se si entendi mal lo q pretendias con el programa??
Título: Re: ayuda con un programa
Publicado por: tapi8 en 28 de Marzo de 2009, 06:06:53
Jhozate creo que si las luces son  potentes y su consumo alto en vez de hacer dos BSF consecutivos seria mejor hacer.
MOVLW   00000011
MOVWF   PORTB
O por lo menos meterle intercalados tres NOP entre los BSF. Y para el tres y cuatro igual. La serie 16f no tiene latchs en los puertos y no seria raro que como lo pones tu encendiera las luces como a el le pareciera.

saludos tapi8
Título: Re: ayuda con un programa
Publicado por: tapi8 en 28 de Marzo de 2009, 06:51:03
Se me olvidaba. supongo, aunque no lo especifica, que no estaran siempre funcionando sino que funcionaran cuando el quiera, seria bueno pnerle un pulsador, interruptor, para que el desde la cabina pueda ponerlo a funcionar cuando lo crea conveniente.


saludos tapi8
Título: Re: ayuda con un programa
Publicado por: jhozate en 28 de Marzo de 2009, 10:40:47
Jhozate creo que si las luces son  potentes y su consumo alto en vez de hacer dos BSF consecutivos seria mejor hacer.
MOVLW   00000011
MOVWF   PORTB
O por lo menos meterle intercalados tres NOP entre los BSF. Y para el tres y cuatro igual. La serie 16f no tiene latchs en los puertos y no seria raro que como lo pones tu encendiera las luces como a el le pareciera.

saludos tapi8

sera q sil las luces son potentes se puede visualizar q primero prende uno y luego otro? por q son instrucciones de microsegundos...en todos caso si,,mejor hacerlo como dices tu.

 cuando se fabrique la pcb puede ponerle el interruptor en la alimentacion del pic.

saludos
Título: Re: ayuda con un programa
Publicado por: Hector_c89 en 28 de Marzo de 2009, 13:48:34
exacto la funcion ke me especificas jhozate, pero me resulto un problema con el programa porque se activa el bit 1 y 2, se apagan y despues se activa bit 3 y 4 no hace la funcion de prender 2 veses el bit 1 y 2 y despues el 3 y 4. ya lo comprobe programando y armando el circuito.

a de tener algun pekeño error el programa.


ya me puse a verificar el programa para ver cual es el error pero como aun estoy aprendiendo me va a resultar algo dificil.



Título: Re: ayuda con un programa
Publicado por: jhozate en 28 de Marzo de 2009, 13:51:03
dame un momento lo edito y lo vuelvo a poner
Título: Re: ayuda con un programa
Publicado por: jhozate en 28 de Marzo de 2009, 14:07:51
revisa este, si quieres q parpadeen mas rapido pss es solo modificar la rutina de tiempo
Código: [Seleccionar]

LIST P=16F84A
#INCLUDE "P16F84A.INC"

CBLOCK 0X0C
PDel0
PDel1
ENDC

ORG 0
GOTO INICIO

INICIO BSF STATUS,5
           CLRF PORTB
           CLRF PORTA
           BCF STATUS,5
         
           CLRF PORTB

BUCLE  MOVLW B'00000011'
           MOVWF PORTB
           CALL DEMORA ;retardo de 500mS
           CLRF PORTB
           CALL DEMORA
   MOVLW B'00000011'
           MOVWF PORTB
           CALL DEMORA
           CLRF PORTB
   CALL DEMORA

           MOVLW B'00001100'
           MOVWF PORTB
           CALL DEMORA
           CLRF PORTB
           CALL DEMORA
   MOVLW B'00001100'
           MOVWF PORTB

           CALL DEMORA
           CLRF PORTB
           CALL DEMORA
           GOTO BUCLE

;**********RUTINA DE RETARDO***********
DEMORA    movlw     .239     
                 movwf     PDel0   
PLoop1      movlw     .232     
                 movwf     PDel1   
PLoop2      clrwdt             
PDelL1      goto PDelL2         
PDelL2      goto PDelL3         
PDelL3      clrwdt             
                decfsz    PDel1, 1
                goto      PLoop2   
                decfsz    PDel0,  1
                goto      PLoop1   
PDelL4      goto PDelL5         
PDelL5      goto PDelL6         
PDelL6      goto PDelL7         
PDelL7      clrwdt             
        return   

END
Título: Re: ayuda con un programa
Publicado por: jhozate en 28 de Marzo de 2009, 14:25:54
bueno si entra por aqui alguien mas entendido en asm, quisiera despejar una duda por q me paso algo raro cuando editaba el programa

resulta q tenía el siguiente codigo
Código: [Seleccionar]
MOVLW B'00000110'
MOVWF PORTB
CALL DEMORA
CLRF PORTB
CALL DEMORA
MOVWF PORTB ;  en este línea, en simulacion me mostraba otro numero? por que? se supone q w venia cargado con w=00000110,
CALL DEMORA
.
.
.

para solucionarlo me toco volver a poner la instruccion MOVLW B'00000110', sera q en la vida real pasará lo mismo,, o sera un bug?
Título: Re: ayuda con un programa
Publicado por: Hector_c89 en 28 de Marzo de 2009, 15:09:49
 :P gracias por la correccion jhozate
mañana queco el programa y armo el circuito para checar su funcionamiento.

ahorita no puedo ya me encuentro en el trabajo y salgo asta mañana.

un saludo desde proteccion civil
Título: Re: ayuda con un programa
Publicado por: tapi8 en 28 de Marzo de 2009, 17:44:14
jhozate tal y como lo tienes en el segundo post no te puede funcionar, viene de hacer la demora y por tanto de hacer operaciones aritmeticas (DECFSZ) estas operaciones las hace en W (registro de la ALU) asi que al retornar de la demora sabe dios lo que tiene ahi, tienes que volver a mover el dato a W,
MOVLW   0b00000110 
MOVWF   PORTB,
Ota cosa, yo creo que hector cuando dice en bit 1 y 2, realmente se refiere a bits 0 y 1 porque ya ha dicho que no sabia programar, y los que no saben programar empiezan a contar desde 1 y no desde 0. Esto es intuicion.
En la etiqueta en vez de "A" llamale BUCLE, MAIN o HECTOR, de esto no estoy seguro pero nunca vi una etiqueta con una letra solo, y por si acaso.

saludos tapi8
Título: Re: ayuda con un programa
Publicado por: jhozate en 28 de Marzo de 2009, 23:53:36
 :shock: :D :D :D claro como se me paso eso? despues de la rutina de tiempo w debe retornar con algun dato, bueno yo hice el programa tal como dijo hector con los bit 1 al 4..pero si funciona al menos en simulacion , de todas manera voy a corregirlo

saludos
Título: Re: ayuda con un programa
Publicado por: Hector_c89 en 29 de Marzo de 2009, 00:15:37
jajaja yo lo explique desde el bit 1 para no confundirlos y resulto contraproducente  :D
Título: Re: ayuda con un programa
Publicado por: jhozate en 29 de Marzo de 2009, 00:37:55
 :D ojo con eso, "el bit uno, es el bit uno"
Título: Re: ayuda con un programa
Publicado por: Hector_c89 en 29 de Marzo de 2009, 11:21:50
Gracias por el programa  :P ya programe el pic y arme el circuito y si funsiono...
Título: Re: ayuda con un programa
Publicado por: jhozate en 29 de Marzo de 2009, 13:04:50
seria bueno q postearas el circuito q vas a armar o algo tentativo..
Título: Re: ayuda con un programa
Publicado por: jhozate en 29 de Marzo de 2009, 13:19:29
este (http://www.4shared.com/file/84847894/2ae88f2f/circuitos_entradasalida.html) es un buen pdf para circuitos de entrada y salida q incluyen pic's a lo mejor te sirve mucho, tambien esta aqui en el foro pero no recuerdo donde, es un compilado de circuitos q postearon los grandes del foro,
Título: Re: ayuda con un programa
Publicado por: Hector_c89 en 29 de Marzo de 2009, 15:13:52
voy hacer el diagrama y le voy a tomar fotos al circuito y yo lo posteo.
Título: Re: ayuda con un programa
Publicado por: Hector_c89 en 01 de Abril de 2009, 12:28:36
AKI LES DEJO EL VIDEO DEL CIRCUITO

Título: Re: ayuda con un programa
Publicado por: jhozate en 01 de Abril de 2009, 12:52:56
 :D :D :D :-/ :-/ :-/ quedo "reaspero" felicitaciones Hector
Título: Re: ayuda con un programa
Publicado por: Hector_c89 en 02 de Abril de 2009, 23:52:56
a la programacion le agregue otras funciones para cambiar el parpadeo de los leds.

con unos transistores en las salidas para conectar varios leds.

Gracias por la ayuda  :)
Título: Re: ayuda con un programa
Publicado por: jhozate en 02 de Abril de 2009, 23:57:34
podes postear el esquematico?
Título: Re: ayuda con un programa
Publicado por: tapi8 en 03 de Abril de 2009, 06:07:03
No veo el video, soy yo solo? o hay mas que no lo ven?
Al final funciono todo bien?

saludos tapi8
Título: Re: ayuda con un programa
Publicado por: jhozate en 03 de Abril de 2009, 09:38:23
si el video acabo de verlo de nuevo...la verdad es bastane bistoso..saludos
Título: Re: ayuda con un programa
Publicado por: Hector_c89 en 03 de Abril de 2009, 19:15:59
(http://fb.esnips.com/doc/57e6e320-eee3-4352-970f-c214df1a7ceb/pic6_11a)
este es el circuito del pic
(http://fb.esnips.com/doc/61c2c125-4a7c-45a2-9bd9-7f94c67947a5/transistor)
y en este se muestra el transistor 2n2222a el cual se conecta a cualquier salida del pic para poder encender 4 leds por salida
solo ai que sacar los valores de las resistencias
Título: Re: ayuda con un programa
Publicado por: jhozate en 03 de Abril de 2009, 20:10:28
dondes esta??? no salieron la imagenes
Título: Re: ayuda con un programa
Publicado por: Leon Pic en 03 de Abril de 2009, 22:26:57
Te ha quedado muy lindo  :-/ :-/
Título: Re: ayuda con un programa
Publicado por: Hector_c89 en 05 de Abril de 2009, 14:29:56
este es el diagrama del circuito  :-/


(http://docthumb0.esnips.com/imageable/medium/57e6e320-eee3-4352-970f-c214df1a7ceb/?du=8726f054-b92f-1029-8a96-0017a4493db2&uu=2b0cc441-9c09-4661-aed5-091b021d2baf&dt=1238796266000&fu=e7de0e96-0c49-4f32-b12b-7b2bb6dfc9f6)


(http://www.esnips.com/nsdoc/61c2c125-4a7c-45a2-9bd9-7f94c67947a5)
Título: Re: ayuda con un programa
Publicado por: Hector_c89 en 05 de Abril de 2009, 15:30:44
en protoboard


ya montado