void wait_us (unsigned int micros) { unsigned int i; for (i = 0; i < micros; i++) { asm("nop"); } } // Verzögerungsschleife: ca. Millisekunden void wait_ms(unsigned int millis) { int k,i; for (i = 0;i < 1000; i++) for (k = 0;k < millis; k++) asm("nop"); } void init_R8C(){ /* - 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 */ // pd1 = 0x0FF; } void main(void) { unsigned long int cnt; // Frequenz unsigned int len; unsigned int range; // Torbereich 0 ... 6 unsigned char tast; // Taster unsigned char mode; asm("FCLR I"); // Interrupt verhindern // OSC_Ext_20Mhz(); // ext. Oszillator mit 20 MHz init_R8C(); p0 = 0xfd; // Port 0 setzen prc2 = 1; // Protect 2 aus pd0 = 0b11111001; // LCD an P0.2 bis P0.7 Ausgang, // AN6 an P0.1 AD Kanal 6 // Protect 2 geht von selbst wieder an pd1 = 0b11111111; // Port 1.0 bis 1.7 Ausgang p1 = 0b11111111; // Port 1.0 bis 1.7 einschalten wait_ms(250); p1 = 0b00000000; // Port 1 alles aus pd3 = 0b00001111; // Port 3.0 bis 3.3 Ausgang p3 = 0b00001111; // Port 3.0 bis 3.3 einschalten wait_ms(250); p3 = 0b00000000; // Port 3 alles aus pur1=2; // Pullup on 4.5 // com_init(); // COM mit 9600 baud 8N1 initialisieren txic = 5; // Interrupt Ebene 5 fuer Timer X (Y und Z sind // Ebene 0 d.h. nicht freigegeben) asm("FSET I"); // Interrupt erlauben while (1) // Loop \\ { p1 = 0b11111111; p3 = 0b00001111; wait_ms(500); p1 = 0b00000000; p3 = 0b00000000; wait_ms(500); } }