![]() |
|
Tài trợ cho PIC Vietnam |
Cảm biến Camera, siêu âm, hồng ngoại, gyro, la bàn... |
|
Ðiều Chỉnh | Xếp Bài |
![]() |
#5 | |
Nhập môn đệ tử
Tham gia ngày: Mar 2010
Bài gửi: 1
: |
srf05
Trích:
#include <16F877.h> #include <defs_16f877a.h> #fuses HS,NOWDT,NOPROTECT,NOLVP #device *=16 #use delay(clock=20000000) #include <lcd_lib_4bit.c> #define led1 pin_E1 #define button pin_B1 #define TRIGGER pin_B4// chan phat song sieu am //chan ECHO nhan tin hieu ve noi vao RC2 #BYTE TRISC=0X87 #BYTE PORTC=0X07 #BIT RC2=0X7.2 float dist,getvar ; int1 has_echo=0,echo=0; //////////////////////////////////////////////// #int_CCP1 void ccp1_isr() { setup_ccp1(CCP_CAPTURE_RE);//thiet lap Capture CCP1 do xung canh len enable_interrupts(INT_CCP1);//cho phep ngat khi ccp1 co tin hieu enable_interrupts(GLOBAL); if(pin_c2) set_timer1(1000); //reset timer1 ve 0 setup_ccp1(CCP_CAPTURE_FE); //chuyen sang do xung canh xuong if(!pin_c2);//khi co xung canh xuong getvar=get_timer1(); //doc gia tri timer1 ngay khi co xung echo canh xuong dist=(getvar-485)/28.3; //so lieu dua theo ket qua do thuc te dist=getvar; } //----10us cho trigger---- void trig() { output_high(TRIGGER); delay_us(10); output_low(TRIGGER); } void main() { SET_TRIS_A(0x00); // Port A output SET_TRIS_B(0X00); SET_TRIS_E(0x00); SET_TRIS_C(0xff); SET_TRIS_D(0b00000011); lcd_init(); while(1) { trig(); ccp1_isr(); lcd_putcmd(0x01); printf(lcd_putchar,"dist=%6.1f",dist); lcd_putchar("cm"); delay_ms(1000); } } lcd chỉ hiển thị số 0. em chưa biêt sai chỗ nào cả |
|
![]() |
![]() |
Ðiều Chỉnh | |
Xếp Bài | |
|
|