#include "sfr_r813.h" #pragma interrupt Timer_X_int; int counter,counter1, counter2, counter3; void main(void) { /*------------------------------------------------- - Change on-chip oscillator clock to Main clock - -------------------------------------------------*/ prc0 = 1; /* Protect off */ cm13 = 1; /* Xin Xout */ cm15 = 1; /* XCIN-XCOUT drive capacity select bit : HIGH */ cm05 = 0; /* Xin on */ cm16 = 0; /* Main clock = No division mode */ cm17 = 0; cm06 = 0; /* CM16 and CM17 enable */ asm("nop"); /* Waiting for stable of oscillation */ asm("nop"); asm("nop"); asm("nop"); ocd2 = 0; /* Main clock change */ prc0 = 0; /* Protect on */ asm( "\tFSET I"); /* Enable interrupt */ /*------------------------------------------------- - Setting main cycle timer - - 20 MHz * 1/32 * 1/250 * 1/250 => 10 Hz - -------------------------------------------------*/ txmr = 0x00; /* Timer mode for Timer X */ prex = 250-1; /* Set Prescaler X register to 250 */ tx = 250-1; /* Set Timer X register to 250*/ txck0 = 0; /* Timer Count source = f32 */ txck1 = 1; txic = 0x07; /* Timer interrupt priority level = 7 */ txs = 1; /* Timer X count start flag -> start */ pd1 = 0x0F; /* Set Port 1.0 - 1.3 be used for output*/ p1 = 0x0F; /* Set Port 1.0 - 1.3 to High */ counter = 0; /* Set counter to zero*/ counter1 = 0; counter2=0; counter3=0; while (1) //Loop { if(counter == 30 ) /* Loop */ { if (p1_2 == 1) { p1_2 = 0; //LED 0 ist eingeschaltet } else { p1_0 = 1; //Led 0 ist ausgeschaltet } counter = 0; //Counter zurücksetzen } if(counter1 == 90) /* Loop */ { if (p1_1 == 1) { p1_1 = 0; //LED 0 ist eingeschaltet p1_2=0; } else { p1_1 = 1; //Led 0 ist ausgeschaltet p1_2 = 1; } counter1 = 0; //Counter zurücksetzen } if(counter2 == 20) { if (p1_0 == 1) { p1_0=0; } else { p1_0=1; } counter2 = 0; } }; } /*------------------------------------------------- - Timer X interrupt routine - -------------------------------------------------*/ void Timer_X_int(void) { counter++; counter1++; counter2++; counter3++; }