PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > PIC - Thiết kế và Ứng dụng

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Bài Trong Ngày Vi điều khiển

PIC - Thiết kế và Ứng dụng Ý tưởng cho các sản phẩm sử dụng PIC/dsPIC và các sản phẩm của Microchip

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 09-05-2011, 10:00 PM   #1
shindo216
Nhập môn đệ tử
 
Tham gia ngày: May 2010
Bài gửi: 9
:
mình có mấy file này bạn đọc tham khảo
File Kèm Theo
File Type: rar i2c.rar (876.2 KB, 255 lần tải)
shindo216 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 10-05-2011, 10:22 AM   #2
phanhoangag
Đệ tử 1 túi
 
Tham gia ngày: Mar 2011
Bài gửi: 17
:
Red face Giup!!!!

xoa doan khoi tao nap vao chay binh thuong.Nhung tat nguon wa ngay sao cap nguon lai no laj nhay lun tung lai fai khoi tao lai thi no moi chay.minh co su dung pin cmos lam nguon nuoi rui.
Co ban noi the nay:
bẫy DS : Đặt lệnh ghi vào d/c 0x08 ngay trong hàm khởi tạo DS.
Trong hàm Main() thì kiểm tra lại d/c 0x08 xem có còn duy trì giá trị đó không. Nếu không còn tức là các thông số thời giờ trong DS cũng đã sai, phải cho khởi tạo lại DS. Nếu còn thì bỏ qua bước khởi tạo

READ_DS(); //Đọc ds1307, có đọc X = giá trị lưu tại 0x08 (0x08 chứa 0xff)
if (X != 0xff) SET_DS(); //Nếu khác 0xff thì Khởi tạo DS1307, có ghi vào 0x08 giá trị 0xff
---------------------------------------------------------------------
VD:

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();
}
}

với các hàm do người dùng tự định nghĩa (nếu nắm được nguyên tắc I2C thì thật dễ dàng):
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():

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....
}
}

minh k hieu lam co ai giup minh voi!!!!!!!!!!!!!!!!!!!!
phanhoangag vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lời


Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến


Múi giờ GMT. Hiện tại là 08:47 AM.


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam