Page 756 - 2
P. 756
{
TCNT0 = 253; // 총 156 번을 세서 약 10us 마다 인터럽트가 발생된다.
if(is_working)
{
time++; // 약 10us 마다 1 씩 센다.
}
}
interrupt [EXT_INT1] void ext_int1_isr(void) // 센서에서 에코신호가 들어왔을 때의 처리 루틴
{
if(is_pulse)
{
is_working = 0; // 타이머 카운터의 카운팅을 종료한다.
EICRA = 0b00001100; // 인터럽트 1 을 상승엣지로 바꾸어 준다.
is_pulse = 0; // 센서의 에코핀에서 1 이 들어오고 있지 않음을 알린다.
is_ended = 1; // 센서의 동작이 종료되었음을 알려준다.
}
else
{
is_working = 1; // 타이머 카운터의 카운팅을 시작한다.
EICRA = 0b00001000; // 인터럽트 1 을 하강엣지로 바꾸어 준다.
is_pulse = 1; // 센서의 에코핀에서 1 이 들어오고 있음을 알린다.
}
}
void function_fnd(void) // fnd 를 키면서 대기하는 함수 동적, FND 를 사용하기 위한 함수이다.
{
for(fndtemp=0; fndtemp<5; fndtemp++)
{
PORTE = ~(0x00 | (1 << fndtemp));
PORTB = fnd[height[fndtemp]];
if(fndtemp == 2)
PORTB = fnd[height[fndtemp]] & (~0x40);
intech_delay_us(1);
}
- 756 -