智能车制作
标题:
程序求助
[打印本页]
作者:
ybcqujx
时间:
2013-1-18 11:17
标题:
程序求助
我是要实现一个超声波测距的程序。我的思想是:当回波引脚变为高电平时,输出回响信号,同时定时器开始计时,当检测到回响信号时,此时相当于收到了外部中断,进入中断程序,在中断程序中读取此时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;
#define RX PTT_PTT7;
#define light PTM_PTM2;
uint outcomeH,outcomeL,distance;
void delay_20us();
void delay_20us()
{
uchar bt ;
for(bt=0;bt<100;bt++);
}
void main(void)
{
/* put your own codDisableInterrupts;e here */
while(1)
{
DisableInterrupts;
TX=1;
delay_20us();
TX=0;
while(RX==0);
TSCR2=0x07;
TIOS=0xBF;
TCTL3=0x20;
TFLG1=0x40;
TIE=0x40;
TSCR1=0x80;
TIOS=0x00;
TCTL1=0x00;
TFLG1=0x80;
TIE=0x80;
TC7=0x0150;
TSCR1=0x90;
EnableInterrupts;
while(TCNT<330);
}
}
#pragma CODE_SEG NON_BANKED
interrupt 14 void Timer6_ISR()
{
outcomeH=TCNTH;
outcomeL=TCNTL;
distance=outcomeH;
distance<<=8;
distance=distance|outcomeL;
if(distance>295)
light=1;
DisableInterrupts;
}
欢迎光临 智能车制作 (http://111.231.132.190/)
Powered by Discuz! X3.2