📄 commun.c
字号:
#include "reg66x.h"
#include "electromotion.h"
#define WAIT_TIME 1000
void scon_send(unsigned char x)
{
unsigned int i;
S0BUF = x;
while(!TI)
{
i++;
if(i >= WAIT_TIME) return;
}
TI = 0;
}
void scon_rev(void) interrupt 4 using 2
{
unsigned char temp;
unsigned int i;
if(!RI) return;
if(!(S0BUF == 0x80)) return; //如果是数据0x80则继续
RI = 0;
S0BUF = 0x81; //发送0x81回应;
i = 0;
while(!TI)
{
i++;
if(i >= WAIT_TIME) return;
}
TI = 0;
i = 0; //接收速度高位
while(!RI)
{
i++;
if(i >= WAIT_TIME) return;
}
temp = S0BUF;
RI = 0;
motor_speed = (unsigned int)temp;
motor_speed <<= 8;
i = 0;
while(!RI) //接收速度低位
{
i++;
if(i >= WAIT_TIME) return;
}
temp = S0BUF;
RI = 0;
motor_speed += (unsigned int)temp;
i = 0; //接收步数高位
while(!RI)
{
i++;
if(i >= WAIT_TIME) return;
}
temp = S0BUF;
RI = 0;
motor_steps = (unsigned int)temp;
motor_steps <<= 8;
i = 0; //接收步数低位
while(!RI)
{
i++;
if(i >= WAIT_TIME) return;
}
temp = S0BUF;
RI = 0;
motor_steps += (unsigned int)temp;
i = 0; //接收呼吸平台时间高位
while(!RI)
{
i++;
if(i >= WAIT_TIME) return;
}
temp = S0BUF;
RI = 0;
time_inspiration_plate = (unsigned int)temp;
time_inspiration_plate <<= 8;
i = 0; //接收呼吸平台时间低位
while(!RI)
{
i++;
if(i >= WAIT_TIME) return;
}
temp = S0BUF;
RI = 0;
time_inspiration_plate += (unsigned int)temp;
i = 0; //接收呼吸周期时间高位
while(!RI)
{
i++;
if(i >= WAIT_TIME) return;
}
temp = S0BUF;
RI = 0;
time_respiration = (unsigned int)temp;
time_respiration <<= 8;
i = 0;
while(!RI) //接收呼吸周期时间低位
{
i++;
if(i >= WAIT_TIME) return;
}
temp = S0BUF;
RI = 0;
time_respiration += (unsigned int)temp;
start_run = 1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -