📄 main.h
字号:
#include <iom16v.h>
#include <macros.h>
//#include <eeprom.h> xin
//EEPROMwrite(unsigned int addr,unsigned char data);
//data=EEPROMread(unsigned int addr);
#include "TIMEDELAY.C"
#include "Seek_Line_SPI.c"
#include "Seek_Line_PID.c"
#include "stable_8ahead_8back.C"
//#include "HD7279.c"
#define xtal 8 //定义延时函数所用到的晶振的频率
#include <eeprom.h>
#define uint unsigned int
#define uchar unsigned char
//定义全局变量
uchar receive_buf[20];
uchar eep_buf[20];
uchar flag;
unsigned int count=0;
#define LEFT 0
#define RIGHT 1
#define GO TCCR2=0X07
#define STOP TCCR2=0X00
#define L_ON !(PINB & (1 << 1)) //左边数线传感器在白线状态
#define R_ON !(PINB & (1 << 2)) //右边数线传感器在白线状态
unsigned int sel ;
unsigned int L_speed ;
unsigned int R_speed ;
//unsigned int L_kp ;
//unsigned int A_kp ;
void read_sensor ( void ); //读取前后排传感器,加数字滤波
unsigned int judge_sensor_Ahead (unsigned char sensor_inform , unsigned int pre_num_case );
unsigned int judge_sensor_Back (unsigned char sensor_inform , unsigned int pre_num_case );
//long M1,M2;
unsigned char count_l=0,count_r=0,i;
void count_line(unsigned char i) //数线
{
count_l=0;
count_r=0;
while(!((count_r==i)||(count_l==i)))
{
if (R_ON)
{
while(R_ON);
count_r++;
}
if (L_ON)
{
while(L_ON);
count_l++;
}
}
}
void turn_arc (unsigned char i) //弧线拐弯
{
switch(i)
{
case 0:
{
TCCR2 = 0X00;
while( ! ((PINB& 0x08)==0x00 ) );
set_speed(1000,1);
set_speed(-40,0);
delay_ms(1180);
while( !(PINA ==PINC) );
//while( !(((!PINA) & (!PINC))==0X01) );
}break;
case 1:
{
TCCR2 = 0X00;
//set_speed(800,1);
//set_speed(800,0);
//delay_ms(200);
while( ! ((PINB& 0x08)==0x00 ) );
//while(!((PINB & 0x06)==0x00));
set_speed(1000,0);
set_speed(-40,1);
delay_ms(1380);
while( !(PINA ==PINC) );
//while( !(((!PINA) & (!PINC))==0X01) );
}break;
}
}
void turn_fix (unsigned char i)//原地拐
{
TCCR2=0X00;
set_distance(-10000,1);
set_distance(-12000,0);
delay_s(3);
switch(i)
{
case RIGHT:{
set_distance(25000,0);
set_distance(-31000,1);
delay_s(5);
}break;
case LEFT:{
set_distance(-31000,0);
set_distance(25000,1);
delay_s(5);
}break;
}
//TCCR2 = 0x07;
}
void send(unsigned char);
/*********模**式**解**释*************************
工作模式1:
receive_buf[0]=2;
receive_buf[1]=0;参数1--行走时间
receive_buf[2]=0;参数2--停止时间
receive_buf[3]=60;参数3--电磁阀作用时间
工作模式2:空
************************************************/
// UART0 initialisation
// desired baud rate: 9600
// actual: baud rate:9615 (0.2%)
// char size: 8 bit
// parity: Disabled
/********************************************************************************/
//梯形速度生成曲线相关参数
#define ACCESTATE 0xAA //加速状态
#define DECESTATE 0xBB //减速状态
#define REGUSTATE 0xCC //匀速状态
//梯形速度结构体。
#define INITSPEED 300
struct
{
signed int MotorSpeed; //速度
signed int AcceSpeed; //加速度
unsigned char AcceCyc; //加速周期
unsigned char SpeedState; //机器人的运行状态
}TrapeziaV = {INITSPEED, 0, 8, REGUSTATE};
/********************************************************************************/
/********************************寻线转弯*****************************************/
unsigned char Count2TurnR(unsigned char Lines, signed int motorinitspeed, signed int accespeed, unsigned char decespeedline);
void dongzuo(void);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -