墨逸、 发表于 2014-5-20 01:53:57

我的循线程序为什么不能正常执行呢?

一点反应都没#include<reg52.h>
/*------------------------------------------------
                   I/O口定义和车子状态
------------------------------------------------*/


                sbit zuo0        =        P0^0;
                sbit zuo1        =        P0^1;
                sbit you0        =        P0^2;
                sbit you1        =        P0^3;
                sbit a=P3^2;
                sbit b=P3^3;
               
               
void zuozhuan()
{zuo0        =        1;zuo1        =        0;you0        =        0;you1        =        1;}
void youzhuan()
{zuo0 = 0;zuo1 = 1;you0        = 1;you1        =        0;}
void qianjin()
{zuo0= 0;zuo1= 1;you0        =        0;you1        =        1;}
/*----------主程序--------------*/

main()
{
      
EA=1;         
EX0=1;      
EX1=1;   
IT0=1;
IT1=1;       
while(1)
{
   qianjin();      
}
}
/*------------------------------------------------
               
------------------------------------------------*/
void left_led(void) interrupt 0
{
zuozhuan();
}



void right_led(void) interrupt 2
{
zuozhuan();
}



墨逸、 发表于 2014-5-20 01:54:51

使用的外部中断

SXH201312 发表于 2014-5-20 11:25:40

你这样直接贴代码,没多少人会去看的。

你得把你的思路,逻辑处理,代码只是最后的描述而已

学会问问题也是一门学问

墨逸、 发表于 2014-5-20 18:18:08

SXH201312 发表于 2014-5-20 11:25
你这样直接贴代码,没多少人会去看的。

你得把你的思路,逻辑处理,代码只是最后的描述而已


我的目的是让它寻到黑线以后左右转,然后同时测距,但是结果它虽然可以循线,但是有好大的延迟

SXH201312 发表于 2014-5-20 23:33:46

墨逸、 发表于 2014-5-20 18:18
我的目的是让它寻到黑线以后左右转,然后同时测距,但是结果它虽然可以循线,但是有好大的延迟 ...

问题是你有没有对输入的信号进行处理,假如走到边上,输入的信号本身就不稳定,你又没做任何滤波处理,那么就会振荡。

还有你对其信号采集用了外部中断,本身也存在很大的干扰,不知道你有没有处理,一个小的外部干扰或电源干扰等都会进入中断

你可以试下直接用IO口读取,这样作消抖或滤波也相对容易些

先跑稳定,再加其他功能
页: [1]
查看完整版本: 我的循线程序为什么不能正常执行呢?