|
Tài trợ cho PIC Vietnam |
PIC - Thiết kế và Ứng dụng Ý tưởng cho các sản phẩm sử dụng PIC/dsPIC và các sản phẩm của Microchip |
|
Ðiều Chỉnh | Xếp Bài |
31-10-2012, 11:42 AM | #3 | |
Nhập môn đệ tử
Tham gia ngày: Aug 2011
Bài gửi: 7
: |
Trích:
//nguyen van duc //KS tu dong hoa //cong thuc tinh thoi gian T= (65536-VALUE)*(4/Fosc)*P #include <16F877A.h> #include <def_877a.h> #FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT,NOLVP, NOCPD, NOWRT #use delay(clock=20000000) #use fast_io(d)//Dùng cái này thì trong chu+o+ng trình khi dùng các le^.nh io nhu+ output_low() , . . . nó se~ set chi? vo+'i 1 le^.nh , #use fast_io(b) #use fast_io(a) int16 thoigiantruyen,CCP1value; int16 CCP1Oldvalue; BOOLEAN CCP1Captured; int8 hangdonvi,hangchuc,hangtram; int16 ketqua; int8 i,k; #INT_CCP1 void ngat_ccp1() { set_timer1(0); } #INT_CCP2 void ngat_ccp2() { CCP1Value =CCP_2; CCP_2=0; CCP1Captured = TRUE; //j=0; } #INT_TIMER0 void interrup_timer0() {i++; set_timer0(8); if(i==5){ output_d(hangtram); output_high(pin_d5); } if(i==10){ output_d(hangchuc); output_high(pin_d6);} if(i==15){ output_d(hangdonvi); output_high(pin_d7);} if(i>=16){i=0;} } void triger() { output_high(PIN_A0); delay_us(12); output_low(PIN_A0); } void init_ccp() { setup_ccp1(CCP_capture_RE);//do xung canh len R setup_ccp2(CCP_capture_FE); setup_timer_1(T1_INTERNAL|T1_DIV_BY_4); //tang mot gia tri timer1 mat 4/5uS setup_timer_0(RTCC_INTERNAL|RTCC_DIV_32); CCP1value=0; CCP1Oldvalue=0; CCP1Captured=TRUE; enable_interrupts(INT_CCP1); enable_interrupts(INT_CCP2); enable_interrupts(INT_TIMER0); enable_interrupts(GLOBAL); } void Main() { init_ccp(); set_tris_d(0x00); set_tris_b(0x00); set_tris_c(0xff); //ff xac lap cac chan port C la chan input set_tris_a(0x00); set_timer0(8); while(true){ delay_ms(100); triger(); if(CCP1Captured){ thoigiantruyen=CCP1value*0.8; ketqua=thoigiantruyen/58; CCP1Captured=FALSE; if(ketqua>999){hangdonvi=0;hangchuc=0;hangtram=0;} else{ hangdonvi=ketqua%10; hangchuc=(ketqua/10)%10; hangtram=(ketqua/100); } } if(ketqua<175){output_high(PIN_A1); delay_ms(500); k=0;} k++; if(k>=5){ output_low(PIN_A1); delay_ms(500); k=0; } } } |
|
|
|