* 模拟串口试验
* 作者:[email protected] QQ:77473067
* CPU:89S52
* 晶振:11.0592MHz
* 功能:将模拟接收口数据通过模拟发送口发送,通信波特率9600Bps
* 建议:改成3线制方式,或者选择有中断引脚的CPU,这样可以大大减少CPU负担
* 测试用0x55,0x5A,0xA5,0xAA四个字节数据进行过实际验证
****************************************************************************/
#include <reg52.h>
sbit TxPin = P3^1 //设置发送引脚
sbit RxPin = P3^0 //设置接收引脚
unsigned char RxBuf[4]//接收的数据缓冲区
unsigned char RxdP//接收位置指针(字节)
unsigned char RxpTime //接收间断时间监控
unsigned char RxEndBit//接收完成标志
/*****************************************************************************
* 函数原型:void Delay(unsigned char Val)
* 函数作用:延时
* 输入参数:Val 延时参数
* 输出参数:无
* 注意:
****************************************************************************/
void Delay(unsigned char Val)
{
while(Val--)
}
/*****************************************************************************
* 函数原型:void TxData(unsigned char Val)
* 函数作用:通过模拟串口引脚发送数据
* 输入参数:Val 待发送的数据(8Bit)
* 输出参数:无
* 注意:发送中时序很关键,发送前必须关闭中断
****************************************************************************/
void TxData(unsigned char Val)
{
unsigned char i
TxPin = 0 //发送起动符
Delay(13)
for(i = 0x01i != 0i <<= 1)
{
if((Val &i) != 0)
{
TxPin = 1
}
else
{
TxPin = 0
}
Delay(12)
}
TxPin = 1 //发送停止符
Delay(14)
TxPin = 1
}
/*****************************************************************************
* 函数原型:void Time0() interrupt 1
* 函数作用:定时监控接收引脚状态并接收数据
* 输入参数:无
* 输出参数:无
* 注意:对CPU负担巨大
****************************************************************************/
void Time0() interrupt 1
{ unsigned char i
if(0 == RxPin) //找到启动符
{
TR0 = 0 //暂停定时器
RxBuf[RxdP] = 0
Delay(15)
for(i = 0x01i != 0 i <<= 1)//最低位开始接收
{
if(0 != RxPin)
{
RxBuf[RxdP] |= i
}
Delay(12)
}
Delay(10)
RxpTime = 0
TR0 = 1
RxdP++
if(RxdP >= 4)
{
RxdP = 0
RxEndBit = 1//接收完成,置标志
}
}
else
{
RxpTime++
}
}
/*****************************************************************************
* 函数原型:unsigned int main(void)
* 函数作用:演示主程序
* 输入参数:无
* 输出参数:无
****************************************************************************/
unsigned int main(void)
{
unsigned char i
TxPin = 1 //发送端预置
RxEndBit = 0
RxdP = 0
TMOD = 0x02 //定时器初始化
TL0 = 0xd2 //48uS
TH0 = 0xd2
ET0 = 1
PT0 = 1
TR0 = 1
EA = 1
while(1)
{
if(RxEndBit != 0)//有接收到完整数据
{
TR0 = 0
for(i = 0i <4i++)//将接收的4字节数据转发
{
TxData(RxBuf[i])
}
RxEndBit = 0
TR0 = 1
}
else
{
if(RxpTime >80)
{
RxpTime = 0
RxdP = 0
}
}
}
return 0
}
GSK980TDa 编写程序用2把刀 T0101 为外圆35车刀
T0202为 3*1.5宽 切槽刀
T0303为60°螺纹车刀
G99 M3 S1000 T0101
G0 X47.8 Z2
G1 Z0.1 F0.15
G1 W-60.1
U14.2 W-60
W-10
U17
U1 W-1
W-19
G2 X80 W-60 R70 F0.1
Z-220
U4 F0.15
U1 W-1
Z- ? 《?=这里写你的轴的全长》
G0 U5 Z100
T0202
G0 X50 Z2
G1 W-62 F1
X F0.5
U-5 F0.1
X50
G0 Z100
T0303
G0 X50 Z20
G92 X47.3 Z-62 F1.5
X47
X46.7
X46.5
G0 U50 Z100 M30
《程序完毕》 排式刀架与这个程序略有不同 刀号为 T0101 T0102 T0103 是这样的
而且退刀的时候 是先退 X轴 在退 Z 轴 《因为是排式刀架所以退1号刀的时候 其他刀也会一起运动这样退刀是防止撞车,当然刀具摆放的好有可能不会碍事》
980tda进给使能旋钮输入无效,无法启动,是旋钮的触点坏了,需要维修。根据根据查询相关公开资料得知,980tda进给使能旋钮输入无效,无法启动,这是旋钮的触点坏了,需要送维修进行检修维护即可。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)