PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   Điều khiển (http://www.picvietnam.com/forum/forumdisplay.php?f=21)
-   -   đọc encorder trên pic 16f877a (http://www.picvietnam.com/forum/showthread.php?t=11383)

vuliemtd 05-10-2011 05:36 PM

đọc encorder trên pic 16f877a
 
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.


Múi giờ GMT. Hiện tại là 09:21 PM.

Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam