智能车制作
标题:
程序求助(程序中有部分注解)
[打印本页]
作者:
ybcqujx
时间:
2013-1-18 11:41
标题:
程序求助(程序中有部分注解)
我是要实现一个超声波测距的程序。我的思想是:当回波引脚变为高电平时,输出回响信号,同时定时器开始计时,当检测到回响信号时,此时相当于收到了外部中断,进入中断程序,在中断程序中读取此时TCNT的值,就可以算出定时时间,也就算出了要测的距离。此时程序又加到主程序中,在主程序中,我就是问可不可以里面再设定像while(TCNT<330)类似的式子来关闭定时器,关闭后让程序重新循环后让定时器重新开始计时,这样主要是利于我重新测距,也就是利于我重新在中断程序中读取TCNT值,好不断地测距离。我的这部分程序如下:但是我的程序编译通过不了,老是显示Error:C2801:'}' missing。我也检查不出错误是什么。希望知道的指点我下,谢谢。
#include <hidef.h> /* common defines and macros */
#include "derivative.h" /* derivative-specific definitions */
#define uint unsigned int
#define uchar unsigned char
#define TX PTM_PTM0; //定义TX口,此口用来接收一个10us以上的高电平,在下面我写的是20us,肯定达到要求了
#define RX PTT_PTT7; //定义RX口,此口用来接收外部中断
#define light PTM_PTM2;
uint outcomeH,outcomeL,distance;
void delay_20us();
void delay_20us() //延时20us,可能不是很精确,但是肯定超过了10us。
{
uchar bt ;
for(bt=0;bt<100;bt++);
}
void main(void)
{
/* put your own codDisableInterrupts;e here */
while(1)
{
DisableInterrupts; //关中断
TX=1; //给PTM_PTM0一个高电平
delay_20us();
TX=0; //持续20us后变为低电平,此用来触发内部模块发出激励信号
while(RX==0); //发出激励信号后,内部就会发出超声波信号,在这里就是等待是否发出超声波信号,没收到,一直等待,收到了退出循环,进入下面的程序
TSCR2=0x07;
TIOS=0xBF; //定时器通道6为IC方式
TCTL3=0x20;
TFLG1=0x40;
TIE=0x40;
TSCR1=0x80;
TIOS=0x00;
TCTL1=0x00;
TFLG1=0x80;
TIE=0x80;
TC7=0x0160; //设定TCNT的最大值是352
TSCR1=0x90;
EnableInterrupts; //开中断
while(TCNT<330); //这里就是我用来关闭定时器的,当计数值超过330时,就跳出这个while循环,从而进入大循环,来重新让TCNT来从0开始计数,这里我也有疑问,TCNT能关闭和通过软件来使它重新从0开始计数吗?
}
}
#pragma CODE_SEG NON_BANKED
interrupt 14 void Timer6_ISR()
{
outcomeH=TCNTH; //读取TCNT的高8位
outcomeL=TCNTL; //读取TCNT的低8位
distance=outcomeH;
distance<<=8;
distance=distance|outcomeL; //通过这些运算得到dsitance的值
if(distance<295) //这个295的值是我通过计算折算出来的,也就是相当于40CM的距离,当大于这个值时,小车会停止或其他动作。
light=1; // 小灯亮来指示我们小车距前方物体小于40CM了
DisableInterrupts; //关中断
}
作者:
mxj1005071012
时间:
2013-1-18 11:58
看晕了
作者:
青龙00
时间:
2013-1-18 13:08
:lol:lol
作者:
skyangel2010
时间:
2013-1-18 14:47
本帖最后由 skyangel2010 于 2013-1-18 14:50 编辑
你可以测试一次,开关一次定时器中断就行了啊,何必那么麻烦
作者:
ybcqujx
时间:
2013-1-18 19:35
skyangel2010 发表于 2013-1-18 14:47
你可以测试一次,开关一次定时器中断就行了啊,何必那么麻烦
请问你写过没,写过的话写一个后通过编译后让我参考下行吗?呵呵
欢迎光临 智能车制作 (http://dns.znczz.com/)
Powered by Discuz! X3.2