Ir al contenido

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.

  1. Abre guia-interrupciones.asm y pega el bloque Tu archivo hasta ahora (LIST, #include, CONFIG, vectores, stubs ISR, inicio, bucle, END).
  2. Comprueba que existan tres ORG: 0x0000, 0x0008 y 0x0018.
  3. Compila — debe decir BUILD SUCCESSFUL.
  4. El LED aun no parpadea; solo verificamos estructura.
						        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
					
						        ORG     0x0000
        GOTO    inicio

        ORG     0x0008            ; alta prioridad (tambien ORG 08H)
        GOTO    isr_alta

        ORG     0x0018            ; baja prioridad (tambien ORG 18H)
        GOTO    isr_baja
					
  • 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.