'**************************************************************** '* Name : UNTITLED.BAS * '* Author : A.J. * '* Notice : Copyright (c) 2011 www.annegalama.nl * '* : All Rights Reserved * '* Date : 31-12-2011 * '* Version : 1.0 * '* Notes : testprogramma voor interrupt afhandeling * '* : * '**************************************************************** Device 16F628A on_hardware_interrupt GoTo flash Config WDT_OFF, PWRTE_ON, CP_OFF, HS_OSC, LVP_OFF, MCLRE_OFF, BODEN_ON ALL_DIGITAL = TRUE XTAL = 20 PORTA = %00000000 'alle poorten A laag PORTB = %00000000 'alle poorten b laag TRISA = %11110001 'poort A allemaal als ingang, muv PORTA1, A.2 en A3, uitgang TRISB = %00000001 'poort B allemaal als uitgang, muv PORTB.0 Print At 1,1, "ontsteking BSA" Print At 2,1, "Interrupt ver 6" DelayMS 500 Cls Symbol GIE = INTCON.7 'Global Interrupt Enable bit Symbol PEIE = INTCON.6 'peripheral interrupt enable bit Symbol T0IE = INTCON.5 'timer 0 interrupt enable bit Symbol INTE = INTCON.4 'RB0 interrupt enable bit Symbol RBIE = INTCON.3 'RB Port Change Int Enable Bit Symbol T0IF = INTCON.2 'timer 0 overflow flag bit Symbol INTF = INTCON.1 'RB0 interrupt flag Symbol RBIF = INTCON.0 'RB Port Change Flag bit Symbol INTEDG = OPTION_REG.6 'rising/falling edge RBO-int Symbol T0CS = OPTION_REG.5 'timermode timer0 instellen Symbol PSA = OPTION_REG.3 'toewijzen prescaler aan timer0/WDT Symbol PS2 = OPTION_REG.2 'PRESCALER Symbol PS1 = OPTION_REG.1 'PRESCALER Symbol PS0 = OPTION_REG.0 'PRESCALER Symbol TMR1ON = T1CON.0 'timer1 aan/uit bit; aan = 0, uit = 1 Symbol TMR1CS = T1CON.1 'timer1 clock source select, 1 = ext, 0=internal Symbol TMR1IF = PIR1.0 'timer1 int flag Symbol TMR1IE = PIE1.0 'timer1 int enable bit Symbol T1CKPS1 = T1CON.5 Symbol T1CKPS0 = T1CON.4 PORTA.1 = 0 PORTA.2 = 0 GoTo main flash: Context SAVE interrupt_handler: 'welke int is aangemeld If INTF = 1 Then GoTo RB0flag RB0flag: Toggle PORTA.2 INTF = 0 'RB0 interrupt flag cleared by software GoTo interrupt_end interrupt_end: Context Restore main: GIE = 0 'global int uit PEIE = 0 'peripheral int uit INTF = 0 'RG0 int flag cleared by software INTEDG = 1 'RB0 int on rising edge INTE = 1 'RB0 interrupt enable bit, RB0 staat aan RBIE = 0 'RB Port Change Int Enable Bit staat uit T0IE = 0 'timer 0 interrupt enable bit GIE = 1 'Global Interrupt Enable bit, interrupts staan aan While 1=1 Print At 1,1, "versie6" Toggle PORTA.1 DelayMS 100 Wend End