![]() |
đọ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) { } } |
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à 11:09 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