Beruflich Dokumente
Kultur Dokumente
#include<pic.h>
#include"lcd.h"
__CONFIG( FOSC_HS & WDTE_OFF & PWRTE_OFF & CP_OFF & BOREN_ON & LVP_OFF & CPD_OFF &
WRT_OFF & DEBUG_OFF);
void rtc_int();
void rtc_start();
void rtc_stop();
void rtc_ack();
void rtc_nak();
void rtc_res();
void rtc_send(unsigned char a);
void rtc_send_byte(unsigned char addr,unsigned char data);
unsigned char rtc_read();
unsigned char rtc_read_byte(unsigned char addr);
void waitmssp();
unsigned char convup(unsigned char bcd);
unsigned char convd(unsigned char bcd);
void main()
{
lcd_init();
show("Time:");
cmd(0xc0);
show("Date:");
rtc_int();
while(1) {
sec =rtc_read_byte(0x00);
min =rtc_read_byte(0x01);
hour =rtc_read_byte(0x02);
day =rtc_read_byte(0x03);
date =rtc_read_byte(0x04);
month=rtc_read_byte(0x05);
year =rtc_read_byte(0x06);
cmd(0x85);
dat(convup(hour));
dat(convd(hour));
dat(':');
dat(convup(min));
dat(convd(min));
dat(':');
dat(convup(sec));
dat(convd(sec));
cmd(0xc5);
dat(convup(date));
dat(convd(date));
dat(':');
dat(convup(month));
dat(convd(month));
dat(':');
dat(convup(year));
dat(convd(year));
dat('/');
dat(convup(day));
dat(convd(day));
}
}
void rtc_int()
{
TRISC3=TRISC4=1;
SSPCON=0x28;
SSPADD= (((11059200/4)/100)-1);
}
void waitmssp()
{
while(!SSPIF); // SSPIF is zero while TXion is progress
SSPIF=0;
}
void rtc_start()
{
SEN=1;
waitmssp();
}
void rtc_stop()
{
PEN=1;
waitmssp();
}
void rtc_res()
{
RSEN=1;
waitmssp();
}
void rtc_ack()
{
ACKDT=0;
ACKEN=1;
waitmssp();
}
void rtc_nak()
{
ACKDT=1;
ACKEN=1;
waitmssp();
}