![]() |
|
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 |
![]() |
#11 |
Đệ tử 6 túi
Tham gia ngày: Jul 2006
Bài gửi: 135
: |
ví dụ hàm khởi tạo cho DS1307 tôi trích ra trong 1 project trước kia của tôi (do ưu tiên giao tiếp SPI cho MMC nên tôi thiết lập giao tiếp I2C bằng phần mềm, trình biên dịch MikroC)
Code:
void RTC_init() { unsigned char i,RTC_flag; // dat ba^~y DS1307 RTC_flag = RTC_get(0x08); // doc gia tri tại địa chỉ 0x08 của DS1307 . if(RTCflag!=0xFF) // neu ko phai 0xFF { RTC_setdate(0x21,0x07,0x08); // thi khoi tao gia tri cho DS1307 RTC_settime(0x14,0x30,0x00); Soft_I2C_Start(); // dat cau hinh cho DS Soft_I2C_Write(RTC_ID); Soft_I2C_Write(0x07); //dat con tro tai vi tri nay Soft_I2C_Write(0x10); // tao xung 1Hz tai chan so 7. Soft_I2C_Write(0xFF); // ghi giá trị 0xFF vào ô nhớ có địa chỉ 0x08; Soft_I2C_Stop(); } } unsigned char RTC_get(unsigned char addr); RTC_settime(unsigned char hh, unsigned char mm, unsigned char ss); RTC_setdate(unsigned char dd, unsigned char mm, unsigned char yy); - khi đó, trong hàm main(): Code:
void main() { // thiet lap PORT cho PIC // thiet lap gia tri cho cac thanh ghi chuc nang khac, v.v... RTC_init(); // goi ham khoi tao DS1307 - da co "trap". // cac ham khac .... while (1) { // hien thi hoac cac cong viec khac.... } } Thực tình, việc bẫy này cũng chỉ "khá" hiệu quả thôi. Tôi cung ko hiểu tại sao lâu lâu con DS1307 bị treo (?), một ngày mà cúp điện chừng 3-4 lần là nó chạy "tào lao" thôi. Có lẽ bị sốc nguồn chăng?? |
![]() |
![]() |
|
|