帮我看看我的程序怎么了,谢谢(89c552程序)
[color=#008B8B]程序的主体部分发送第一个字和处理接受回来的数据,
程序的中断部分接受从通讯设备接受回来的信息
void main(void)
{
while(1)
{
switch(TCount)
{
case 0:
{
TCount = 1;
S0BUF = RollCmd[TSPos
}
break;
case 3:
{ //对TCount=2接收到的数据进行处理
jieguo = asc2dec(ComTRBuf);
//[I]如果加上下面的jieguo处理程序并且case 7 里的jieguo处理程序也加上时,调试有错误[/I]
/*if(((jieguo> -90)&&(jieguo <-3))||((jieguo> 3)&&(jieguo <90)))
{
TCount = 0;
P13 = 1;
delay();
P13 = 0;
}
else if ((jieguo> =-3)&&(jieguo <-0.03))
{
TCount = 4;
PWM1 = 0xfe;
P32 = 1;
delay();
P32 = 0;
}
else if((jieguo> =-0.03)&&(jieguo <=0.03))
{
TCount = 4;
PWM1 = 0x7f;
P32 = 1;
delay();
P32 = 0;
}
else if ((jieguo> 0.03)&&(jieguo <=3))
{
TCount = 4;
PWM1 = 0x04;
P32 = 1;
delay();
P32 = 0;
}
else if(jieguo==255)
{
TCount = 0;
delay();
} */
//对TCount=2接收到的数据进行处理结束
}
break;
case 4:
{
TCount = 5;
S0BUF = PitchCmd[TSPos++];
}
break;
case 7:
{ //对TCount=6接收到的RollCmd数据进行处理
jieguo = asc2dec(ComTRBuf);
//[I]如果加上下面的jieguo处理程序并且case 3 里的处理程序也加上时,调试有错误[/I]
if(((jieguo> -90)&&(jieguo <-3))||((jieguo> 3)&&(jieguo <90)))
{
TCount = 0;
P13 = 1;
delay();
P13 = 0;
}
else if ((jieguo> =-3)&&(jieguo <-0.03))
{
TCount = 4;
PWM1 = 0xfe;
P32 = 1;
delay();
P32 = 0;
}
else if((jieguo> =-0.03)&&(jieguo <=0.03))
{
TCount = 4;
PWM1 = 0x7f;
P32 = 1;
delay();
P32 = 0;
}
else if ((jieguo> 0.03)&&(jieguo <=3))
{
TCount = 4;
PWM1 = 0x04;
P32 = 1;
delay();
P32 = 0;
}
else if(jieguo==255)
{
TCount = 0;
delay();
}
else
{
TCount = 0;
delay();
}
//对TCount=6接收到的RollCmd数据进行处理结束
}
break;
default:
break;
}
}
}
/* *************************************************************** */
/* ************************************************************** */
/* * 子程序:void Int4Serial() interrupt 4 using 1 * */
/* * 输 入:无 * */
/* * 输 出:无 * */
/* * 调 用:无 * */
/* * 被调用:无 * */
/* * 功 能:串行中断服务子程序处理 * */
/* *************************************************************** */
/* ************************************************************** */
void Int4Serial() interrupt 4 using 1
{
/* 2006年1月12日添加 */
if(RI)
{
RI = 0;
switch(TCount)
{
case 2:
{
if(RSPos <RRollNum)
{
ComTRBuf[RSPos++] = S0BUF;
}
else
{
REN = 0;
TCount = 3;
RSPos = 0;
}
}
break;
case 6:
{
if(RSPos <RRollNum)
{
ComTRBuf[RSPos++] = S0BUF;
}
else
{
REN = 0;
TCount = 7;
RSPos = 0;
}
}
break;
case 10:
{
if(RSPos <RPitchNum)
{
ComTRBuf[RSPos++] = S0BUF;
}
else
{
REN = 0;
TCount = 11;
RSPos = 0;
}
}
break;
}
}
else if(TI)
{
TI = 0;
switch(TCount)
{
case 1:
{
if(TSPos <0x04)
{
S0BUF = RollCmd[TSPos++];
}
else
{
TCount = 2;
REN = 1;
TSPos = 0;
}
}
break;
case 5:
{
if(TSPos <TPitchNum)
{
S0BUF = PitchCmd[TSPos++];
}
else
{
TCount = 6;
REN = 1;
TSPos = 0;
}
}
break;
case 9:
{
if(TSPos <TPitchNum)
{
S0BUF = PitchCmd[TSPos++];
}
else
{
TCount = 10;
REN = 1;
TSPos = 0;
}
}
break;
}
}
/* 2006年1月12日添加结束*/
}[/color]
发表时间:2006年2月11日17:10:51