📄 readfront.c
字号:
#include "config.h"
void ReadFront(unsigned char channel,unsigned char count)
{
unsigned char i , j = 250;
unsigned int k;
//INTCONbits.GIE=1; //开禁止总中断
TMR0L=0X00;//开始记时
INTCONbits.TMR0IF=0;
ClrWdt( );
k=15;
while(k--);
//到此550US
if(SEN)
{
TimeTemp[channel][count]=TMR0L;//无探头
// switch( channel )
// {
// case 5:
// SensorAbnormal.Bit.FrontLeft = 1;
// break;
// case 4:
// SensorAbnormal.Bit.FrontRight = 1;
// break;
// case 3:
// SensorAbnormal.Bit.BackLeft = 1;
// break;
// case 2:
// SensorAbnormal.Bit.BackRight = 1;
// break;
// case 1:
// case 0:
// SensorAbnormal.Bit.BackMiddle = 1;
// break;
// default:
// break;
// }
Alarm.Bit.NoSensor=1;
k=10; //10
while(--k);
if(SEN)
{
TimeTemp[channel][count]=TMR0L;//无探头
Alarm.Bit.NoSensor=1;
}
}
else Alarm.Bit.NoSensor=0;
k=10; //?? 延时
while(--k);
if(Alarm.Bit.NoSensor==0)//低电平进入,有探头
{
while(TMR0L<0x30)//0.4内等待高电平 0x30
{
TimeTemp[channel][count]=TMR0L;
if(SEN)
{
TimeTemp[channel][count]=TMR0L;
j=5;
while(--j);//52us
if(SEN) break;
}
}
while(TMR0L<=0x80) //0.64M等待低电平(0x76) 0x80
{
TimeTemp[channel][count]=TMR0L;
if( SEN == 0 )
{
TimeTemp[channel][count]=TMR0L;
j=10;
while(--j);
if(SEN==0) break;
}
}
}
Alarm.Bit.NoSensor=0;
// TXREG=TimeTemp[channel][count];
ClrWdt( );
while(1) //磨时间,耗完TMR2
{
if(INTCONbits.TMR0IF==1)
{
INTCONbits.TMR0IF=0; //TMR2溢出中断标志位
break;
}
}
ClrWdt( );
k = 825;
while(--k); //磨时间,凑够25MS
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -