AVR DS1302源程序

发布者:MindfulYogi最新更新时间:2016-09-18 来源: eefocus关键字:AVR  DS1302 手机看文章 扫描二维码
随时随地手机看文章
//mega16 7.3728MHz石英晶体 iccavr6.31a

//相关定义:

#define uint unsigned int

#define uchar unsigned char

#define DS1302_RST 0 //pc0

#define DS1302_SDA 1 //pc1

#define DS1302_SCLK 6 //pc6

//ds1302相关

//DS1302_RST=1

#define Set_DS1302_RST() PORTC|=1<

//DS1302_RST=0

#define Clr_DS1302_RST() PORTC&=~(1<

//DS1302_SDA=1

#define Set_DS1302_SDA() PORTC|=1<

//DS1302_SDA=0

#define Clr_DS1302_SDA() PORTC&=~(1<

//DS1302_SCLK=1

#define Set_DS1302_SCLK() PORTC|=1<

//DS1302_SCLK=0

#define Clr_DS1302_SCLK() PORTC&=~(1<

//DS1302deSDA置为输出脚

#define Set_DS1302_DDRSDA() DDRC|=1<

//DS1302deSDA置为输入脚

#define Clr_DS1302_DDRSDA() DDRC&=~(1<

#define DS1302_SEC_Reg 0x80

#define DS1302_MIN_Reg 0x82

#define DS1302_HR_Reg 0x84

#define DS1302_DATE_Reg 0x86

#define DS1302_MONTH_Reg 0x88

#define DS1302_DAY_Reg 0x8a

#define DS1302_YEAR_Reg 0x8c

#define DS1302_CONTROL_Reg 0x8e

#define DS1302_CHARGER_Reg 0x90

#define DS1302_CLKBURST_Reg 0xbe

//全局变量

//为了方便,我把个位和十位分开了

uchar year1=0x88;

uchar year0=0x88;

uchar month1=0x88;

uchar month0=0x88;

uchar date0=0x88;

uchar date1=0x88;

uchar day=0x88;

uchar hour1=0x88;

uchar hour0=0x88;

uchar minute1=0x88;

uchar minute0=0x88;

uchar second1=0x88;

uchar second0=0x88;

//自程序开始

void DS1302_Write(uchar reg,uchar data)

{

uchar i;

Set_DS1302_DDRSDA();

Clr_DS1302_RST();

asm("nop");

asm("nop");

Clr_DS1302_SCLK();

asm("nop");

asm("nop");

Set_DS1302_RST();

asm("nop");

asm("nop");

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

{

if(reg&0x01) Set_DS1302_SDA();

else Clr_DS1302_SDA();

asm("nop");

asm("nop");

Set_DS1302_SCLK();

asm("nop");

asm("nop");

Clr_DS1302_SCLK();

asm("nop");

asm("nop");

reg>>=1;

}

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

{

if(data&0x01) Set_DS1302_SDA();

else Clr_DS1302_SDA();

asm("nop");

asm("nop");

Set_DS1302_SCLK();

asm("nop");

asm("nop");

Clr_DS1302_SCLK();

asm("nop");

asm("nop");

data>>=1;

}

Clr_DS1302_RST();

asm("nop");

asm("nop");

Clr_DS1302_DDRSDA();

}

uchar DS1302_Read(uchar reg)

{

uchar data=0,i;

reg+=1;//读标志

Set_DS1302_DDRSDA();

Clr_DS1302_RST();

asm("nop");

asm("nop");

Clr_DS1302_SCLK();

asm("nop");

asm("nop");

Set_DS1302_RST();

asm("nop");

asm("nop");

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

{

if(reg&0x01) Set_DS1302_SDA();

else Clr_DS1302_SDA();

asm("nop");

asm("nop");

Set_DS1302_SCLK();

asm("nop");

asm("nop");

Clr_DS1302_SCLK();

asm("nop");

asm("nop");

reg>>=1;

}

Clr_DS1302_DDRSDA();

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

{

data>>=1;

if((PINC&(1<ta|=0x80;

Set_DS1302_SCLK();

asm("nop");

asm("nop");

Clr_DS1302_SCLK();

asm("nop");

asm("nop");

}

Clr_DS1302_RST();

asm("nop");

asm("nop");

return(data);

}

uchar Check_DS1302(void)

{

    DS1302_Write(DS1302_CONTROL_Reg,0x80);

    if(DS1302_Read(DS1302_CONTROL_Reg)==0x80) return 1;

    return 0;

}

void DS1302_Init(void)

{

DS1302_Write(DS1302_CONTROL_Reg,0x00);//关闭写保护

DS1302_Write(DS1302_SEC_Reg,0x80);//暂停

DS1302_Write(DS1302_CHARGER_Reg,0xa9);//涓流充电

DS1302_Write(DS1302_YEAR_Reg,0x04); //年

DS1302_Write(DS1302_MONTH_Reg,0x12); //月

DS1302_Write(DS1302_DATE_Reg,0x09); //日

DS1302_Write(DS1302_DAY_Reg,0x04); //周

DS1302_Write(DS1302_HR_Reg,0x10); //时

DS1302_Write(DS1302_MIN_Reg,0x25); //分

DS1302_Write(DS1302_SEC_Reg,0x00); //秒

DS1302_Write(DS1302_CONTROL_Reg,0x80);//打开写保护

}

void ReadTime(void)

{

uchar data;

data=DS1302_Read(DS1302_YEAR_Reg);//年

year0=data&0x0f;

year1=data>>4;

data=DS1302_Read(DS1302_MONTH_Reg);//月

month0=data&0x0f;

month1=(data>>4)&0x01;

data=DS1302_Read(DS1302_DATE_Reg);//日

date0=data&0x0f;

date1=(data>>4)&0x03;

data=DS1302_Read(DS1302_DAY_Reg);//周

day=data&0x07;

data=DS1302_Read(DS1302_HR_Reg);//时

hour0=data&0x0f;

hour1=(data>>4)&0x03;

data=DS1302_Read(DS1302_MIN_Reg);//分

minute0=data&0x0f;

minute1=(data>>4)&0x07;

data=DS1302_Read(DS1302_SEC_Reg);//秒

second0=data&0x0f;

second1=(data>>4)&0x07;

}

关键字:AVR  DS1302 引用地址:AVR DS1302源程序

上一篇:avr定时器T0,T1,T2初始化配置及其说明
下一篇:AVR单片机ADC转换程序

推荐阅读最新更新时间:2024-03-16 15:10

AVR单片机熔丝和解锁
AVR单片机的熔丝位配置是AVR单片机初学者很容易出错的地方,其实只要注意一些事项,还是能够尽量避免单片机被锁死,即使单片机被锁死,也可以使用一些方法解锁,本文讲述我在刚开始接触AVR单片机时熔丝位配置出现的一些问题。 1、AVR单片机的熔丝位是比较独到的特征,可以控制系统的时钟,JTAG调试、看门狗、芯片加密等等。图1是progisp软件,对于初学者来说,对熔丝位不熟悉,可以先将2处的编程熔丝对勾去掉,这样在编程的时候,就不会对熔丝位进行编程,单片机出厂的默认设置就可以使用。点击1处进入熔丝位配置界面。 图1 图2为位配置方式,这里的每一位都不能随意点击,尤其是熔丝低位控制时钟的地方,一般来说,直接对位进行配置并不
[单片机]
<font color='red'>AVR</font>单片机熔丝和解锁
AVR单片机简介
什么是AVR单片机?AVR单片机是什么意思? 单片机又称单片微控制器,它是把一个计算机系统集成到一个芯片上,概括的讲:一块芯片就成了一台计算机。单片机技术是计算机技术的一个分支,是简易机器人的核心元件。 1997年,由ATMEL公司挪威设计中心的A先生与V先生利用ATMEL公司的Flash新技术, 共同研发出RISC精简指令集的高速8位单片机,简称AVR。 AVR单片机的优势特征 单片机已广泛地应用于军事、工业、家用电器、智能玩具、便携式智能仪表和机器人制作等领域,使产品功能、精度和质量大幅度提升,且电路简单,故障率低,可靠性高,成本低廉。单片机种类很多,在简易机器人制作和创新中,为什么选用A
[单片机]
液晶显示AT89C52单片机DS1302实时时钟程序
#include'reg52.h' //包含单片机寄存器的头文件 #include'intrins.h' //包含_nop_()的头文件 sbit RS=P2^0; //LCD读写选择位 sbit RW=P2^1; //LCD读写选择位 sbit E=P2^2; //LCD使能端 sbit BF=P0^7; //忙信号 sbit SCLK=P1^0; //1302时钟输出端 sbit DATA=P1^1; //1302数据端 sbit RST=P1^2; //1302复位端 unsigned char code digit = 0123456789 ; void
[单片机]
AVR资源配置计算器
  1、 用途:   AVR资源配置计算器可以进行一些很用的计算,大大简化了程序设计人员的工作,而且它还可以由ICCAVR的菜单直接启动。   2、 数制转换计算   在Fp Number中输入任意一个数(可以是浮点数),然后按UpData按钮,可以转换成相应的十六进制数。   3、 在Crystal Freq中输入频率(以MHZ为单位),在AVRBaudRate中输入你希望得到的波特率,按UpData按钮,可以计算出AVR单片机的UBRR寄存器的初始化值和波特率误差。   4、 定时器计算:在Units中选择定时单位,在Needed timer中输入需要定时的时间,在Pre Scale TCCRxx中输入预分频系数,
[单片机]
<font color='red'>AVR</font>资源配置计算器
AVR 串口收发 使用循环链表实现的程序源代码
整个工程下载: http://www.rayfile.com/files/062cd042-d7a5-11df-8a51-0015c55db73d/ 关键代码: UART.h: /********** 串口收发循环链表实现 ********** * 版本.........: 1.0 * 作者.........: 陈利栋 * 目标.........: ATmega128 * 文件名.......: UART.h * 编译器.......: IAR for AVR V5.5 * 创建时间.....: 2010.10.14 * 最后修改.....: 2010.10.14 ****************************
[单片机]
<font color='red'>AVR</font> 串口收发 使用循环链表实现的程序源代码
AVR单片机Atmega16电子时钟程序+仿真,内部定时器实现
Atmega16电子时钟,内部定时器,有可调闹钟。 仿真原理图如下 单片机源程序如下: #include iom16v.h #include macros.h #define key_bz 0b00000111 char smg_zx ={0x3f,0x06,0x5b,0x4f,0x66,0x6d, 0x7d,0x07,0x7f,0x6f};// 全局变量 char hour=12; char min; char sec; char nz_hour=12; char nz_min=1; char mode=0; char set; void delay_ms(unsigned int k)
[单片机]
<font color='red'>AVR</font>单片机Atmega16电子时钟程序+仿真,内部定时器实现
基于AVR单片机的简易灭火机器人设计
引言 近年来,随着石化等基础工业的飞速发展,在生产过程中的易燃易爆和剧毒化学制品的使用急剧增长,由于设备和管理方面的原因,导致化学危险品和放射性物质泄漏、燃烧爆炸的事故增多。消防机器人作为特种消防设备可代替消防队员接近火场实施有效的灭火救援、化学检验和火场侦察。它的应用将提高消防部队扑灭特大恶性火灾的实战能力,对减少国家财产损失和灭火救援人员的伤亡将产生重要的作用。 1 设计要求 制作一个由计算机程序控制的机器人,在一间模拟平面结构的房间里运动,找到一根燃烧的蜡烛并尽快将它扑灭。 灭火要求:机器人不能运用任何破坏性的或危险的方法来扑灭蜡烛火焰。它可以运用类似水、空气等物质,或者使用机械方式,但是禁止使用任何危险的或可能破坏灭
[单片机]
基于<font color='red'>AVR</font>单片机的简易灭火机器人设计
爱特梅尔的AVR微控制器集成射频发送器功能
爱特梅尔公司(Atmel® Corporation)宣布推出首个ATA874x单芯片UHF ASK/FSK RF发送器系列。这一全新AVR®产品线具有业界领先的射频 (RF) 性能,并可在免授权的ISM频带(868 到 928 MHz、433 MHz和 315 MHz) 运作。ATA874x系列瞄准工业和消费领域的多元化专有无线应用,如计量、报警系统和家居控制应用设备等。 爱特梅尔是智能计量和家居自动化市场的知名厂商,一直提供出色的无线IEEE 802.15.4 和 ZigBee®产品;如今更采取更多的举措,以满足专有无线市场领域各种多元化的需求。 ATA874x系列器件包含一个低功率AVR CPU和一个高效
[网络通信]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved