|
// Global variables for falling_edge()
unsigned char last_value;
unsigned char current_value;
// Function to define falling edge of signal (1 -> 0)
unsigned char falling_edge (unsigned char signal)
{
last_value=current_value; // Save old value
current_value=signal; // Get new value
// Return true for last == 1 & current == 0 -> falling edge
// For rising edge: (last + current) & current
return((last_value + current_value) & last_value);
}
...
// wait for falling edge of timing_mark
while (!falling_edge(timing_mark));
Работает быстрей, чем через прерывания по фронту, если еще МК такое позволяет. А если без Function(), через do...while, то цикл укладывается в 8 команд.
Успехов.
E-mail: info@telesys.ru