commun.c
来自「步进电机控制副机程序,与步进电机控制主机程序配合使用。」· C语言 代码 · 共 127 行
C
127 行
#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 + =
减小字号Ctrl + -
显示快捷键?