Trích:
Nguyên văn bởi lequocbao
#int_timer1
void timer1_ext_isr(void)
{
count++;
rpm++;
}
void main()
{
set_tris_a(0x00);
set_tris_b(0x01);
set_tris_c(0x8f);
set_tris_e(0xff);
set_tris_d(0x00);
set_timer1(65335);//200xung=65535-65335
setup_timer_1(T1_EXTERNAL);
enable_interrupts(int_timer1);
ENABLE_INTERRUPTS(GLOBAL);
count=0;
rpm=0;
while(TRUE)
{
led_scan(count/100,led5);
led_scan((count/10)%10,led6);
led_scan(count%10,led7);
led_scan(rpm/1000,led1);
led_scan((rpm/100)%10,led2);
led_scan((rpm%100)/10,led3);
led_scan((rpm%100)%10,led4);
}
}
Encoder nối RC0 :200xung/vòng nhưng sao mình thấy động cơ quay cả chục vòng thì 2 biến count,rpm mới tăng lên 1 đơn vị.Có bác nào biết tại sao không?
|
Bạn có thể cho biết bạn dùng loại Encoder nào ko? có một số em encoder bạn phải dùng trở kéo ở mức 1 (5V) . bạn có thể thử đo lại xem em của bạn có thể tự lên mức 1 được chưa?