TODOPIC
Microcontroladores PIC => Almacén del Assembler => Mensaje iniciado 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
-
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
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
-
Gracias por el programa JHOZATE. :P
ahora solo me falta hacer que flashen 2 beses por segundo o menos
-
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??
-
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
-
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
-
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
-
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.
-
dame un momento lo edito y lo vuelvo a poner
-
revisa este, si quieres q parpadeen mas rapido pss es solo modificar la rutina de tiempo
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
-
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
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?
-
: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
-
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
-
: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
-
jajaja yo lo explique desde el bit 1 para no confundirlos y resulto contraproducente :D
-
:D ojo con eso, "el bit uno, es el bit uno"
-
Gracias por el programa :P ya programe el pic y arme el circuito y si funsiono...
-
seria bueno q postearas el circuito q vas a armar o algo tentativo..
-
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,
-
voy hacer el diagrama y le voy a tomar fotos al circuito y yo lo posteo.
-
AKI LES DEJO EL VIDEO DEL CIRCUITO
-
:D :D :D :-/ :-/ :-/ quedo "reaspero" felicitaciones Hector
-
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 :)
-
podes postear el esquematico?
-
No veo el video, soy yo solo? o hay mas que no lo ven?
Al final funciono todo bien?
saludos tapi8
-
si el video acabo de verlo de nuevo...la verdad es bastane bistoso..saludos
-
(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
-
dondes esta??? no salieron la imagenes
-
Te ha quedado muy lindo :-/ :-/
-
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)
-
en protoboard
ya montado