智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 2382|回复: 12
打印 上一主题 下一主题

为什么程序进不去for(;;)循环呢?

  [复制链接]

22

主题

125

帖子

0

精华

高级会员

Rank: 4

积分
670
威望
422
贡献
150
兑换币
188
注册时间
2012-9-25
在线时间
49 小时
毕业学校
在读
跳转到指定楼层
1#
发表于 2013-3-24 20:38:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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(;;)上边了,如此死循环,怎么破?





66

主题

2229

帖子

4

精华

超级版主

Rank: 10Rank: 10Rank: 10

积分
17281

论坛元老奖章

威望
8767
贡献
3040
兑换币
4153
注册时间
2011-8-7
在线时间
2737 小时
2#
发表于 2013-3-24 20:59:36 | 只看该作者
楼主给的程序咋看呀。。。。
你可以在for(;;)放流水灯程序来调试下。
回复 支持 反对

使用道具 举报

22

主题

125

帖子

0

精华

高级会员

Rank: 4

积分
670
威望
422
贡献
150
兑换币
188
注册时间
2012-9-25
在线时间
49 小时
毕业学校
在读
3#
 楼主| 发表于 2013-3-24 21:14:11 | 只看该作者
quzhanguang 发表于 2013-3-24 20:59
楼主给的程序咋看呀。。。。
你可以在for(;;)放流水灯程序来调试下。

是不是enableinterrupt就要跳到一个中断中?
回复 支持 反对

使用道具 举报

106

主题

968

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
4494

在线王奖章论坛元老奖章活跃会员奖章优秀会员奖章

威望
2681
贡献
921
兑换币
241
注册时间
2012-2-4
在线时间
446 小时
4#
发表于 2013-3-24 21:57:13 | 只看该作者
胖子小森森 发表于 2013-3-24 21:14
是不是enableinterrupt就要跳到一个中断中?

不是啊。只是中断使能。
回复 支持 反对

使用道具 举报

42

主题

1054

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3034

优秀会员奖章活跃会员奖章

QQ
威望
1650
贡献
780
兑换币
625
注册时间
2012-7-6
在线时间
302 小时
5#
发表于 2013-3-24 22:03:01 | 只看该作者
enableinterrupts是总中断 不是要进入一个中断  你for(;;)一进来就disableinterrupts 就把所有的中断关闭了呀  你再“TIE=0x00;         //开中断 ”就没有用了啊 这就相当于51的EA=0了 不管你定时器还是外部中断使能或者不是能都不会响应的!!!
回复 支持 反对

使用道具 举报

24

主题

492

帖子

0

精华

杰出人士

Rank: 12Rank: 12Rank: 12

积分
13138
威望
5341
贡献
1645
兑换币
2222
注册时间
2012-3-9
在线时间
3076 小时
毕业学校
嘉兴学院
6#
发表于 2013-3-24 22:03:52 | 只看该作者
你把整个程序发出来啊
回复 支持 反对

使用道具 举报

3

主题

177

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2048
威望
1074
贡献
636
兑换币
683
注册时间
2012-9-22
在线时间
169 小时
7#
发表于 2013-3-25 14:57:49 | 只看该作者
有没有对应的中断向量号?
回复 支持 反对

使用道具 举报

22

主题

125

帖子

0

精华

高级会员

Rank: 4

积分
670
威望
422
贡献
150
兑换币
188
注册时间
2012-9-25
在线时间
49 小时
毕业学校
在读
8#
 楼主| 发表于 2013-3-25 15:18:46 | 只看该作者
378110705 发表于 2013-3-25 14:57
有没有对应的中断向量号?

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

使用道具 举报

3

主题

177

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2048
威望
1074
贡献
636
兑换币
683
注册时间
2012-9-22
在线时间
169 小时
9#
发表于 2013-3-26 12:29:24 | 只看该作者
那中断优先级的有没有设置啊 ?
回复 支持 反对

使用道具 举报

3

主题

132

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2334
威望
1223
贡献
703
兑换币
586
注册时间
2012-2-26
在线时间
204 小时
10#
发表于 2013-3-26 16:14:02 | 只看该作者
复位重启了,一直把中断关了试试能不能进for(;;)
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-12-29 18:17 , Processed in 0.058978 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表