Em đang làm đồ án môn học, mạch chống trộm bằng cảm biến siêu âm. Em tự thiết kế mạch và code thế này không biết nó có chạy không? Phiền mọi người cho ý kiến ^^

RB0 em đấu dây ra loa, tín hiệu mức 0 thì loa kêu. Loa em cấp 12V.

Code:
#include <16F887.h>
#include <def_877a.h>
#device *=16 adc=10
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT
#use delay(clock=20000000)
#include <string.h>
#define mod RD2
#define TRIGGER pin_d0 //chan phat song sieu am
//chan ECHO nhan tin hieu ve noi vao RC2
float dist,getvar;
int1 has_echo=0;
////////////////////////////////////////////////
#INT_CCP1
void ccp1_isr()
{
IF (input (pin_c2))
{
//Nếu là xung cạnh lên
set_timer1 (0); //Reset timer1 về 0
setup_ccp1 (CCP_CAPTURE_FE); //Chuyển Capture 1 đo cạnh xuống
}
ELSE
{
//Nếu là xung cạnh xuống
getvar=CCP_1; //Đọc giá trị timer 1
dist= (getvar*0.8)/58;
//Mổi 1 nhịp của timer 1 tương ứng vs 0.8 us, lấy us chia cho 58 ra cm
setup_ccp1 (CCP_CAPTURE_RE); //Chuyển Capture 1 đo xung lên
has_echo=1;
//disable_interrupts (INT_TIMER1);
}
}
//----Ngat timer 1----
#INT_TIMER1
void TIMER1_isr(VOID)
{
IF (has_echo==0)
{
has_echo=1;
//Tràn timer mà ko có echo thì cho wa (tối đa của SRF05 là 30ms, tràn timer là 52ms)
}
}
//----10us cho trigger----
void trig()
{
output_high (TRIGGER);
delay_us (10);
output_low (TRIGGER);
}
//------------
//-----------------------------------------------------------------
void main()
{
TRISC=0xff;
TRISB=0;
TRISD=0;
//Khoi tao cho ngat ngoai
setup_timer_1 (T1_INTERNAL|T1_DIV_BY_4);
//20 MHz thì tràn trong 52ms (tối đa xung của SRF05 là 30ms)
setup_ccp1 (CCP_CAPTURE_RE); //Thiet lap Capture 1 đo canh lên
enable_interrupts (INT_TIMER1); //Ngat timer 1, đe phong trưong hop ko có echo
enable_interrupts (INT_CCP1); //Ngat Capture 1
enable_interrupts (GLOBAL);
WHILE (TRUE)
{
has_echo=0; //Xác lap lai echo
trig ();//Trigger
WHILE (has_echo==0) {} //cho đến khi nhận het echo
IF (dist>40&&dist<210)
{
RB0=0;
delay_ms (1);
RB0=1;
}
}
}


Comment