void PCA0_ISR (void) interrupt 11 //可编程计数阵列中断
{
static unsigned current_capture_value=0, previous_capture_value=0;
static unsigned int capture_period=0;
if (CCF0) //超声波测距
{
CCF0 = 0;
if (TEST_IN)
{
previous_capture_value = PCA0CP0;
}
else
{
current_capture_value = PCA0CP0;
capture_period = current_capture_value - previous_capture_value; // Update previous capture value with most recent info.
previous_capture_value = current_capture_value;
S = 0.36*capture_period/80;
}
}
else
{
PCA0CN &= ~0x86; //清除所有PCA中断
}
}
|