Em muốn dùng encoder đo tốc độ động cỏ,nhưng k hiểu sao đoạn code em viết k chạy, mặc dù đã tham khảo nhiều tài liệu rùi.Mong mọi người xem dùm.
Timer0 để đếm xung
Timer1 để định ra khoảng thời gian 1s
Nhưng k hiểu sao hiển thị ra toàn la 0000. Em đảm bảo phần hiển thị của em đúng vì em đã đi hỏi và test rồi.Mọi người giúp dùm nha.Code của nó đây:
Đây là phần mô phỏng đi kèm,không rõ encoder em nối đúng k,nhưng mà thử nhiều vẫn k được
Timer0 để đếm xung
Timer1 để định ra khoảng thời gian 1s
Nhưng k hiểu sao hiển thị ra toàn la 0000. Em đảm bảo phần hiển thị của em đúng vì em đã đi hỏi và test rồi.Mọi người giúp dùm nha.Code của nó đây:
Code:
#include "D:\pro2\vd\lcd1.h" #include "def_877a.h" #include<lcd_lib_4bit.c> #use delay(clock=20000000) int8 nghin,tram,chuc,donvi; void tinhtoan_hienthi(int16 x); int16 count,so_vong,int_count1,x; #define INTS_PER_SECOND1 19 #int_rtcc // Ngat Timer 0 void Timer0_isr() // Dem so vong quay dong co { count++; } #INT_TIMER1 // Chuong trinh ngat Timer 1 void Timer11_isr() { // Ham duoc goi khi TImer1 tran (65535->0) // Xap xi 19 lan / giay if(--int_count1==0) { int_count1 = INTS_PER_SECOND1; so_vong = (count*255 + get_timer0())/100; count = 0; set_timer0(0); } } void tinhtoan_hienthi(int16 x) // thuc hien tach so va dua ra hien thi luon {nghin = x / 1000 + 0x30; x = x % 1000; tram = x / 100 + 0x30; // tách s? hàng tram x = x % 100; // chia l?y ph?n d? chuc = x / 10 + 0x30; // tách l?y ph?n ch?c donvi = x % 10 + 0x30; // ph?n don v? lcd_putcmd(0xC0); printf(lcd_putchar,"toc do="); lcd_putchar(nghin); lcd_putchar(tram); lcd_putchar(chuc); lcd_putchar(donvi); } void init() { lcd_putcmd(0x80); int_count1 = INTS_PER_SECOND1;//19 lan 1 giay setup_timer_0 (RTCC_DIV_1|RTCC_EXT_H_TO_L); // Timer0 is Counter set_timer0(0); set_timer1(0); setup_timer_1(T1_INTERNAL | T1_DIV_BY_4); // Timer1 is Timer enable_interrupts(INT_RTCC); enable_interrupts(INT_TIMER1); enable_interrupts(INT_RDA); enable_interrupts(GLOBAL); count = 0; lcd_init(); delay_ms(200); printf(lcd_putchar,"toc do dong co"); } void main() {init(); //setup_adc_ports(NO_ANALOGS); //setup_adc(ADC_OFF); //setup_psp(PSP_DISABLED); //setup_spi(FALSE); so_vong = 0;// khoi tao gia tri while(1) // doan chuong trinh hien thi len LCD { tinhtoan_hienthi(so_vong); delay_ms(500); } }
Đây là phần mô phỏng đi kèm,không rõ encoder em nối đúng k,nhưng mà thử nhiều vẫn k được
Comment