智能车制作

标题: 为什么程序进不去for(;;)循环呢? [打印本页]

作者: 胖子小森森    时间: 2013-3-24 20:38
标题: 为什么程序进不去for(;;)循环呢?
RT
=======================
程序如下:

  EnableInterrupts;

for(;;)
{

   if(chuli_flag==1)
   {
           //原本屏蔽的关中断
             DisableInterrupts
             TIE=0x00;         //开中断

             his_RightEdge[0]=110;
             his_LeftEdge[0]=20;

             LeftValidSum=0;
             RightValidSum=0;

             for(i=0;i<lie;i++)
             {      
                   LeftError[i]=0;
                   RightError[i]=0;
             }   


            for (z=lie-1;z>=0;z--)//为什么自底向上扫描不理想? 把z=lie改成z=lie-1就行了            //设计发送方式
            {
                 Line=z;
                 ezh();
                 bianyuan();


            }   
            PreLeftValidSum=LeftValidSum;
            PreRightValidSum=RightValidSum;


            Calculate();


          //---------起跑线识别--------Start-------------------------------------------------


                  BlackPointNum=0;

            if(LeftValidSum>20&&RightValidSum>20&&LeftFitSlopeError<60&&RightFitSlopeError<60)
            {
                   for(i=10;i<29;i++)
                   {
                      if(LeftValid[i]==1&&RightValid[i]==1)
                      {
                            for(x=LeftEdge[i]+1;x<RightEdge[i]-1;x++)
                            {      //从中间开始向左扫描
                                  if(Image_Data[i][x]==0)
                                  {
                                        BlackPointNum++;
                                  }
                            }
                      }
                   }
            }

                ChangCount++;
                if(ChangCount>2000)
                {
                    ChangCount=2000;

                }
               if(BlackPointMax<BlackPointNum&&ChangCount>200)
               {
                    BlackPointMax=BlackPointNum;

               }

               if(BlackPointMax>=40)
               {
                    StopFlag++;
               }  



           //---------起跑线识别--------End-------------------------------------------------



/*

                    //----------发送图像-start------------------------------
             for (j=0;j<lie;j++)//设计发送方式
             {            
                                  for (i=0;i<hang_end;i++)
                                  {
                                      Image_Data[j][i]=255;
                                   //  if(i==AveLeftEdge||i==AveRightEdge){
                               //  if(i==L_start[j]||i==L_end[j]||i==R_start[j]||i==R_end[j]){  //i==L_start[j]||i==L_end[j]||
                                 // if(i==73){
                                      if(i==LeftLine[j]||i==RightLine[j])
                                      {
                                     //        Image_Data[j][i]=0;
                                              Image_Data[j][i-1]=0;
                                      }


                                  }  
                                  k1= LeftEdge[j] ;
                                  k2= RightEdge[j];
                                  if(LeftValid[j]==1)
                                    Image_Data[j][k1]=0;
                                  if( RightValid[j]==1)
                                  {
                                    Image_Data[j][k2]=0;
                                    Image_Data[j][k2-1]=0;
                                   }
               }              
            //-------------------以下为两个不同上位机发送配置--------------   

                        //     SCI_TXD(0x);   
                        //     SCI_TXD(255);
                        //     SCI_TXD(1);
                        //     SCI_TXD(0);

                             SCI_TXD(0x00);
                             SCI_TXD(0x01);
                             SCI_TXD(0x02);
                             SCI_TXD(0x03);

             //----------------------------END--------------------------   

                          for (j=0;j<lie;j++)
                          {
                                  for (i=0;i<hang_end;i++)
                                  {
                                      send=Image_Data[j][i];
                                      SCI_TXD(send);
                                  }   
                           }                 


                           //----------发送图像-end------------------------------
       */     

f========================
程序直接进不去for(;;)
一到for(;;)就直接去中断了,中断完了又到for(;;)上边了,如此死循环,怎么破?






作者: quzhanguang    时间: 2013-3-24 20:59
楼主给的程序咋看呀。。。。
你可以在for(;;)放流水灯程序来调试下。
作者: 胖子小森森    时间: 2013-3-24 21:14
quzhanguang 发表于 2013-3-24 20:59
楼主给的程序咋看呀。。。。
你可以在for(;;)放流水灯程序来调试下。

是不是enableinterrupt就要跳到一个中断中?

作者: linping9656    时间: 2013-3-24 21:57
胖子小森森 发表于 2013-3-24 21:14
是不是enableinterrupt就要跳到一个中断中?

不是啊。只是中断使能。

作者: 穆旦阿斗    时间: 2013-3-24 22:03
enableinterrupts是总中断 不是要进入一个中断  你for(;;)一进来就disableinterrupts 就把所有的中断关闭了呀  你再“TIE=0x00;         //开中断 ”就没有用了啊 这就相当于51的EA=0了 不管你定时器还是外部中断使能或者不是能都不会响应的!!!

作者: 机遇    时间: 2013-3-24 22:03
你把整个程序发出来啊
作者: 378110705    时间: 2013-3-25 14:57
有没有对应的中断向量号?
作者: 胖子小森森    时间: 2013-3-25 15:18
378110705 发表于 2013-3-25 14:57
有没有对应的中断向量号?

一共写了三个中断,直接跳进去8号了,一直往8号里面跳,其他两个中断都没走,还有个9号和59号

作者: 378110705    时间: 2013-3-26 12:29
那中断优先级的有没有设置啊 ?
作者: DEATHRACE    时间: 2013-3-26 16:14
复位重启了,一直把中断关了试试能不能进for(;;)
作者: 胖子小森森    时间: 2013-3-26 18:35
378110705 发表于 2013-3-26 12:29
那中断优先级的有没有设置啊 ?

中断优先级怎么设置?你的意思是改中断号?
作者: 378110705    时间: 2013-3-27 15:23
胖子小森森 发表于 2013-3-26 18:35
中断优先级怎么设置?你的意思是改中断号?

不是啊,有一个寄存器是设置中断优先级的,你查一下嘛


作者: 胖子小森森    时间: 2013-3-29 10:59
378110705 发表于 2013-3-27 15:23
不是啊,有一个寄存器是设置中断优先级的,你查一下嘛

API设置?





欢迎光临 智能车制作 (http://111.231.132.190/) Powered by Discuz! X3.2