19-03-2010, 09:54 PM | #2 |
Đệ tử 1 túi
Tham gia ngày: Jan 2008
Bài gửi: 15
: |
chỉ giúp với:
minh viết code đọc 2encorder dùng timer1 và timer2 ở chế độ cuonter, nhưng timer1 đọc được còn timer2 không đọc được. ko biết có sai code ko #include <16f877a.h> #fuses NOWDT,NOPROTECT,XT,NOLVP #use delay(clock=4000000) #include <LCD.c> #define interr_per_second 20//khi set_timer1(15535)timer 1 16 bit=>65535-15535=50.000us #define interr_per_100ms 2//khi set_timer1(15535) int8 timer1over,duty_cycle,dem=0,c; int16 so_vong,count,count1; char mang[5]; int1 flag; #int_rtcc void interrupt_timer0()//dem so xung encoder { ++count; } #int_timer1 // ngat timer 1 khi timer 1 tran void interrupt_timer1() { ++count1; } void main () { lcd_init(); delay_ms(100); set_tris_a(0xff); //cho port a la port thu, su dung chan RA4 set_tris_b(0x01); output_b(0x01); //tao muc cao cho ngat ngoai set_tris_c(0x01); // enable cac timer setup_timer_0(rtcc_div_1|rtcc_ext_h_to_l); // timer 0 lam couter set_timer0(0); // gia tri dau timer 0 setup_timer_1(t1_external|t1_div_by_1); // timer1 lam counter set_timer1(0); / // configue cac ngat enable_interrupts(global); //cho phep ngat enable_interrupts(int_rtcc); // ngat timer 0 enable_interrupts(int_timer1); // ngat timer 1 ext_int_edge(h_to_l); while(true) { lcd_gotoxy(1,1); printf(lcd_putc,"so vong1:%ld",count); lcd_gotoxy(1,2); printf(lcd_putc,"so vong1:%ld",count1); } } |
|
|