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);
}
}
|