TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: migsantiago en 23 de Mayo de 2004, 10:30:00
-
Pues ya he programado varios programitas en MPLAB, pero nunca había conectado mi PIC físicamente para probarlos, sólo los simulaba en MPLAB.
Escribí un programa que hace uso de la EEPROM del PIC16f84a para generar una secuencia de encendido de leds muy al estilo de Kitt el auto increíble (Knight Rider).
Ya lo pasé al PIC y conecté todo el circuito y pues la verdad me gustó como quedó. Sólo se necesita hacer la conexión fija del PIC y conseguir una barra de leds de 8 leds y sus resistencias.
Bueno, les paso el programa y si alguien lo arma y le gusta el circuito le recomiendo que le ponga una fase de potencia a las salidas y le ponga unos leds grandotes y lo acople a su automóvil jejeje. ![Giño Giño]()
------------------
; Leyendo EEPROM genera salida en 8 leds como Kitt
LIST P=16f84a
include "p16f84a.inc"
porta EQU 0x05
portb EQU 0x06
status EQU 0x03
RP0 EQU 5
valor EQU 0x0c
PDel0 EQU 0x0d ;subrutina
PDel1 EQU 0x0e ;subrutina
CONFIG_ADDR EQU 0x0f ;localidad eeprom
ORG 0
goto inicio
ORG 5
;Establece terminales e/s
inicio bsf status,RP0
MOVLW 0x00 ;
MOVWF 0x05 ; TRISA es de salida
MOVLW 0x00
MOVWF 0x06 ; TRISB es de salida
bcf status,RP0
;Inicia programa
regre movlw 0x17 ;carga w con 23decimal
movwf CONFIG_ADDR
decre BCF STATUS, RP0 ; Bank 0
MOVF CONFIG_ADDR,0 ;
MOVWF EEADR ; Address to read
BSF STATUS, RP0 ; Bank 1
BSF EECON1, RD ; carga EEDATA con lo que EEADDR tenga
BCF STATUS, RP0 ; Bank 0
MOVF EEDATA, W ; W = EEDATA
movwf portb
call DEMORA
decfsz CONFIG_ADDR,1
goto decre
goto regre
;-------------------------------------------------------------
; Generado con PDEL ver SP r 1.0 el 10/05/2004 Hs 07:54:14 p.m.
; Descripcion: Delay 125000 ciclos
;-------------------------------------------------------------
DEMORA movlw .124 ; 1 set numero de repeticion (B)
movwf PDel0 ; 1 |
PLoop1 movlw .251 ; 1 set numero de repeticion (A)
movwf PDel1 ; 1 |
PLoop2 clrwdt ; 1 clear watchdog
decfsz PDel1, 1 ; 1 + (1) es el tiempo 0 ? (A)
goto PLoop2 ; 2 no, loop
decfsz PDel0, 1 ; 1 + (1) es el tiempo 0 ? (B)
goto PLoop1 ; 2 no, loop
PDelL1 goto PDelL2 ; 2 ciclos delay
PDelL2 clrwdt ; 1 ciclo delay
return ; 2+2 Fin.
;-------------------------------------------------------------
end
---------------------------------------------------
La información que deben poner en la eeprom es:
--------------
0000: 00 00 00 00 00 00 00 00 ........
0008: 01 02 04 08 10 20 40 80 ..... @€
0010: 80 40 20 10 08 04 02 01 €@ .....
0018: FF FF FF FF FF FF FF FF ÿÿÿÿÿÿÿÿ
0020: FF FF FF FF FF FF FF FF ÿÿÿÿÿÿÿÿ
0028: FF FF FF FF FF FF FF FF ÿÿÿÿÿÿÿÿ
------------------
Ah! y si creen que el tiempo de encendido entre leds es poco o mucho, pueden usar el programa PDEL para modificar la subrutina.
También si llegan a necesitar el archivo HEX para grabar directamente su pic sin compilar lo anterior sólo avísenme y lo subo al foro.
-
Hola pues si pudieses subir el archivo hex al foro te lo agradeceria mucho pk estoy iniciandome en esto de los pic y no se como compilarlo. SI no es pedir mucho podrias subir el esquema del circuito tambien??
Gracias de antemano, saludos
-
Eso no es muy complicado piriots, te dire como lo hago yo, aunque creo que hay otros que lo hacen mas facil ...
Primero tienes que conseguirte el MPLAB,
Segundo abres el MPLAB y le das crear nuevo proyecto, asi como su respectivo nombre (tambien el directorio que vas a usar)
Tercero ... Escribes el programa en ASM (el de arriba) y lo guardas (con extension .asm). Tambien puedes escribir en block de notas el codigo asm y al final lo guardas con (.asm)
Ahora le das en Proyect - Edit proyect - Add nodes
Examinas, Seleccionas el archivo ASM y ya que aparece debajo del (proyecto.hex) solo resta dar OK y luego ... Build All y LISTO, te aparece el .hex junto con otros archivos
-
Claro esta que para practicar la lectura y escritura de la eeprom esta bien ya que para obtener el mismo efecto en las luces se puede usar un codigo mas sencillo y que ocupa minimo espacio de memoria.



-
Ok lo voy a intentar, si me salen dudas o algo ya preguntare.
Gracias y salu2 a to2
-
Bueno piriots ya subí el archivo. Incluye el código Assembler, el programa en archivo hex y un archivo hex que incluye el programa y al mismo tiempo la información que ha de grabarse en la eeprom.
Ah y le puse cristal de 4MHz por si alguien pregunta. 
http://miarroba.com/foros/ver.php?foroid=256746&temaid=1866911
Y sobre el circuito, sólo consigue 8 leds (o una barra de leds para que se vea más bonito), 8 resistencias de 330ohms y conéctalos desde RB0 hasta RB7. Sobre la conexión de cristal y demás cosas checa la imagen:

Los RA0 a RA4 puedes dejarlos desconectados.
-
Muchas gracias!!!!!!, dentro de una setmanica acabo los examenes y lo voy a montar a ver k tal keda.
-
No hay problema.

Cuando lo armes, si es posible sácale una foto y súbela al foro para ver cómo queda.
-
Ya hase un año casi que modifique un programa que hace ese efecto secuencial de luces cuando lo encontr en la red hacia el efecto secuencial con 8 leds en portb pero practicando con el hice que lo hiciera con 12 leds y haciendole pequeñas modificaciones al circuito y al programa se puede implementar con los 13 leds. Si lo quieren busquenlo aqui
http://miarroba.com/foros/ver.php?temaid=1016241&foroid=58549 si no tienen el proteus no importa ya que ahi tambien esta el hex y el asm. suerte
-
Es que soy mu novato y no entiendo mu bien el programa y no se si tengo k conectar el anodo o el catodo en el pic.
Si me puedes resolver la duda me haras un favor.
Salu2
-
Ah pues es fácil...
El ánodo (+) del led va a la terminal (RB) del PIC, el cátodo (-) del led va a una resistencia de 330ohms y la otra terminal de la resistencia va a tierra.
Tienes que hacer esto para cada led y conectarlo en orden: RB0 a RB7.
Checa la patita RB3 de la imagen, así es cómo debes conectar todos los 8 leds:
-
Entendido, haber si los de la tiende d electronica me traen el programador y lo armo, me an dicho k dentro de 15 dias lo tendran....paciencia.
-
Si conecto 2 led en paralelo a cada una de las patillas de RB para hacer dos hileras de 8 led rularia bien??
-
Claro.
Y si necesitaras más de 2 leds, pues sólo agrégale una fase de potencia con algún transistor.
-
Cuidado con las corrientes.
PORTB:
Imax de salida por pin = 20mA
Imax de salida de todo el portb = 100mA
-
Muchas gracias!!! cuando termine todo el proyecto ya pondre fotos de como ha quedado.