
fastcam软件如果有加了割缝补偿,数控系统再加割缝补偿一般是无效的,因为是双重加割缝,容易出错,程序代码如果出现G40,G41,G42,说明已经有割缝补偿了,数控系统再加割缝补偿应该是不起作用的
void main()
{ uart(); //初始化,没问题
if(timeout==500) //刚做完初始化,timeout怎么可能到500呢,
{
timeout=0; //所以这两句是永远不会执行的
P1=temp;
}
sendstring(); //参数呢
delay(); //同上
m33g_int();
while(1) ; //执行到这里后,程序只会执行两个中断程序了
//你是不是想循环执行啊?那就写成do{if(timeout==500) }while(1);
}
RI = 0; //清除串行接受标志位
buf = SBUF; //从串口缓冲区取得数据
P1 = buf; //数据送往p1口显示出来
这里就有问题,你认为只要中断了,就是接收数据吗,不是的,发送也会产生中断,我博客上有相关的程序,你可以去参考
#include <reg51h>
#define uchar unsigned char
uchar time,b_break,b_break_3;
uchar buf;
void waitsend()
{
while(!TI)
{
};
TI = 0;
}
//串行中断程序
void int_s(void) interrupt 4
{
ES = 0; //关闭串行中断
if(RI==1)
{
RI = 0; //清除串行接受标志位
buf = SBUF; //从串口缓冲区取得数据
P1 = buf; //数据送往p1口显示出来
if(buf == 255) SBUF = 255; //发送联络信号
else{
buf = buf-0x30;//就是这个地方进行一个修正。
switch(buf)
{
case 1: SBUF = 'M',waitsend();break; //如果接受到1,发送字符'M'给计算机
case 2: SBUF = 'C',waitsend();break; //如果接受到2,发送字符'C'给计算机
case 3: SBUF = 'S',waitsend();break; //如果接受到3,发送字符'S'给计算机
case 4: SBUF = '5',waitsend();break; //如果接受到4,发送字符'5'给计算机
case 5: SBUF = '1',waitsend();break; //如果接受到5,发送字符'1'给计算机
default: SBUF = 'n',waitsend();break; //如果接受到其它数据,发送n给计算机
}
}
}
ES = 1; //允许串口中断
}
void main(void)
{
P0 = 0;
P2 = 255; //关闭数码管显示
EA=1;
SCON=0x50;
PCON=0;
TMOD=0x20;
ES = 1;
TL1=TH1=0xf4;
TR1=1; //串口工作在模式3,波特率2400(11059M)
while(1);
//无限循环等待串行中断
}
这样改一下,就应该可以正确收到数据了。
估计是ASII码与字符的原因,你发送时发送HEX,也就是说,不能选字符发送方式,如果你发‘1’,下面收到的是31H,是十六时制的,要不,你改一下,buf=buf-0x30,这样就行了。
上面的已经改好的,你可以再烧进单片机去试一下。
你说的效果是什么意思?
是在屏幕上没有什么效果,还是在文件中没有什么效果?
首先要确定,该文件是否存在,里面是否有内容。
看上面的代码,应该是将程序文件的前1024内容复制一下,然后再在1025位置开始写入一遍。
以上就是关于数控等离子切割机的割缝补偿怎么对fastcam编程的程序没有效果 请问怎么改全部的内容,包括:数控等离子切割机的割缝补偿怎么对fastcam编程的程序没有效果 请问怎么改、51单片机,定时器和串口C程序求助,为什么我程序中的定时程序实际运行中没有效果呢、大家看看是什么问题,运行下面程序没有达到预期的效果呢等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)