📄 slave.h
字号:
/*data_to_host改为datapackage*/
struct datapackage {
unsigned char head; /*k_ail改为head*/
unsigned char dat[7]; //数据
};
struct datapackage_s //用于存放向主机返回数据包的结构体
{
unsigned char head; //向主机返回数据的数据包包头,低四位表示以下数据个数
unsigned char dat[20]; //数据
};
struct datapackage_r //用于暂时存放来自主机的数据包(一个大贞的小包)结构体
{
unsigned char dat[7]; //数据
};
struct bigpackage //用户直接可用的来自主机的数据结构体
{
unsigned char instruction; //来自主机的指令
unsigned char x[20]; //来自主机的数据
};
/*
head第0~2位表示数据包的长度(不含head和checksum)
head第3~5位是指令
head第6~7位是要发送数据的从机的地址
*/
#define TXD 3 //P03
#define EN_TXD() {GP0CON &=~(uint32)(0x0F<<(TXD*4)); GP0DAT |=1<<(TXD+24);} /*使能TXD,即将TXD对应的口设置为输出*/
#define ON_TXD() GP0SET=(1<<(TXD+16)) //开TXD
#define OFF_TXD() GP0CLR=(1<<(TXD+16)) //关TXD
#define TXDSTAT (GP0DAT &(1<<(TXD+16)))
#define LED42 2 //P42
#define EN_LED42() {GP4CON &=~(uint32)(0x0F<<(LED42*4)); GP4DAT |=1<<(LED42+24);} /*使能TXD,即将TXD对应的口设置为输出*/
#define OFF_LED42() GP4SET=(1<<(LED42+16)) //开TXD
#define ON_LED42() GP4CLR=(1<<(LED42+16)) //关TXD
#define LED42STAT (GP4DAT &(1<<(LED42+16)))
/*宏定义*/
#define Local 0x02 //从机的地址 slave_motor
#define LOCAL_ADDRESS Local<<5 //将从机地址左移五位用于同来自主机的数据包包头比较
#define SHAKEHAND 0x03 //握手信号的指令
///////////////slave///////////////////////
void UART_R_ISR(void);
void Z_COMMUNI_INIT(void); //通信初始化
void Z_RESPOND_SHAKEHANDn(void); //从机向主机返回握手信号
void Z_RESPOND_BAD(void); //从机向主机返回CUOWU信号
void Z_RESPOND_HEAD(void);
void Z_RESPOND_OKAY(void);
void Z_INFO_SEND(struct datapackage_s *p); //发送正常的数据
void Z_UART_SEND(struct datapackage_s *p); //发串口通讯
void Z_TXD(unsigned char d); //发送数据的最底层函数
unsigned char Z_GETYOU(void);
////////////////slave////////////////////////
///////////////////////////////////////////
//extern struct data_to_host xx;
//extern struct datapackage z_global_receive_buf; //全局接收数据的缓存
//extern struct datapackage *z_globalp; //
//
extern struct bigpackage bigp[8];
//extern struct datapackage z_global_receive_data; //接收到的数据的结构体
//extern struct datapackage z_global_send_buf[8]; //发送数据的结构体
extern struct datapackage_s z_global_send_bufn[16];
//extern struct datapackage zero={0,0,0,0,0,0,0,0}; //用于赋结构体初值的结构体
/*z_flag_kfsent改为z_flag_keyframe*/
//extern unsigned char z_flag_keyframe; //key frame 关键帧发送的标志
/*z_flag_locaddr 改为z_flag_chosen*/
//extern unsigned char z_flag_chosen; //本机地址选中标志
extern unsigned char z_flag_newins; //新任务标志。当有新的指令时,此标志置1;主程序中一旦执行新任务,此标志清零
/*z_rbf_l改为z_counter*/
//extern unsigned char z_counter; //用于接收数据时的计数,计为0时表示接收结束,当置为0xFF时表示接收的是数据包首字节
/*z_globalcheck改为z_globalcheck_sum*/
//extern unsigned char z_globalcheck_sum; //全局校验(和),收和发均用这个变量
//extern unsigned char z_instruction; //接收到的指令
//unsigned char flag_pri_tim;
/*以下变量放在函数体内定义时,运行出错*/
//extern unsigned char z_checksum; //校验和
/*以下变量用于函数unsigned char Z_NUM_OF_ONE(unsigned char d)*/
//bdata unsigned char z_tmp; //d的代换量,可位寻址
//extern unsigned char z_tmp; //d的代换量,可位寻址
//sbit z_is_one=tmp^0; //tmp的第0位
extern unsigned char flag_pri;
//extern unsigned char flag_pri_temp;
extern unsigned char flag_pri_tim;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -