⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1302._c

📁 基于AVR单片机的热电偶测量系统源码
💻 _C
字号:
/*-------------------------------------------------------------*-
File name: 1302.c
Description:本模块为实时时钟模块。
Function List:
1.void pDS1302_Write(uchar reg,uchar data)  写实时时钟函数
2.uchar pDS1302_Read(uchar reg)  读实时时钟函数
3.void pDS1302_Init(void)     1302初始化函数

-----------------------------------------------------------------
实时时钟模块
-*--------------------------------------------------------------*/
#include <iom16v.h>
#include <macros.h>
#include "1302.h"
#include "main.h"

void pDS1302_Write(unsigned char reg,unsigned char data) 
{ 
        unsigned char i; 
     
        mDS1302IO_Out; 
        mSetDS1302IO;  
        mClrDS1302RST;    
        wait;
	    mClrDS1302SCK; 
        wait;       
        mSetDS1302RST;
        wait; 
        for(i=0;i<8;i++) 
    	{  
           	if(reg&BIT(i)) 
           	  	mSetDS1302IO; 
           	else           
           		mClrDS1302IO; 
        	wait; 
        	mSetDS1302SCK; 
        	wait; 
        	mClrDS1302SCK; 
        	wait;        
		} 
         
    	for(i=0;i<8;i++) 
    	{  
        	if(data&BIT(i))
            	mSetDS1302IO; 
        	else 
            	mClrDS1302IO; 
        	wait; 
        	mSetDS1302SCK; 
        	wait; 
        	mClrDS1302SCK; 
        	wait;
    	} 
     
        wait; 
        mClrDS1302RST;
        wait;
} 

unsigned char pDS1302_Read(unsigned char reg) 
{ 
    unsigned char data=0,i; 
         
    mDS1302IO_Out; 
    reg+=1;//读标志 
    mSetDS1302IO; 
          
    mClrDS1302RST;
    wait; 
    mClrDS1302SCK;
    wait;
	wait;
    mSetDS1302RST;
    wait;
         
    for(i=0;i<8;i++) 
    {  
        if(reg&BIT(i))
        	mSetDS1302IO; 
        else          
        	mClrDS1302IO; 
        wait; 
        mSetDS1302SCK; 
        wait; 
        mClrDS1302SCK;
        wait; 
    } 
     
    mDS1302IO_In; 
    wait;
	wait;
         
    for(i=0;i<8;i++) 
    {  
         if(mTestDS1302IO)
         	data |= BIT(i); 
         else            
            data &= ~BIT(i); 
         mSetDS1302SCK; 
         wait; 
         mClrDS1302SCK;
         wait; 
    } 
    wait;
    mClrDS1302RST;
    wait;
     
    return(data); 
} 

void pDS1302_Init(void) 
{ 
    pDS1302_Write(mDS1302_CONTROL_Reg,0x00); //关闭写保护  
  //pDS1302_Write(mDS1302_SEC_Reg,0x80);     //暂停  
    pDS1302_Write(mDS1302_CHARGER_Reg,0x00); //涓流充电 A9  
  //pDS1302_Write(mDS1302_HOUR_Reg,0x14);    //时 
  //pDS1302_Write(mDS1302_MIN_Reg,0x25);     //分 
  //pDS1302_Write(mDS1302_SEC_Reg,0x20);     //秒 
    pDS1302_Write(mDS1302_CONTROL_Reg,0x80); //打开写保护 
} 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -