//-------------------------------------------------------------------------------------- // Programm für die Ansteuerung des Controller-Bord zur Frequenzgeneration ---------- //-------------------------------------------------------------------------------------- // Definitionen ------------------------------------------------------------------------ // Libraries ----------------------------------------------------------------- #include <18F252.h> #include #include #include #define LOADER_ISR 0x28 #build(interrupt=LOADER_ISR) #org 0x08,0x17 void high_isr(void) { #ASM goto LOADER_ISR #ENDASM } #FUSES HS,NOPROTECT,NOWDT,NOLVP // PIC 18F252 #use delay (clock=20000000) // PIC 18F252 #use rs232(baud=2400,xmit=TX, rcv=RX, bits=8, parity=n, stream=HOST) // Interrupt Handler void LOADER_ISRI() { // Timer1 Interrupt - Freq = 3.81 Hz - Period = 0.262144 seconds if (TMR1IF == 1) // timer 1 interrupt flag { //PORTB.F1 = ~PORTB.F1; // Toggle PORTB bit1 LED TMR1IF = 0; // interrupt must be cleared by software TMR1IE = 1; // reenable the interrupt TMR1H = 0; // preset for timer1 MSB register TMR1L = 0; // preset for timer1 LSB register } } // code starts here... void main() { // setup portb to show the interrupts by blibking LEDs TRISB = 0x00; // PORT is all output...to show the interrupts PORTB = 0; // start with all outputs low //Timer1 Registers Prescaler= 8 - TMR1 Preset = 0 - Freq = 3.81 Hz - Period = 0.262144 seconds T1CKPS1 = 1; // bits 5-4 Prescaler Rate Select bits T1CKPS0 = 1; // bit 4 T1OSCEN = 1; // bit 3 Timer1 Oscillator Enable Control bit 1 = on T1SYNC = 1; // bit 2 Timer1 External Clock Input Synchronization Control bit...1 = Do not synchronize external clock input TMR1CS = 0; // bit 1 Timer1 Clock Source Select bit...0 = Internal clock (FOSC/4) TMR1ON = 1; // bit 0 enables timer TMR1H = 0; // preset for timer1 MSB register TMR1L = 0; // preset for timer1 LSB register // Interrupt Registers INTCON = 0; // clear the interrpt control register TMR0IE = 0; // bit5 TMR0 Overflow Interrupt Enable bit...0 = Disables the TMR0 interrupt TMR1IF = 0; // clear timer1 interupt flag TMR1IF TMR1IE = 1; // enable Timer1 interrupts TMR0IF = 0; // bit2 clear timer 0 interrupt flag GIE = 1; // bit7 global interrupt enable PEIE = 1; // bit6 Peripheral Interrupt Enable bit...1 = Enables all unmasked peripheral interrupts while(1) //endless loop { } }