Paso 3 de 11
LIST, CONFIG y vectores de interrupcion
Objetivo
Escribir la base del archivo: CONFIG, reset en 0x0000 y vectores en 0x0008 (08H) y 0x0018 (18H).
Los vectores son direcciones fijas donde el PIC salta al ocurrir una interrupcion. Van arriba del archivo, despues de CONFIG — igual que el reset en ORG 0x0000.
Por ahora isr_alta e isr_baja solo tienen RETFIE (retornan sin hacer nada). En pasos siguientes llenamos isr_alta con Timer0.
Sigue estos pasos
- Abre
guia-interrupciones.asmy pega el bloque Tu archivo hasta ahora (LIST, #include, CONFIG, vectores, stubs ISR, inicio, bucle, END). - Comprueba que existan tres
ORG:0x0000,0x0008y0x0018. - Compila — debe decir BUILD SUCCESSFUL.
- El LED aun no parpadea; solo verificamos estructura.
Tu archivo hasta ahora
LIST P=18F4550
#include <P18F4550.INC>
CONFIG FOSC = HS
CONFIG WDT = OFF
CONFIG LVP = OFF
CONFIG PBADEN = OFF
ORG 0x0000
GOTO inicio
ORG 0x0008 ; vector alta (tambien ORG 08H)
GOTO isr_alta
ORG 0x0018 ; vector baja (tambien ORG 18H)
GOTO isr_baja
; --- variables en RAM ---
CBLOCK 0x20
temp_w
temp_status
ENDC
; --- subrutinas ---
init_gpio:
RETURN
init_timer0:
RETURN
isr_alta:
RETFIE
isr_baja:
RETFIE
; --- programa principal ---
inicio:
CALL init_gpio
CALL init_timer0
bucle:
GOTO bucle
END
Lo que agregas en este paso
ORG 0x0000
GOTO inicio
ORG 0x0008 ; alta prioridad (tambien ORG 08H)
GOTO isr_alta
ORG 0x0018 ; baja prioridad (tambien ORG 18H)
GOTO isr_baja
Lista antes de continuar
- Tengo ORG 0x0000, 0x0008 y 0x0018 con GOTO a sus etiquetas.
- Existe `isr_alta` e `isr_baja` con al menos RETFIE.
- Compila sin errores.
Consejo: `ORG 08H` y `ORG 0x0008` son la misma direccion — el curso usa ambas notaciones.