?? stable.c
字號:
//前面八路普通傳感器輸入。
unsigned char Sensor_Ahead; //8 Normal Sensors Input
unsigned char reverse_value(unsigned char temp)
{
unsigned char temp0=0;
//將字節數據:d7d6d5d4d3d2d1d0 轉換成為 d0d1d2d3d4d5d6d7數據
temp0 |= (temp<<7)&(1<<7);
temp0 |= (temp<<5)&(1<<6);
temp0 |= (temp<<3)&(1<<5);
temp0 |= (temp<<1)&(1<<4);
temp0 |= (temp>>7)&(1<<0);
temp0 |= (temp>>5)&(1<<1);
temp0 |= (temp>>3)&(1<<2);
temp0 |= (temp>>1)&(1<<3);
return temp0;
}
//前排取八路普通傳感器輸入
void read_sensor ( void ) //讀取前后排傳感器
{
unsigned char temp_ahead;
//所有傳感器輸入為低電平有效,前排傳感器和PA口的對應情況
//左 PA7, PA6, PA5, PA4, PA3, PA2, PA1, PA0 右//
temp_ahead = PINA;
//將傳感器器信號轉換成高電平有效,即轉換成字節數據。
Sensor_Ahead = ~reverse_value(temp_ahead);
}
//========讀前傳感器=========
//輸入為本次采樣后經過轉換后的傳感器字節數據和前一次傳感器的字節數據
unsigned int judge_sensor_Ahead (unsigned char sensor_inform , unsigned int pre_num_case )
{
unsigned int num_case;
switch ( sensor_inform )
{
case 0x01 : // * * * * * * * +
num_case = 1;
break;
case 0x03 : // * * * * * * + +
num_case = 2;
break;
case 0x02 : // * * * * * * + *
num_case = 3;
break;
case 0x06 : // * * * * * + + *
num_case = 4;
break;
case 0x04 : // * * * * * + * *
num_case = 5;
break;
case 0x0C : // * * * * + + * *
num_case = 6;
break;
case 0x08 : // * * * * + * * *
num_case = 7;
break;
case 0x18 : // * * * + + * * *
num_case = 8;
break;
case 0x10 : // * * * + * * * *
num_case = 9;
break;
case 0x30 : // * * + + * * * *
num_case = 10;
break;
case 0x20 : // * * + * * * * *
num_case = 11;
break;
case 0x60 : // * + + * * * * *
num_case = 12;
break;
case 0x40 : // * + * * * * * *
num_case = 13;
break;
case 0xC0 : // + + * * * * * *
num_case = 14;
break;
case 0x80 : // + * * * * * * *
num_case = 15;
break;
default :
num_case = pre_num_case;
}
return num_case; //返回前部八路傳感器的在線狀態值。
}
/*****************************************************************/
//非線性放大矩陣,放大誤差。經調節后可改善尋線效果
static signed int jiaodu_feedback_table[15]=
{-450, -320, -260, -220, -200, -160, -100, 0, 100, 160, 200, 220, 260, 320, 450};
signed int value_change_Jiaodu (signed char jiaodu)
{
signed int num_case;
num_case = jiaodu_feedback_table[jiaodu+7]; //jiaodu的范圍為-7至+7;
return num_case;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -