导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→帮我看看我的程序怎么了,谢谢(89c552程序)[flashmen]

 *第37590篇: 帮我看看我的程序怎么了,谢谢(89c552程序)

  
楼 主:flashmen 2006年2月11日17:10
 帮我看看我的程序怎么了,谢谢(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]


>>>>>>对该主题发表你的看法

本主题贴数1,分页: [第1页]


[上一篇主题]:protel99SE

[下一篇主题]:菜鸟问:电压信号数据采集系统的开发