View Single Post
Old 16-03-2008, 01:33 PM   #10
HTAluvBeBeo
Đệ 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
  }}
Em vẫn muôns hỏi thêm về cách làm cho led 7T hiển thị tăng giảm độ sáng được ạ
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.
HTAluvBeBeo vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn