; Set TIMER 1 come generatore di frequenza variabile tra 250KHz e 3Hz ( per 68HC908GP32 ) ; Le variabili FOUTH ed FOUTL devono contenere un valore iniziale a piacere ; Nell'esempio la frequenza è pre-impostata a 10 Hz ; Il segnale è disponibile sul pin 21 ( Versione S-DIL 42 pin ) ; Con valori elevati di Fout la risoluzione di 4uS può non essere sufficente ; La variabile IESP contiene un valore da 1 a 7 e per i valori 5, 6, 7 innesca un cambio di scala $include 'gp32regs.inc' FOUTH EQU $70 ;FREQUENZA DI USCITA BYTE H FOUTL EQU $71 ;FREQUENZA DI USCITA BYTE L IESP EQU $72 MOV #$C3,FOUTH ;SET FREQ. OUT 10Hz 100mS MOV #$50,FOUTL * SET FREQ. OUT TIMER 1 1 TIC = 2uS MOV #%00110100,T1SC ;STOP + CLEAR MOV FOUTH,T1MODH ;SET BASE FREQ. OUT ( PRESET 100mS=10Hz ) MOV FOUTL,T1MODL MOV #%00011010,T1SC0 ;T1-C0 OUT CMP, TOV ON, OFF SU COMPARE MOV #$61,T1CH0H ; DUTY CYCLE 50% (BASE FREQ. /2) MOV #$A8,T1CH0L MOV #%00000011,T1SC ;PRESCALER /8 START TIMER1, no INT MAIN ; Determinare la frequenza da generare aggiornando i valori di FOUTH, FOUTL ; Determinare IESP JSR OUTFREQ BRA MAIN ************************************ * SUBROUTINE OUT FREQUENCY * ************************************ OUTFREQ MOV #%00110011,T1SC ;STOP + CLEAR MOV FOUTH,T1MODH ;SET BASE FREQ. OUT MOV FOUTL,T1MODL MOV #%00011010,T1SC0 ;T1-C0 OUT CMP, TOV ON, OFF SU COMPARE LDA FOUTL ;DUTY CYCLE 50% LDX FOUTH LSRX RORA STA T1CH0L STX T1CH0H LDA IESP CMP #$05 BLO OUTFHIGH MOV #%00000011,T1SC ;PRESCALER /8 START TIMER1, no INT, tic=2uS RTS OUTFHIGH MOV #%00000000,T1SC ;PRESCALER /1 START TIMER1, no INT, tic=0.25uS RTS