#include "44b.h"
void ini_memory(void);
void ini_pllclock(void);
void ini_usart(void);
void read_time(void);
void send_time(void);
void ini_RTC(void);//函数声明
unsigned char buffer[13];//定义一数组用来存放向串口发送的时间数据
int n;//延时参数
char flag;
char i;
//***************************************
void ini_usart()
{
rPCONC=0x0f000000;
rPUPC=0x3000;
rUFCON1=0x0;//禁止使用FIFO
rUMCON1=0x0;//禁止使用FIFO
rULCON1=0x3;//正常无奇偶校验,一个停止位,8个数据位
rUCON1=0x45;//TX RX 都用PULSE非LEVEL中断
rUBRDIV1=21;//波特率115200bps
}
//****************************************
void ini_memory()//存储体配置
{
rBWSCON=0x11001100;
rBANKCON6=0x18000;
rBANKCON7=0x18000;
rREFRESH=(8<<20)+(4<<16)+1049;
rBANKCON0=0x7ff0;
rBANKCON1=0x7ff0;
rBANKCON2=0x7ff0;
rBANKCON3=0x7ff0;
rBANKCON4=0x7ff0;
rBANKCON5=0x7ff0;
}
//*****************************************
void ini_pllclock()//时钟设置
{
rLOCKTIME=0xfff;//默认值
rPLLCON=((88<<12)|(4<<4)|2);
rCLKCON=0x7ff8;//Fout=40MHZ
}
//*****************************************
void ini_RTC()
{
rRTCCON=0x01;
rRTCALM=0x0;//取消报警
rRTCRST=0x0;//取消循环复位
rBCDSEC=0x42;//时间赋初值
rBCDMIN=0x25;
rBCDHOUR=0x16;
rBCDDAY=0x28;
rBCDDATE=0x5;
rBCDMON=0x08;
rBCDYEAR=0x07;
rTICINT=0x0;//取消节拍中断
}
//******************************************
void read_time()
{
buffer[0]=rBCDYEAR>>4;//读取年的十位
buffer[1]=rBCDYEAR&0x0f;//读取年的个位
buffer[2]=rBCDMON>>4;//月的十位
buffer[3]=rBCDMON&0x0f;//月的个位
buffer[4]=rBCDDATE&0x07;//星期
buffer[5]=rBCDDAY>>4;//日期的十位
buffer[6]=rBCDDAY&0x0f;//日期的个位
buffer[7]=rBCDHOUR>>4;//小时的十位
buffer[8]=rBCDHOUR&0x0f;//小时的个位
buffer[9]=rBCDMIN>>4;//分的十位
buffer[10]=rBCDMIN&0x0f;//分的个位
buffer[11]=rBCDSEC>>4;//秒的十位
buffer[12]=rBCDSEC&0x0f;//秒的个位
if(rBCDSEC==0)flag=1;
if(buffer[0]==0) buffer[0]='0';
if(buffer[0]==1) buffer[0]='1';
if(buffer[0]==2) buffer[0]='2';
if(buffer[0]==3) buffer[0]='3';
if(buffer[0]==4) buffer[0]='4';
if(buffer[0]==5) buffer[0]='5';
if(buffer[0]==6) buffer[0]='6';
if(buffer[0]==7) buffer[0]='7';
if(buffer[0]==8) buffer[0]='8';
if(buffer[0]==9) buffer[0]='9';
if(buffer[1]==0) buffer[1]='0';
if(buffer[1]==1) buffer[1]='1';
if(buffer[1]==2) buffer[1]='2';
if(buffer[1]==3) buffer[1]='3';
if(buffer[1]==4) buffer[1]='4';
if(buffer[1]==5) buffer[1]='5';
if(buffer[1]==6) buffer[1]='6';
if(buffer[1]==7) buffer[1]='7';
if(buffer[1]==8) buffer[1]='8';
if(buffer[1]==9) buffer[1]='9';
if(buffer[2]==0) buffer[2]='0';
if(buffer[2]==1) buffer[2]='1';
if(buffer[3]==0) buffer[3]='0';
if(buffer[3]==1) buffer[3]='1';
if(buffer[3]==2) buffer[3]='2';
if(buffer[3]==3) buffer[3]='3';
if(buffer[3]==4) buffer[3]='4';
if(buffer[3]==5) buffer[3]='5';
if(buffer[3]==6) buffer[3]='6';
if(buffer[3]==7) buffer[3]='7';
if(buffer[3]==8) buffer[3]='8';
if(buffer[3]==9) buffer[3]='9';
if(buffer[4]==1) buffer[4]='1';
if(buffer[4]==2) buffer[4]='2';
if(buffer[4]==3) buffer[4]='3';
if(buffer[4]==4) buffer[4]='4';
if(buffer[4]==5) buffer[4]='5';
if(buffer[4]==6) buffer[4]='6';
if(buffer[4]==7) buffer[4]='7';
if(buffer[5]==0) buffer[5]='0';
if(buffer[5]==1) buffer[5]='1';
if(buffer[5]==2) buffer[5]='2';
if(buffer[5]==3) buffer[5]='3';
if(buffer[6]==0) buffer[6]='0';
if(buffer[6]==1) buffer[6]='1';
if(buffer[6]==2) buffer[6]='2';
if(buffer[6]==3) buffer[6]='3';
if(buffer[6]==4) buffer[6]='4';
if(buffer[6]==5) buffer[6]='5';
if(buffer[6]==6) buffer[6]='6';
if(buffer[6]==7) buffer[6]='7';
if(buffer[6]==8) buffer[6]='8';
if(buffer[6]==9) buffer[6]='9';
if(buffer[7]==0) buffer[7]='0';
if(buffer[7]==1) buffer[7]='1';
if(buffer[7]==2) buffer[7]='2';
if(buffer[8]==0) buffer[8]='0';
if(buffer[8]==1) buffer[8]='1';
if(buffer[8]==2) buffer[8]='2';
if(buffer[8]==3) buffer[8]='3';
if(buffer[8]==4) buffer[8]='4';
if(buffer[8]==5) buffer[8]='5';
if(buffer[8]==6) buffer[8]='6';
if(buffer[8]==7) buffer[8]='7';
if(buffer[8]==8) buffer[8]='8';
if(buffer[8]==9) buffer[8]='9';
if(buffer[9]==0) buffer[9]='0';
if(buffer[9]==1) buffer[9]='1';
if(buffer[9]==2) buffer[9]='2';
if(buffer[9]==3) buffer[9]='3';
if(buffer[9]==4) buffer[9]='4';
if(buffer[9]==5) buffer[9]='5';
if(buffer[10]==0) buffer[10]='0';
if(buffer[10]==1) buffer[10]='1';
if(buffer[10]==2) buffer[10]='2';
if(buffer[10]==3) buffer[10]='3';
if(buffer[10]==4) buffer[10]='4';
if(buffer[10]==5) buffer[10]='5';
if(buffer[10]==6) buffer[10]='6';
if(buffer[10]==7) buffer[10]='7';
if(buffer[10]==8) buffer[10]='8';
if(buffer[10]==9) buffer[10]='9';
if(buffer[11]==0) buffer[11]='0';
if(buffer[11]==1) buffer[11]='1';
if(buffer[11]==2) buffer[11]='2';
if(buffer[11]==3) buffer[11]='3';
if(buffer[11]==4) buffer[11]='4';
if(buffer[11]==5) buffer[11]='5';
if(buffer[12]==0) buffer[12]='0';
if(buffer[12]==1) buffer[12]='1';
if(buffer[12]==2) buffer[12]='2';
if(buffer[12]==3) buffer[12]='3';
if(buffer[12]==4) buffer[12]='4';
if(buffer[12]==5) buffer[12]='5';
if(buffer[12]==6) buffer[12]='6';
if(buffer[12]==7) buffer[12]='7';
if(buffer[12]==8) buffer[12]='8';
if(buffer[12]==9) buffer[12]='9';
}
//*******************************************
void send_time()
{
rUTXH1=buffer[0];
while((rUTRSTAT1&0x04)==0);
n=100000;
while(n--);
rUTXH1=buffer[1];
while((rUTRSTAT1&0x04)==0);
n=100000;
while(n--);
rUTXH1='/';
while((rUTRSTAT1&0x04)==0);
n=100000;
while(n--);
rUTXH1=buffer[2];
while((rUTRSTAT1&0x04)==0);
n=100000;
while(n--);
rUTXH1=buffer[3];
while((rUTRSTAT1&0x04)==0);
n=100000;
while(n--);
rUTXH1='/';
while((rUTRSTAT1&0x04)==0);
n=100000;
while(n--);
rUTXH1=buffer[4];
while((rUTRSTAT1&0x04)==0);
n=100000;
while(n--);
rUTXH1='/';
while((rUTRSTAT1&0x04)==0);
n=100000;
while(n--);
rUTXH1=buffer[5];
while((rUTRSTAT1&0x04)==0);
n=100000;
while(n--);
rUTXH1=buffer[6];
while((rUTRSTAT1&0x04)==0);
n=100000;
while(n--);
rUTXH1='/';
while((rUTRSTAT1&0x04)==0);
n=100000;
while(n--);
rUTXH1=buffer[7];
while((rUTRSTAT1&0x04)==0);
n=100000;
while(n--);
rUTXH1=buffer[8];
while((rUTRSTAT1&0x04)==0);
n=100000;
while(n--);
rUTXH1=':';
while((rUTRSTAT1&0x04)==0);
n=100000;
while(n--);
rUTXH1=buffer[9];
while((rUTRSTAT1&0x04)==0);
n=100000;
while(n--);
rUTXH1=buffer[10];
while((rUTRSTAT1&0x04)==0);
n=100000;
while(n--);
rUTXH1=':';
while((rUTRSTAT1&0x04)==0);
n=100000;
while(n--);
rUTXH1=buffer[11];
while((rUTRSTAT1&0x04)==0);
n=100000;
while(n--);
rUTXH1=buffer[12];
while((rUTRSTAT1&0x04)==0);
n=100000;
while(n--);
rUTXH1=' ';
while((rUTRSTAT1&0x04)==0);
n=100000;
while(n--);
}
//******************************************
int main()
{
ini_memory();
ini_pllclock();
ini_usart();
ini_RTC();
while(1)
{
read_time();
send_time();
}
return 0;
}