|
楼主 |
发表于 2012-8-1 10:42:54
|
显示全部楼层
下面这两段代码分别是在timer.c和main.c中,在运行的时候都在使用计时器1,是否会相互影响?请高手帮忙看一下。- //timer.c
- void Timer_1(void) interrupt 3
- {
- static uint16 ms_count=0;
- TH1 = 0xA9;
- TL1 = 0x9A;
- if(ms_count++ >= 10) //10ms切换一次
- {
- ms_count = 0;
- if(rec_flag)
- {
- LED5 = ~LED5; //控制LED5在接收数据时闪烁
- }
- else
- {
- LED5 = 1; //不接收时常亮
- }
- }
- }
复制代码- //main.c
- uchar Get_Distance(void)
- {
- uint32 Distance = 0;
- Send_wave();
- TH1 = 0;
- TL1 = 0;
- while(TH1<256 && Echo!= 1);
- if(TH1 <= 256) //测距范围<0.5M
- {
- TH1 = 0;
- TL1 = 0;
- while(Echo == 1);
- Distance = TH1;
- Distance = Distance*256;
- Distance = Distance + TL1; //取得以ms为单位的时间值
- Distance = Distance * 17; //17mm/ms
- //Distance = Distance / 22118;
- return (uchar)(Distance); //&0xFF,这两行经过修改,已经可以动态返回距离值,但返回的值不稳定,也不正确,怀疑是上面那段代码在干扰。
- }
- }
复制代码 |
|