![]() |
|
![]() |
#1 |
Đệ tử 3 túi
Tham gia ngày: Dec 2007
Bài gửi: 51
: |
giúp mình với!!!!
ai rành về counter xin chi mình cách thiết lập timer ở chế độ đếm?nếu có code thì tốt quá!!! có phải cứ có 1 xung đếm thì timer sẽ ngắt 1 lần? mình thử viết như thế này nhưng k thấy nó chạy j cả. Code:
#include "16F877A.h" // PIC16F877A header file #device 16F877A*=16 ADC=10 #include <defs_16F877A.h> #fuses HS, NOWDT, PUT, NOPROTECT, NOLVP // for debug mode #use delay(clock=8000000) // for 4Mhz crystal #use fast_io(b) int16 count0; int8 b0; /////////////////////////////////////////////////////////// #INT_TIMER0 TIMER0_ISR() { ++count0; if (count0==100) { count0=0; b0=b0+1;// dich trai a 1bit //portd=170; } if (b0==2) { b0=0; count0=0; //HTGT0=1; portb=0; //portd=252; disable_interrupts(int_timer0); } } ///////////////////////////////////////////////////////////////////// void main(void) { set_tris_a(255); // Chi co dau vao tuong tu set_tris_b(0); set_tris_d(0); portb=255; //portd=255; count0=b0=0; enable_interrupts(global); enable_interrupts(int_timer0); setup_TIMER_0(RTCC_EXT_L_TO_H ); setup_COUNTERS(RTCC_EXT_L_TO_H,RTCC_DIV_2); set_TIMER0(1); while(true) { } } |
![]() |
![]() |
![]() |
#2 |
Đệ tử 4 túi
|
có lẽ là do đoạn code trên bạn ạ. bạn nhầm tại câu lệnh "disable_interrupts(int_timer0);" có phải bạn muốn xóa cờ ngắt cho lần tiếp theo nhưng câu lệnh trên là xóa bit enable cho ngắt timer0. bạn đọc kĩ lại help CCS C và datasheet của 877a nhé. xem mình có đúng ý bạn ko!! good luck!!
|
![]() |
![]() |
![]() |
|
|