![]() |
|
Tài trợ cho PIC Vietnam |
Cơ bản về vi điều khiển và PIC Những bài hướng dẫn cơ bản nhất để làm quen với vi điều khiển PIC |
|
Ðiều Chỉnh | Xếp Bài |
![]() |
#14 |
Nhập môn đệ tử
Tham gia ngày: Dec 2012
Bài gửi: 5
: |
Chào các Anh,
Em tập viết đoạn code này, mà cái speed nó cứ trơ trơ, không xuất ra chân nào cả, thử biến pulse_Ne, thì nó cũng thế (không bằng 0, cũng không ra giá trị nào cả). Nhờ các anh chỉ giùm, bế tắt quá. Em cảm ơn rất nhiều //================================================== ====== // Ten chuong trinh : DEM XUNG Ne BANG NGAT NGOAI // Nguoi thuc hien : Minh_mse // Ngay thuc hien : …………. // Phien ban : 1.0 // Mo ta phan cung : Dung PIC16F887. Thach anh 20MHz // : Xung vuong Ne vao chan RB0 (External interrupt) // : Xuat thu so do toc do ra cac chan RD4-RD6 // : //================================================== ====== #include<16F887.h> #FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD,NOWRT #use delay(clock=20000000) int16 pulse_Ne; float speed; #int_EXT //Chuong trinh ngat ngoai duoc goi khi co tac dong o chan RB0 EXT_ISR() { ++pulse_Ne; } main() { while(1) { // Khoi tao ngat ngoai tai RB0 ext_int_edge(H_TO_L); // Ngat canh len RB0 enable_interrupts(INT_EXT); // Cho phep ngat ngoai enable_interrupts(GLOBAL); // Cho phép ngat toan cuc setup_timer_1 ( T1_INTERNAL | T1_DIV_BY_8 ); //Khoi tao bo dinh thoi gian dem xung-Dung dao dong noi //(20*10^6)/8=2.500 xung/ms set_timer1(3037); //Gia tri ban dau cho timer1 la 65.537-62500=3.037 //timer1 16bits se tran khi bang 65.537 enable_interrupts(INT_TIMER1); speed=pulse_Ne/(25*1000); //Tinh bang vong/giay //Lay mau 25ms/lan if (speed==0) output_high(PIN_D4); if ((speed>=1) | (speed<=2))output_high(PIN_D5); if (speed>3) output_high(PIN_D6); } } |
![]() |
![]() |
|
|