code này hình như sau 256*2 = 512 xung thì timer 0 mới tràn. lúc đó nó mới tính biến encoder1 +1 hay -1.
Bạn nên dùng ngắt ngoài RB0 hoặc ngắt port B để đọc encoder cho dễ!
ví dụ ngắt ngoài( chân A encoder nối với RB0)
#include <16f887.h>
#device *=16
#use delay(clock=20000000)
#fuses HS
int count;
#int_EXT
void EXT_isr(void)
{
count++;
}
void main()
{
enable_interrupts(GLOBAL);
enable_interrupts(INT_EXT);
}
|