|
Tài trợ cho PIC Vietnam |
Cơ bản về vi điều khiển và PIC Những bài hướng dẫn cơ bản nhất để làm quen với vi điều khiển PIC |
|
Ðiều Chỉnh | Xếp Bài |
16-03-2008, 01:33 PM | #10 |
Đệ tử 2 túi
Tham gia ngày: Dec 2006
Nơi Cư Ngụ: HN
Bài gửi: 39
: |
Sáng nay đọc thêm về timer nên đã làm 2 code, một dùng ds1307 và một chỉ dùng timer
dùng timer1 tạo ngắt, rồi đếm system clock (chứ không phải đếm số lần interrupt nên chính xác hơn) cho 1s lại update ds1307 một lần, Có vẻ tốt hơn rồi Đồng thời làm thêm đồng hồ số dựa trên timer, cho ra giá trị đúng 1s, em đang test rồi. cả hai cái đều chưa phát hiện thêm bug. Sai số phần lớn do XTAL Dùng timer như vậy có lợi thế nhỏ gọn hơn nhưng không có pin backup nên mất điện thì setup lại. Code:
#define XTAL_FREQUENCY 20000000 #use delay(clock=XTAL_FREQUENCY) #define TIMER1_FREQUENCY (XTAL_FREQUENCY / 4) //TIMER1_F =5000000 Code:
ticker = TIMER1_FREQUENCY; Code:
#int_TIMER1 void TIMER1_isr() { ticker -= 65536; // Decrement ticker by clocks per interrupt if ( ticker < 65536 ) // If second has expired~76 TIMES { ticker += TIMER1_FREQUENCY; // Increment ticker by clocks per second sec++; // Increment number of seconds }} Thanks PS: lần sau em sẽ rút kinh nghiệm không post code dài nữa ạ để tránh người đọc topic thấy chán ngán thay đổi nội dung bởi: HTAluvBeBeo, 16-03-2008 lúc 01:49 PM. |
|
|