Tình hình là em đa sử dụng WINAVR để nạp cho AVR. Và em cũng đa nghiên cứu con DS1307. Search google thì thấy có thư viện DS1307.h có sẵn các hàm thao tác với Chip này. Nhưng mà tìm hoài trong thư mục chứa thư viện của WINAVR ko thấy có. Hình như là phải dùng trình nạp Codevision AVR mới có thư viện này đúng ko ạ. Cho em hỏi là em nếu em chép thư viện này qua WINAVR có chạy dc ko ạ. Nếu được thì bác nào cho em xin thư viện này nhá
Thông báo
Collapse
No announcement yet.
Thư viện DS1307.h
Collapse
X
-
có thể viết một thư viện co nó rồi add vào mục cài đặt đo, sau này code thì add vào và thao tác thôi, có thể tham khảo thư viện ds1307 của codevision rồi viết theo đúng cú pháp của winavr
đây là lib của nó trong cv
bạn dùng cv thì bản 2.5 trở lên phải ***** mới có hỗ trợ ds1307
chúc thành công
Code:/* CodeVisionAVR C Compiler (C) 1998-2010 Pavel Haiduc, HP InfoTech S.R.L. Dallas Semiconductors DS1307 I2C Bus Real Time Clock functions */ #include <bcd.h> #ifdef _ATXMEGA_DEVICE_ #include <twix.h> static TWI_MASTER_INFO_t *ptwi_master; void ds1307_twi_init(TWI_MASTER_INFO_t *ptwim) { ptwi_master=ptwim; } unsigned char rtc_read(unsigned char address) { unsigned char r; twi_master_trans(ptwi_master,0xd0>>1,&address,1,&r,1); return r; } void rtc_write(unsigned char address,unsigned char data) { unsigned char w[2]; w[0]=address; w[1]=data; twi_master_trans(ptwi_master,0xd0>>1,w,2,NULL,0); } void rtc_init(unsigned char rs,unsigned char sqwe,unsigned char out) { unsigned char w[2]; rs&=3; if (sqwe) rs|=0x10; if (out) rs|=0x80; w[0]=7; w[1]=rs; twi_master_trans(ptwi_master,0xd0>>1,w,2,NULL,0); } void rtc_get_time(unsigned char *hour,unsigned char *min,unsigned char *sec) { unsigned char w=0,r[3]; twi_master_trans(ptwi_master,0xd0>>1,&w,1,r,3); *sec=bcd2bin(r[0]); *min=bcd2bin(r[1]); *hour=bcd2bin(r[2]); } void rtc_set_time(unsigned char hour,unsigned char min,unsigned char sec) { unsigned char w[4]; w[0]=0; w[1]=bin2bcd(sec); w[2]=bin2bcd(min); w[3]=bin2bcd(hour); twi_master_trans(ptwi_master,0xd0>>1,w,4,NULL,0); } void rtc_get_date(unsigned char *date,unsigned char *month,unsigned char *year) { unsigned char w=4,r[3]; twi_master_trans(ptwi_master,0xd0>>1,&w,1,r,3); *date=bcd2bin(r[0]); *month=bcd2bin(r[1]); *year=bcd2bin(r[2]); } void rtc_set_date(unsigned char date,unsigned char month,unsigned char year) { unsigned char w[4]; w[0]=4; w[1]=bin2bcd(date); w[2]=bin2bcd(month); w[3]=bin2bcd(year); twi_master_trans(ptwi_master,0xd0>>1,w,4,NULL,0); } #else #include <i2c.h> unsigned char rtc_read(unsigned char address) { unsigned char data; i2c_start(); i2c_write(0xd0); i2c_write(address); i2c_start(); i2c_write(0xd1); data=i2c_read(0); i2c_stop(); return data; } void rtc_write(unsigned char address,unsigned char data) { i2c_start(); i2c_write(0xd0); i2c_write(address); i2c_write(data); i2c_stop(); } void rtc_init(unsigned char rs,unsigned char sqwe,unsigned char out) { rs&=3; if (sqwe) rs|=0x10; if (out) rs|=0x80; i2c_start(); i2c_write(0xd0); i2c_write(7); i2c_write(rs); i2c_stop(); } void rtc_get_time(unsigned char *hour,unsigned char *min,unsigned char *sec) { i2c_start(); i2c_write(0xd0); i2c_write(0); i2c_start(); i2c_write(0xd1); *sec=bcd2bin(i2c_read(1)); *min=bcd2bin(i2c_read(1)); *hour=bcd2bin(i2c_read(0)); i2c_stop(); } void rtc_set_time(unsigned char hour,unsigned char min,unsigned char sec) { i2c_start(); i2c_write(0xd0); i2c_write(0); i2c_write(bin2bcd(sec)); i2c_write(bin2bcd(min)); i2c_write(bin2bcd(hour)); i2c_stop(); } void rtc_get_date(unsigned char *date,unsigned char *month,unsigned char *year) { i2c_start(); i2c_write(0xd0); i2c_write(4); i2c_start(); i2c_write(0xd1); *date=bcd2bin(i2c_read(1)); *month=bcd2bin(i2c_read(1)); *year=bcd2bin(i2c_read(0)); i2c_stop(); } void rtc_set_date(unsigned char date,unsigned char month,unsigned char year) { i2c_start(); i2c_write(0xd0); i2c_write(4); i2c_write(bin2bcd(date)); i2c_write(bin2bcd(month)); i2c_write(bin2bcd(year)); i2c_stop(); } #endif
Comment
Bài viết mới nhất
Collapse
-
bởi FotiniChào mọi người.
Cấu trúc khung giàn của tôi sử dụng một động cơ servo tích hợp trên mỗi trục (https://www.oyostepper.es/category-8...integrado.html), với một dây nối đất chung.
Việc kích hoạt từng trục riêng lẻ hoạt động tốt, nhưng...-
Channel: Điện tử dành cho người mới bắt đầu
18-06-2026, 14:03 -
-
Trả lời cho Cấu hình chiến game "quốc dân" cho nền tảng AM5: Lựa chọn tối ưu ngân sách với Ryzen 5 7500Fbởi kumarbrMình đồng ý với hướng build AM5 bằng 7500F, nhưng nếu có thể cố thêm ngân sách thì nên lên RX 7600 ngay từ đầu. 4GB VRAM của RX 6500 XT bắt đầu khá chật với nhiều game mới, còn RX 7600 sẽ dùng thoải mái hơn trong vài năm tới.
-
Channel: Đánh giá sản phẩm DTVN
16-06-2026, 15:49 -
-
bởi theidiotcatTrong thời buổi vật giá leo thang, việc sắm một bộ máy tính chơi game đáp ứng đủ tiêu chí "ngon, bổ, rẻ" là ưu tiên hàng đầu của nhiều bạn trẻ. Lúc này, combo sử dụng vi xử lý AMD Ryzen 5 7500F kết hợp cùng card màn hình Radeon...
-
Channel: Đánh giá sản phẩm DTVN
16-06-2026, 10:16 -
-
bởi theidiotcatAMD Ryzen 9 9950X3D không chỉ là một bộ vi xử lý đơn thuần; nó là lời khẳng định về sức mạnh của kiến trúc Zen 5 kết hợp cùng công nghệ 3D V-Cache đột phá. Trong bối cảnh thị trường linh kiện PC cạnh tranh khốc liệt, đây được xem...
-
Channel: Đánh giá sản phẩm DTVN
15-06-2026, 09:21 -
-
bởi theidiotcatBộ đôi Ryzen 9 9950X3D2 và Radeon RX 9070 XT 16GB là sự kết hợp phần cứng cao cấp nhất của AMD hiện nay. Đây không chỉ là một dàn máy tính để giải trí thông thường, mà là công cụ làm việc mạnh mẽ dành cho những ai có nhu cầu xử lý cường...
-
Channel: Đánh giá sản phẩm DTVN
15-06-2026, 09:09 -
-
bởi theidiotcatKhi ráp một bộ máy tính cấu hình cao, việc cân đối ngân sách cho từng linh kiện là rất quan trọng. Sự kết hợp giữa vi xử lý AMD Ryzen thế hệ mới có công nghệ 3D V-Cache và card đồ họa Radeon RX 9070 XT đang là lựa chọn rất đáng tiền....
-
Channel: Đánh giá sản phẩm DTVN
11-06-2026, 10:43 -
-
Trả lời cho Yêu thơ mê nhạc, mời các bác vào đây!bởi dinhthuong92Giới thiệu bản nhạc đệm mới nhộn nhịp tươi vui, nghe là muốn... xuất gia đi tu liền!!!!😁...
-
Channel: Tâm tình dân kỹ thuật
11-06-2026, 09:51 -

Comment