/* ========================================================================== */ /* test header */ /* ========================================================================== */ #include void MCU_initialize(void) /* initialize ATmege128 MCU */ { MCUCR = 0x80; // enable external memory and I/O //XMCRA = 0x44; // 0x1100-0x7FFF=1 wait, 0x8000-0xFFFF=0 wait XMCRA = 0x46; // 0x1100-0x7FFF=1 wait, 0x8000-0xFFFF=2 wait XMCRB = 0x80; // enable bus keeper, use PC0-PC7 as address } void Delay_us(unsigned char time_us) /* time delay for us */ { register unsigned char i; for(i = 0; i < time_us; i++) // 4 cycle + { asm volatile(" PUSH R0 "); // 2 cycle + asm volatile(" POP R0 "); // 2 cycle + asm volatile(" PUSH R0 "); // 2 cycle + asm volatile(" POP R0 "); // 2 cycle + asm volatile(" PUSH R0 "); // 2 cycle + asm volatile(" POP R0 "); // 2 cycle = 16 cycle = 1 us for 16MHz } } void Delay_ms(unsigned int time_ms) /* time delay for ms */ { register unsigned int i; for(i = 0; i < time_ms; i++) { Delay_us(250); Delay_us(250); Delay_us(250); Delay_us(250); } }