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.
------------------
; 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.