* Test.c * Description: This file includes I/ O function for test, the PWM outputs function for test, function * testing sensors. * (c) Copyright 2006,Zhao Cheng * All Rights Reserved * By : Zhao Cheng * Note : Don't change this file if possible. **********************************************************************************/ #include #include #define HIGHSPEED 8000 #define LOWSPEED 11000 /* 速度变量,0-24000 数值越大,速度越慢 */ void PWMout(int, int); /* 24000-20000 */ void IOtest(void) { static unsigned char i=0,j=0x01,k; DDRB = DDRA = 0xFF; PORTB = 0xf0; for(;;) { k=(~j)&0x7f; PORTA = PORTB = k; while (TCNT != 0x0000); while (TCNT == 0x0000) { if(i>9) { j=j<<1; i=0; } i++; } if(j>=0x80) j=0x01; } } void PWMtest(void) { int counter=-4500; DDRB = 0xff; PORTB = 0xff; TSCR1 = 0x80; /* enable timer TCNT */ TSCR2 = 0x00; /* TCNT prescaler setup */ for(;;) { while (TCNT != 0x0000); while (TCNT == 0x0000); counter=counter+30; if(counter >= 3000) { counter = 0; PWMout(4500, LOWSPEED); } if(counter == 1500) { PWMout(-4500, LOWSPEED); } PORTB = (char)(counter/100); } } void SignalTest(void) { unsigned char signal; int Direction, Velocity; Direction = 0; Velocity = LOWSPEED; DDRA = 0x00; DDRB = 0xff; signal = PORTA; PORTB = ~signal; switch(signal) { case 0x08: /* 0001 1000 */ case 0x10: Direction = 800; Velocity = HIGHSPEED; break; case 0x04: /* 0010 0100 */ case 0x20: Direction = 1500; Velocity = HIGHSPEED; break; case 0x02: /* 0100 0010 */ case 0x40: Direction = 2800; Velocity = HIGHSPEED; break; case 0x01: /* 1000 0001 */ case 0x80: Direction = 4000; Velocity = LOWSPEED; break; case 0x3c: /* 0011 1100 over start line */ case 0xff: /* 1111 1111 over crossing line */ cas...