哥们帮我看看这个程序吧~模拟串口收发四个字节 接收正常 发送不正常~感激不尽~辛苦了~

哥们帮我看看这个程序吧~模拟串口收发四个字节 接收正常 发送不正常~感激不尽~辛苦了~,第1张

/*****************************************************************************

* 模拟串口试验

* 作者:[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进给使能旋钮输入无效,无法启动,这是旋钮的触点坏了,需要送维修进行检修维护即可。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/8074383.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存