PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Các ngôn ngữ lập trình khác (CCS C, HT PIC,...)

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

 
 
Ðiều Chỉnh Xếp Bài
Prev Previous Post   Next Post Next
Old 12-09-2013, 08:14 AM   #1
loveboom3012
Đệ tử 1 túi
 
Tham gia ngày: Jun 2011
Bài gửi: 18
:
Unhappy [giao tiếp I2C] RTC DS1307 và PIC 16f887 không chạy

mình đang làm lab i2c với PIC 16f887 , gặp rắc rối ở phần lấy data từ ds1307 đưa vào PIC xử lí, mọi người giúp mình với, trên 6 led 7 đoạn toàn hiển thị số 0
code của mình đây
Code:
#include <htc.h>
#include "i2c.h"
#include "lcd.h"
__CONFIG(FOSC_XT & WDTE_OFF & PWRTE_ON & MCLRE_ON & CP_OFF & BOREN_OFF & IESO_OFF & FCMEN_OFF & LVP_OFF & DEBUG_OFF); //1st config. Word
__CONFIG(BOR4V_BOR21V); 
#define _XTAL_FREQ 4000000
#define SLAVER_ADD 0X68
#define READ 1
#define WRITE 0
#define led_gio_c RD5
#define led_gio_dv RD4
#define led_phut_c RD3
#define led_phut_dv RD2
#define led_giay_c RD1
#define led_giay_dv RD0
int gio_c,gio_dv,phut_c,phut_dv,giay_c,giay_dv;
int giay,phut,gio,i;
unsigned char mgio_c,mgio_dv,mphut_c,mphut_dv,mgiay_c,mgiay_dv;
const unsigned char ma[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
void ds1307_init();
void read_ds1307();
void ds1307_init()
{
	i2c_start();
	i2c_write((SLAVER_ADD<<1)|WRITE); // ~ i2c_write(0xd0)
	i2c_write(0x00);
	i2c_stop();
}
void read_ds1307()
{
	i2c_start();
	i2c_write((SLAVER_ADD<<1)|WRITE); // ~ i2c_write(0xd0)
	i2c_write(0x00);
	i2c_stop();
	i2c_stop(); //restart
	i2c_write((SLAVER_ADD<<1)|READ); // ~i2c_write(0xd1);
	giay=i2c_read(0);
	phut=i2c_read(0);
	gio=i2c_read(1);
	i2c_stop();	
}
void update_time()
{
	giay_dv=giay&0x0f;
	giay_c=(giay&0xf0)>>4;
	phut_dv=phut&0x0f;
	phut_c=(phut&0xf0)>>4;
	gio_dv=giay&0x0f;
	gio_c=(giay&0xf0)>>4;
	mgiay_dv=ma[giay_dv];
	mgiay_c=ma[giay_c];
	mphut_dv=ma[phut_dv];
	mphut_c=ma[phut_c];
	mgio_dv=ma[gio_dv];
	mgio_c=ma[gio_c];
}
void hienthi()
{
	for(i=0;i<5;i++)
	{
		PORTB=mgiay_dv; led_giay_dv=0; __delay_us(100);led_giay_dv=1;
		PORTB=mgiay_c; led_giay_c=0; __delay_us(100);led_giay_c=1;	
		PORTB=mphut_dv; led_phut_dv=0; __delay_us(100);led_phut_dv=1;
		PORTB=mphut_c; led_phut_c=0; __delay_us(100);led_phut_c=1;	
		PORTB=mgio_dv; led_gio_dv=0; __delay_us(100);led_gio_dv=1;
		PORTB=mgio_c; led_gio_c=0; __delay_us(100);led_gio_c=1;			
	}
}
void main()
{
	ANSEL=0;
	ANSELH=0;
	TRISB=0X00;
	TRISD=0X00;
	i2c_init();
	ds1307_init();
	while(1)
	{
		read_ds1307();
		update_time();
		hienthi();
	}
}
loveboom3012 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
 


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à 05:31 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