|
void clock(void) interrupt 3 //T1
{
if(e>=10)
{
if((e>=10&&e<80)||(e>=100))
{
if(i>=0&&i<422)
{
if(i>=0&&i<25) //z軸
{
DIR2=1;
aa++;
shudu2=!shudu2;
TH1=(65536-30)/256; //這里的定時器初始值重置,在指令執(zhí)行時不執(zhí)行,而是直接跳過,
TL1=(65536-30)%256; //t調(diào)到最下面的定時器初始值設(shè)置,
}
else if(i>=25&&i<285)
{
if(e>=10&&e<80)
{
DIR2=1;
shudu2=!shudu2;
}
else
{
DIR2=0;
shudu2=!shudu2;
}
TH1=(65536-600)/256;
TL1=(65536-600)%256;
}
else
{
if(e>=10&&e<80)
{
if(i>=285&&i<310)
{
DIR2=0;
shudu2=!shudu2;
}
else if(i>=310&&i<384)
{
DIR=1;
shudu=!shudu;
}
else
{
DIR1=0;
shudu1=!shudu1;
}
aa++;
TH1=(65536-30)/256;
TL1=(65536-30)%256;
}
}
}
}
else
{
if(i>=25&&i<310)
{
if((i>=25&&i<99)||(i>=118&&i<192)||(i>=211&&i<285)) //y軸
{
if(i>=118&&i<192)
{
DIR=1;
}
else
{
DIR=0;
}
shudu=!shudu;
}
else if((i>=99&&i<118)||(i>=192&&i<211)) //x軸
{
DIR1=1;
shudu1=!shudu1;
}
else
{
DIR2=0;
shudu2=!shudu2;
}
aa++;
TH1=(65536-30)/256; //直接跳到這里 ,不知道為什么?
TL1=(65536-30)%256;
}
}
}
}
因?yàn)榭刂?個步進(jìn)電機(jī) 需要不同的速度 ,所以定時器的時間有大有小, 而程序直接跳到最下面的定時器初始值設(shè)置,這樣3個步進(jìn)電機(jī)的速度就一樣了,有大佬幫忙看看為什么直接跳到最下面的定時器初始值設(shè)置嗎
|
|