Programma di prova del dispositivo PIC
Introduzione al dispositivo
Viene presentata una configurazione composta da un dispositivo M68000, un bus/memoria, un PIC e un generatore di interruzione/timer 1TO4INTGEN. Il PIC genera interruzioni con vettore posizionato all'indirizzo base $40=64 a cui si somma uno spiazzamento di valore 1-8 a seconda delle linee di interruzione interrompenti.
Configurazione dei dispositivi
NAME Prova PIC ;tale direttiva non è allo stato supportata dall'assemblatore
- ter EQU $2000 indirizzo base associato al dispositivo TERMINAL
- terintg1 EQU $2004 indirizzo base associato al primo dispositivo 1TO4INTGEN
- pic EQU $202C indirizzo base associato al dispositivo PIC
Area programmi
ORG $A000
begin
Codice di inizializzazione
Codice di inizializzazione degli indirizzi base dei 4 device utilizzati:
- MOVEA.W #pic,A0 memorizza la base degli indirizzi dei device utilizzati
- MOVEA.W #intg1,A1 nei registri A0, A1, A3
- MOVEA.W #ter,A3
- MOVE.B #$40,1(A0) inserisce nel registro TR del PIC il vector number 64
- MOVE.B #%00111100,1(A3) inizializza il terminale: abil. eco e tastiera, pulisci buffer, canc video e disab. interrupt
- MOVE.B #$10,(A0) set in PIC AEOI=1 per il reset automatico del bit di isr dopo la trasmissione dell'interruzione
- MOVE.B #$00,1(A0) setta il registro IMR del PIC abilitando tutte le interruzioni
Inizializzazione sistema
Inizializzazione sistema:
- MOVE.L #$9000,A7 inizializza stack supervisor
- MOVE.W SR,D0 legge il registro di stato
- ANDI.W #$D8FF,D0 maschera per reg stato (stato utente, int abilitati)
- MOVE.W D0,SR pone liv int a 000
- MOVE.L #$9500,A7 inizializza stack utente
Inizializzazione registri timer 1
Inizializzazione registri timer 1:
- MOVE.B #$11,4(A1) inizializza pr=2; linea=1