大神,请问51单片机控制的智能小车识别铁片后进入外部中断,停车2秒,然后继续前进。程序该怎么写?

大神,请问51单片机控制的智能小车识别铁片后进入外部中断,停车2秒,然后继续前进。程序该怎么写?,第1张

你在中断里面把flag=1进入主指老烂函数后flag一直保持1,而你中断的判断条件是if(flag==0&&P32==0),它就进不了中断了。你要想这么写的话可以改成这样含芹看看:

void INT_0() interrupt 0

{

flag==0;

if(flag==0)

{

P2=0x00 //小车停车

delayms(2000) //延时两秒

flag=1

}

}

或者干脆把if判断去了得了,(仅代表自己看法,我也不怎么唯漏懂啊)。自己多调试调试,肯定能做好的。

如果要测量精确一些的话,最好使用最高中断优先级的外中断0来检测。

HC-SR04的原理是:给TRIG保持至少10uS的高电平,如果检测到信号,会返回一个高电平,这个高电平的时间就是超声波从发射到返回的时间。

这样看来,如果一有高电平返回马上芹和拆触发外中断0,在服务函数里面马上启动定时器开始计时,直到电平跳变,立即停止计时,就会获得很精确的时间。

如果不用外中断的话,嫌枣你的检测ECHO端口电平的时间间隔必须非常短,但是这也不能保证电平跳变时你马上就可以开始计时,可能会稍后一点。

我前段时间自己设计了一个protues的超声波测距仿真,从上位机设置超声波发射棚谈到接收的时间间隔,完全克服了软件不能仿真超声波的问题。有兴趣可以发给你看看

智能车程序中一直显示error near=-=的意思是:

意思就是你用的引号附近有错,仔细检查一下。

用KEIL出现syntax error near '}'一般是缺少“;”

在“=”号附近有语法错误,双击该错误,光标会跳到该行,仔细检查这一行的上下行有没有错误,比如缺少“;”。

Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、链接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个袭物集成开发环境(μVision)将这些部分组合在一起。

运行Keil软件需要WIN98、NT、WIN2000、WINXP等 *** 作系统。如果你使用C语言编程,那么Keil几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。

Keil公司是一家业界领先的微控制器(MCU)软件开发工具的独立供应商。Keil公司由两家私人公司联合运营,分别是拍稿液德国慕尼黑的Keil Elektronik GmbH和美国德克萨斯的Keil Software Inc。Keil公司制造和销售种类广泛的开发工具,包括ANSI C编译器、宏汇编程序、调试器、连接器、库管理器、固件和实时 *** 作系统核心(real-time kernel)。

有超过10万名微控制器开发人员在使用这种得到业界认可的解决方案。其Keil C51编译器敬首自1988年引入市场以来成为事实上的行业标准,并支持超过500种8051变种。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12385892.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-23
下一篇2023-05-23

发表评论

登录后才能评论

评论列表(0条)

    保存