当前位置:首页 > 单片机 > 单片机
[导读]本文介绍了PIC单片机读写DS1302程序

本文介绍了PIC单片机读写DS1302程序

 #i nclude

#define uchar unsigned char

#define T_CLK RC3

#define T_IO RC4

#define T_RST RC5

unsigned char TDATA;

int js;

int Order[3];

bit sci_sign=0;

int buf[2];

void Get1302(uchar *);

void RTInputByte(uchar);

uchar RTOutputByte(void) ;

void W1302(uchar , uchar );

uchar R1302(uchar);

void Set1302(uchar*);

void sciint(void);

void sci(int);

void int_to_asc(int);

//*SCI部件接收初始化子程序*/

void sciint()

{

TRISC7= 1 ;// |= 0xc0;//设置为输入

TRISC6= 0 ;

BRGH = 1 ; //高波特率选择位

SPBRG = 25 ; //((20000000/9600)/16)-1

SYNC = 0 ;//异步

SPEN = 1 ;//串口使能

RCIE = 1 ;// USART数据接收中断使能位

TXIE = 0 ;//USART数据发送中断使能位

TXEN = 1 ;//发送

CREN = 1 ;//连续接收使能位

RCIF=0;

PEIE= 1 ; //开中断

GIE=1;

}

void sci(int tran)

{

while(!TXIF);

TXREG=tran; //*发出一个字符*/

TXIF=0;

}

void RTInputByte(uchar d)

{

uchar i;

TDATA = d;

for(i=8; i>0; i--)

{

T_IO =(bit)(TDATA&0X80); //*相当于汇编中的 RRC

T_CLK = 1;

T_CLK = 0;

TDATA = TDATA >> 1;

}

}

uchar RTOutputByte(void)

{

uchar i;

TRISC4=1;

for(i=8; i>0; i--)

{

TDATA = TDATA >>1;

if(T_IO)

{

TDATA&=0X80;

}

T_CLK = 1;

T_CLK = 0;

}

TRISC4=0;

return(TDATA);

}

void W1302(uchar ucAddr, uchar ucDa)

{

T_RST = 0;

T_CLK = 0;

T_RST = 1;

RTInputByte(ucAddr); //* 地址,命令

RTInputByte(ucDa); //* 写1Byte数据

T_CLK = 1;

T_RST = 0;

}

uchar R1302(uchar ucAddr)

{

uchar ucData;

T_RST = 0;

T_CLK = 0;

T_RST = 1;

RTInputByte(ucAddr); //* 地址,命令

ucData = RTOutputByte(); //* 读1Byte数据

T_CLK = 1;

T_RST = 0;

return(ucData);

}

void Set1302(uchar *pClock)

{

uchar i;

uchar ucAddr = 0x80;

W1302(0x8e,0x00); //* 控制命令,WP=0,写操作?

for(i =7; i>0; i--)

{

W1302(ucAddr,*pClock); //* 秒 分 时 日 月 星期 年

pClock++;

ucAddr +=2;

}

W1302(0x8e,0x80); //* 控制命令,WP=1,写保护

}

void Get1302(uchar *ucCurtime)

{

uchar i;

uchar ucAddr = 0x81;

for (i=0; i<7; i++)

{

ucCurtime[i] = R1302(ucAddr);//*格式为: 秒 分 时 日 月 星期 年

ucAddr += 2;

}

}

void interrupt SCI_Admit(void)

{

if(RCIF&&RCIE) //判断是否是接收中断

{

if(Order[0]=='$')

{

js++;

Order[js]=RCREG;

if(js==2)

sci_sign=1;

}

else

{

Order[0]=RCREG;

sci_sign=0;

js=0;

}

}

}

void int_to_asc(int dat)

{

buf[0]=(dat/10)+'0';

buf[1]=(dat%10)+'0';

}

void main()

{

uchar str[]={30,10,9,20,8,1,7};

uchar dtime[]={0,0,0,0,0,0,0};

TRISC3=1;

TRISC4=1;

TRISC5=1;

sciint();

ei();

// Get1302(st);

// sci('E');

while(1)

{

if(sci_sign)

{

Get1302(dtime);

if(Order[1]=='R'&&Order[2]=='T')

{

sci('Y');

int_to_asc(dtime[6]);

sci(buf[0]);

sci(buf[1]);

sci('M');

int_to_asc(dtime[4]);

sci(buf[0]);

sci(buf[1]);

sci('T');

int_to_asc(dtime[3]);

sci(buf[0]);

sci(buf[1]);

sci('h');

int_to_asc(dtime[2]);

sci(buf[0]);

sci(buf[1]);

sci('m');

int_to_asc(dtime[1]);

sci(buf[0]);

sci(buf[1]);

sci('s');

int_to_asc(dtime[0]);

sci(buf[0]);

sci(buf[1]);

sci('W');

int_to_asc(dtime[5]);

sci(buf[0]);

sci(buf[1]);

sci(' ');

}

else if(Order[1]=='R'&&Order[2]=='S')

{

Set1302(str);

}

Order[0]=0;

Order[1]=0;

Order[2]=0;

sci_sign=0;

}

}

}

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

本文中,主要在于讲解如何利用pic单片机实现红外夜视仪设计。如果你对本文内容具有兴趣,不妨继续往下阅读哦。

关键字: pic单片机 指数 红外夜视仪

为帮助大家解决pic单片机应用难点,本文将对pic单片机硬件死锁问题予以讲解。

关键字: pic单片机 指数 死锁

电子相关专业的朋友对于pic单片机自然十分熟悉,为增进大家对pic单片机的认识,本文将继续为大家介绍pic单片机。本文中,小编将对pic单片机的PAGE和BANK予以阐述。

关键字: pic单片机 指数 单片机

对于pic单片机,大家都很熟悉,pic单片机是诸多类型单片机中最为受用的一款。本文是《pic单片机实际应用,基于pic单片机实现IC卡读写器(上)》的余下内容。如果你对pic单片机具有兴趣,抑或对pic单片机的应用充满好...

关键字: ic卡读写器 pic单片机 指数

为帮助大家增进对pic单片机的认识,本文将介绍如何基于pic单片机实现IC卡读写器。本文仅为上篇,剩余内容请翻阅下篇。

关键字: pic单片机 指数 ic卡读写器

为增进大家对pic单片机的了解,本文将对pic单片机开发环境以及pic单片机的引脚3状态予以讲解。如果你对pic单片机具有兴趣,不妨继续往下阅读哦。

关键字: pic单片机 开发环境 指数

  当人们晚上迷失在野外手上只有一个手电筒,此时有直升机飞过。人们用手电筒发出三短三长三短的光线。用这个国际通用的SOS求救信号,告诉飞行员来救你。人们规定的三短三长三短的光线,代表SOS就是一

关键字: pic单片机 通信协议

PIC单片机是一种用来开发和控制外围设备的集成电路(IC)。一种具有分散作用(多任务)功能的CPU。与人类相比,大脑就是CPU,PIC 共享的部分相当于人的神经系统,应用十分广泛,本文就为大家介

关键字: pic32 pic单片机

本文将基于两点对pic单片机予以阐述:1.如何挑选合适的pic单片机,2.pic单片机或运算符运用。如果你对本文内容具有一定兴趣,不妨继续往下阅读哦。

关键字: pic单片机 指数 或运算符

本文中,小编将介绍如何将pic单片机A/D转换数据打包,以达到减少空间、提高效率的目的。如果你对本文内容具有一定兴趣,不妨继续往下阅读哦。

关键字: pic单片机 指数 ad转换数据
关闭
关闭