资源简介
利用430控制DS1302,可以显示日期和时间,通过按键可以调整时间。同时可以进行定时,比如闹钟,可以定两个时间
代码片段和文件信息
#include
#define uchar unsigned char
#define uint unsigned int
#define SDA_H P2OUT|=BIT6
#define SDA_L P2OUT&=~BIT6//模拟数据位
#define SCL_H P2OUT|=BIT1
#define SCL_L P2OUT&=~BIT1//模拟时钟
#define RST_H P2OUT|=BIT7
#define RST_L P2OUT&=~BIT7//复位
#define RST_out P2DIR|=BIT7
#define SCL_out P2DIR |= BIT1 //SCL设置为输出模式
#define SDA_in P2DIR &= ~BIT6 //SDA改成输入模式
#define SDA_out P2DIR |= BIT6 //SDA变回输出模式
#define SDA_val P2IN&BIT6 //SDA的位值
#define TRUE 1
#define FALSE 0
uchar Setdata[]={0x090x010x060x090x120x080x06};//时钟预设值
/*
#define AM(X) X
#define PM(X) (X+12) 写地址 // 转成24小时制
#define DS1302_SECOND 0x80 读地址 0x81
#define DS1302_MINUTE 0x82 0x83
#define DS1302_HOUR 0x84 0x85
#define DS1302_WEEK 0x8A 0x8b
#define DS1302_DAY 0x86 0x87
#define DS1302_MONTH 0x88 0x89
#define DS1302_YEAR 0x8C 0x8D
#define DS1302_RAM(X) (0xC0+(X)*2) //用于计算 DS1302_RAM 地址的宏
*/
/*******************************************
函数名称:delay
功 能:延时约100us的时间
********************************************/
void delays(void)
{
uchar i;
for(i = 0;i < 15;i++)
_NOP();
}
/************向DS1302写入一BYTE数据********/
void DS1302InputByte(uchar data)
{
uchar i;
SDA_out;
RST_H;
for(i=0;i<8;i++)
{
if(data&0x01) SDA_H;
else SDA_L;
SCL_L;
delays();
SCL_H;
delays();
data=data>>1;
}
}
/*************从DS1302读入一字节的数据**************/
uchar DS1302OutputByte(void)
{
uchar itemp=0x00;
SDA_in;
RST_H;
for(i=0;i<8;i++)
{
temp=temp>>1;
SCL_H;
delays();
SCL_L;
delays();
if(SDA_val)
temp|=BIT7;
}
return temp;
}
/**********向特定地址写入数据*************/
void write1302(uchar addressuchar data)
{
RST_L;
SCL_L;
_NOP();
RST_H;
DS1302InputByte(address);
DS1302InputByte(data);
SCL_H;
RST_L;
}
/************从特定地址读入数据***********/
uchar read1302(uchar address)
{
uchar data;
RST_L;
SCL_L;
_NOP();
RST_H;
DS1302InputByte(address);
data=DS1302OutputByte();
SCL_H;
RST_L;
return data;
}
/************设置时间*****************/
void DS1302_settime(uchar *data)
{
uchar iaddress;
address=0x8c;
write1302(0x8e0x00);
for(i=0;i<7;i++)
{
write1302(addressdata[i]);
address-=2;
}
write1302(0x8e0x80);
}
/************得到时间*****************/
void DS1302_Get(uchar *time)
{
uchar valueaddress=0x8D;
for(value=0;value<7;value++)
{
time[value]=read1302(address);
time[value]=((time[value]&0x70)>>4)*10+(time[value]&0x0F);
address-=2;
}
}
/*************1302初始化************/
void init_1302()
{
RST_out;
SCL_out;
RST_L;
SCL_L;
delays();
SCL_H;
}
/***********一次读出多个字节****************/
void BurstRead1302(uchar *ptr)
{
uchar i;
RST_L;
SCL_L;
_NOP();
RST_H;
DS1302InputByte(0xbf); //0xbf:时钟多字节读命令
for (i = 8; i > 0; i
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 160 2010-08-10 21:56 DS1302_5110_定时\1302.eww
文件 436 2010-08-11 17:16 DS1302_5110_定时\1302.h
文件 29652 2010-08-15 20:41 DS1302_5110_定时\Debug\Exe\DS1302.d43
文件 169 2010-08-15 20:41 DS1302_5110_定时\Debug\Obj\DS1302.pbd
文件 90039 2010-08-15 20:41 DS1302_5110_定时\Debug\Obj\main.r43
文件 3216 2010-08-15 20:41 DS1302_5110_定时\ds1302.c
文件 2310 2010-08-15 20:41 DS1302_5110_定时\DS1302.dep
文件 13407 2010-08-11 10:27 DS1302_5110_定时\DS1302.ewd
文件 44774 2008-06-02 10:35 DS1302_5110_定时\DS1302.ewp
文件 802 2010-08-12 10:54 DS1302_5110_定时\key.c
文件 6651 2010-08-12 11:16 DS1302_5110_定时\main.c
文件 4864 2010-08-11 17:53 DS1302_5110_定时\NOKIA_5110_ALL.c
文件 5665 2010-08-11 17:54 DS1302_5110_定时\NOKIA_5110_ALL.h
文件 3847 2010-08-15 20:41 DS1302_5110_定时\settings\1302.wsdt
文件 2472 2010-08-15 20:41 DS1302_5110_定时\settings\DS1302.cspy.bat
文件 5909 2010-08-15 20:41 DS1302_5110_定时\settings\DS1302.dbgdt
文件 990 2010-08-15 20:41 DS1302_5110_定时\settings\DS1302.dni
目录 0 2010-08-12 09:01 DS1302_5110_定时\Debug\Exe
目录 0 2010-08-12 09:01 DS1302_5110_定时\Debug\List
目录 0 2010-08-15 20:41 DS1302_5110_定时\Debug\Obj
目录 0 2010-08-12 09:01 DS1302_5110_定时\Debug
目录 0 2010-08-12 09:01 DS1302_5110_定时\settings
目录 0 2010-08-15 20:41 DS1302_5110_定时
----------- --------- ---------- ----- ----
215363 23
- 上一篇:介绍几种压缩算法及《笨笨数据压缩教程》
- 下一篇:编程实现二维DCT变换
相关资源
- 单片机电子时钟 闹钟 日历
- DAS1302蜂鸣 独立按键 闹钟设定 IIC存储
- msp430F149操作红外接收模块源码
- [免费]msp430f149控制PS2键盘并用1602显示
- MSP430f149读sd FAT txt
- (MFC) 时钟日期程序
- 用8位spi实现16位spi
- 基于MSP430单片机的实时多任务操作系
- STM32F407实时时钟_DS1302实时时钟模块和
- 基于STM32F103的实时时钟程序,采用D
- 51单片机_DS1302时钟芯片_共阴数码管
- MSP430系列单片机例程(msp430f235)
- MSP430控制AD9850产生频率可调的方波及
- DS1302时钟带可调时间显示
- DS1302+DS13B20+12864,万年历。农历
- msp430f449程序
- 基于MSP430的数控直流电压源
- MSP430F5438A Timer_B 操作实验
- MSP430F5438 UCS 时钟操作实验
- MSP430F5438A Timer_A 操作实验
- MSP430F5438 看门狗实验
- IAR EW430连接仿真器在线仿真
- 初识畅学系列MSP430F149单片机开发板
- 畅学多功能实验箱 MSP430F5438 RTC 操作实
- MSP430F5438A RAM操作实验
- msp430f5438a技术资料
- 基于quartus II的VHDL数字钟设计
- AVR多功能实验箱DS1302时钟实验源码资
- 畅学STM32多功能实验箱DS1302时钟芯片源
- MSP430 JTAGUSB的和并口的与目标板连接的
评论
共有 条评论