PDA

View Full Version : đọc encorder trên pic 16f877a


vuliemtd
05-10-2011, 05:36 PM
mình vừa nghiên cứu họ vi điều khiển này. có viết một chương trình đọc số lần ngắt xảy ra trên chân RB0, ở đây mình giả tín hiệu là nút nhấn được nối xuống mass.Mình đã test thử, thấy kết quả đôi lúc bị nhảy mất 2,3 tín hiệu, ví dụ như xung số lần tác động đang là 15, mình nhấn nút bấm một lần nữa đã lên 16,17 luôn. mình đưa chương trình lên nhờ mọi người góp ý nha!


#include <16F877a.h>

#device *=16 //ADC=8
#use delay(clock = 20000000)
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7)

#INT_EXT

void ngat()
{
a=a+1;
printf("gia tri dem la : %u ", a);
delay_ms(20);
}

void main() {
set_tris_b(0x01);
enable_interrupts(global);
enable_interrupts(INT_EXT);// thiet lap ngat ngoai rb0
ext_int_edge(l_TO_h);
port_b_pullups(true);


while (TRUE)
{



}

}

quanghuy_125
07-01-2012, 01:11 AM
Bấm nút về âm như bạn nói thì không phải tín hiệu về âm ngay đâu.
Nút bấm có thể bị lẩy tạo da nhiều xung hài nhiễu. Thế lên lần bấm của bạn mới cho kết quả không đúng. Ngắt chỉ lên sử dụng cho tín hiệu chuẩn, không lên sử dụng đọc phím bấm.