/********************************************************
程序功能:从DS1302中读出时间数据在数码管上显示
********************************************************/
#include <msp430x16x.h>
typedef unsigned char uchar;
typedef unsigned int uint;
/**************宏定义***************/
#define DS_SCL BIT5 //DS_SCL = P2.5
#define DS_SDA BIT6 //DS_SDA = P2.6
#define DS_RST BIT7 //DS_RST = P2.7
#define DS_RST_IN P2DIR &= ~DS_RST
#define DS_RST_OUT P2DIR |= DS_RST
#define DS_RST0 P2OUT &= ~DS_RST
#define DS_RST1 P2OUT |= DS_RST
#define DS_SCL_IN P2DIR &= ~DS_SCL
#define DS_SCL_OUT P2DIR |= DS_SCL
#define DS_SCL0 P2OUT &= ~DS_SCL
#define DS_SCL1 P2OUT |= DS_SCL
#define DS_SDA_IN P2DIR &= ~DS_SDA
#define DS_SDA_OUT P2DIR |= DS_SDA
#define DS_SDA0 P2OUT &= ~DS_SDA
#define DS_SDA1 P2OUT |= DS_SDA
#define DS_SDA_BIT P2IN & DS_SDA
void Delay5ms(void)
{
uint i = 40000;
while (i != 0)
{
i--;
}
}
/*******************************************
函数名称:Delay400ms
功 能:延时约400ms
参 数:无
返回值 :无
********************************************/
void Delay400ms(void)
{
uchar i = 50;
uint j;
while(i--)
{
j = 7269;
while(j--);
}
}
void delay(long int time)
{
uint i;
for(i = 0;i < time;i++) _NOP();
}
/*******************************************
函数名称:Initial_DS1302
功 能:对DS1302进行复位操作
参 数:无
返回值 :无
********************************************/
void Initial_DS1302(void)
{
DS_RST_OUT; //RST对应的IO设置为输出状态
DS_SCL_OUT; //SCLK对应的IO设置为输出状态
DS_SCL0; //SCLK=0
DS_RST0; //RST=0
delay(10);
DS_SCL1; //SCLK=1
}
/*******************************************
函数名称:Write1Byte
功 能:对DS1302写入1个字节的数据
参 数:wdata--写入的数据
返回值 :无
********************************************/
void Write1Byte(uchar wdata)
{
uchar i;
DS_SDA_OUT; //SDA对应的IO设置为输出状态
DS_RST1; //REST=1;
for(i = 8; i > 0; i--)
{
if(wdata&0x01) DS_SDA1;
else DS_SDA0;
DS_SCL0;
delay(10);
DS_SCL1;
delay(10);
wdata >>= 1;
}
}
/*******************************************
函数名称:Read1Byte
功 能:从DS1302读出1个字节的数据
参 数:无
返回值 :读出的一个字节数据
********************************************/
uchar Read1Byte(void)
{
uchar i;
uchar rdata = 0X00;
DS_SDA_IN; //SDA对应的IO设置为输入状态
DS_RST1; //REST=1;
for(i = 8; i > 0; i--)
{
DS_SCL1;
delay(10);
DS_SCL0;
delay(10);
rdata >>= 1;
if(DS_SDA_BIT) rdata |= 0x80;
}
return(rdata);
}
/*******************************************
函数名称:W_Data
功 能:向某个寄存器写入一个字节数据
参 数:addr--寄存器地址
wdata--写入的数据
返回值 :无
********************************************/
void W_Data(uchar addr, uchar wdata)
{
DS_RST0;
DS_SCL0;
_NOP();
DS_RST1;
Write1Byte(addr); //写入地址
Write1Byte(wdata); //写入数据
DS_SCL1;
DS_RST0;
}
/*******************************************
函数名称:R_Data
功 能:从某个寄存器读出一个字节数据
参 数:addr--寄存器地址
返回值 :读出的数据
********************************************/
uchar R_Data(uchar addr)
{
uchar rdata;
DS_RST0;
DS_SCL0;
_NOP();
DS_RST1;
Write1Byte(addr); //写入地址
rdata = Read1Byte(); //读出数据
DS_SCL1;
DS_RST0;
return(rdata);
}
/*******************************************
函数名称:BurstWrite1302
功 能:以burst方式向DS1302写入批量时间数据
参 数:ptr--指向时间数据存放地址的指针
返回值 :读出的数据
说 明:时间数据的存放格式是:
秒,分,时,日,月,星期,年,控制
【7个数据(BCD格式)+1个控制】
********************************************/
void BurstWrite1302(uchar *ptr)
{
uchar i;
W_Data(0x8e,0x00); //允许写入
DS_RST0;
DS_SCL0;
_NOP();
DS_RST1;
Write1Byte(0xbe); // 0xbe:时钟多字节写入命令
for (i = 8; i > 0; i--)
{
Write1Byte(*ptr++);
}
DS_SCL1;
DS_RST0;
W_Data(0x8e,0x80); // 禁止写入
}
/*******************************************
函数名称:BurstRead1302
功 能:以burst方式从DS1302读出批量时间数据
参 数:ptr--指向存放时间数据地址的指针
返回值 :无
说 明:时间数据的存放格式是:
秒,分,时,日,月,星期,年,控制
【7个数据(BCD格式)+1个控制】
********************************************/
void BurstRead1302(uchar *ptr)
{
uchar i;
DS_RST0;
DS_SCL0;
_NOP();
DS_RST1;
Write1Byte(0xbf); //0xbf:时钟多字节读命令
for (i = 8; i > 0; i--)
{
*ptr++ = Read1Byte();
}
DS_SCL1;
DS_RST0;
}
/*******************************************
函数名称:BurstWriteRAM
功 能:以burst方式向DS1302的RAM中写入批量数据
参 数:ptr--指向存放数据地址的指针
返回值 :无
说明 :共写入31个字节的数据
********************************************/
void BurstWriteRAM(uchar *ptr)
{
uchar i;
W_Data(0x8e,0x00); //允许写入
DS_RST0;
DS_SCL0;
_NOP();
DS_RST1;
Write1Byte(0xfe); //0xfe:RAM多字节写命令
for (i = 31; i>0; i--) //RAM共有31个字节
{
Write1Byte(*ptr++);
}
DS_SCL1;
DS_RST0;
W_Data(0x8e,0x80); //禁止写入
}
/*******************************************
函数名称:BurstReadRAM
功 能:以burst方式从DS1302的RAM中读出批量数据
参 数:ptr--指向数据存放地址的指针
返回值 :无
说明 :共读出31个字节的数据
********************************************/
void BurstReadRAM(uchar *ptr)
{
uchar i;
DS_RST0;
DS_SCL0;
_NOP();
DS_RST1;
Write1Byte(0xff); //0xff:RAM的多字节读命令
for (i = 31; i > 0; i--)
{
*ptr++ = Read1Byte();
}
DS_SCL1;
DS_RST0;
}
/*******************************************
函数名称:Set_DS1302
功 能:设置DS1302内部的时间
参 数:ptr--指向存放数据地址的指针
返回值 :无
说明 :写入数据的格式:
秒 分 时 日 月 星期 年 【共7个字节】
********************************************/
void Set_DS1302(uchar *ptr)
{
uchar i;
uchar addr = 0x80;
W_Data(0x8e,0x00); //允许写入
for(i = 7;i > 0;i--)
{
W_Data(addr,*ptr++);
addr += 2;
}
W_Data(0x8e,0x80); //禁止
}
/********************************************************************
*
* 名称: Get_DS1302
* 说明:
* 功能: 读取DS1302当前时间
* 调用: R_Data(uchar addr)
* 输入: ucCurtime: 保存当前时间地址。当前时间格式为: 秒 分 时 日 月 星期 年
* 7Byte (BCD码) 1B 1B 1B 1B 1B 1B 1B
* 返回值: 无
***********************************************************************/
void Get_DS1302(uchar *ptr)
{
uchar i;
uchar addr = 0x81;
for(i = 0;i < 7;i++)
{
ptr[i] = R_Data(addr);
addr += 2;
}
}
Write_to_Max7219(uchar add,uchar dat) //The subprogram for send the 16 bits
{
uchar n;
uint Address_and_Data = 0x00;
Address_and_Data = add;//地址和数据合并到一起;
Address_and_Data = Address_and_Data<<8;//地址和数据合并到一起;
Address_and_Data = Address_and_Data + dat;//地址和数据合并到一起;
//LOAD = 0x00;
P5OUT&= 0xfd;
for(n = 16;n >= 1;n--)
{
//CLK = 0x00;
P4OUT&= 0x7f;
if((Address_and_Data&0x8000) == 0x8000)
{
P5OUT|= 0x04;
}
if((Address_and_Data&0x8000) == 0x0000)
{
P5OUT&= 0x00;
}
没有合适的资源?快使用搜索试试~ 我知道了~
MSP430单片机自学笔记RAR格式
共94个文件
c:79个
txt:5个
lib:4个
5星 · 超过95%的资源 需积分: 9 57 下载量 177 浏览量
2011-11-03
18:31:53
上传
评论 3
收藏 826KB RAR 举报
温馨提示
光盘说明 本光盘为《MSP430系列单片机自学笔记》一书的配套光盘,本光盘包括内容为: 1、“实验板原理图”文件夹内容 MSP430实验板原理图.ddb,为本书以及本光盘中实验板电路原理图及PCB图,该文件使用protel 99 se打开。 2、“源程序”文件夹内容 “源程序”下面按照每一章来进行分类,里面有每一章的源程序。其中C源程序文件可以用记事本程序打开,也可以使用“IAR Embedded Workbench”软件可以打开。 3、“430Jtag原理图及PCB图”文件夹内容 “430Jtag原理图及PCB图”下面包含对msp430单片机进行编程的430Jtag原理图及PCB图。 4、宽体封装的244芯片的库文件,读者可以在画PCB板时使用它。 此外,书中所使用的芯片资料可以在"http://www.21icsearch.com"下载。
资源推荐
资源详情
资源评论
收起资源包目录
MSP430单片机自学笔记.rar (94个子文件)
光盘说明.txt 667B
430Jtag原理图及PCB图
430 Jtag.Sch 9KB
430 JtagPCB图.PCB 85KB
实验板原理图
430F169.ldb 64B
F169实验板.PCB 50KB
F169单片机试验板2.PCB 318KB
430F169.Ddb 27.31MB
Backup of 50M晶振.LIB 22KB
Backup of 25MHz.Lib 552B
Backup of 430F169.Lib 2KB
源程序
第10章
Read1Byte()子程序.c 344B
读写操作.c 203B
Get_DS1302.c 172B
BurstRead1302.c 275B
BurstWrite1302.c 355B
单字节读取方式并在数码管上显示.txt 10KB
Set_DS1302.c 473B
BurstWriteRAM.c 381B
读出操作.c 231B
从DS1302中读出时间数据(Burst读取方式)在数码管上显示.c 11KB
端口的初始化及电平的模拟.c 221B
BurstReadRAM.c 279B
从DS1302中读出时间数据(单字节读取方式)在液晶12864上显示.c 10KB
第13章
计算的子程序.c 292B
送入数据的子程序.c 1KB
AD9850数据发送子程序.c 2KB
该流程图主要是扫描4X4矩阵键盘,从键盘输出0~9十个数字,数字即代表输出的频率.c 13KB
第8章
在1602液晶的指定位置显示0、1、2、3四个数字.c 2KB
在1602液晶上显示显示两行字符串.c 3KB
初始化液晶例程.c 446B
在12864液晶的指定位置显示一行汉字.c 3KB
在1602液晶的指定位置显示Hz两个字符.c 2KB
在12864液晶的指定位置显示0、1、2、3四个数字.c 3KB
在12864液晶的指定位置显示一个汉字.c 3KB
在12864液晶上显示一行汉字单片机爱好者和TEL13796088061.c 3KB
第2章
局部变量与全局变量.c 199B
函数调用方式3.c 195B
序控制关键字.txt 222B
形式参数与实际参数.c 194B
数组.c 79B
位运算.c 534B
函数1.c 222B
函数调用方式2.c 191B
算术运算.txt 202B
函数2.c 78B
函数调用方式1.c 198B
字符型数据.txt 171B
函数嵌套调用.c 305B
第7章
数码管显示电路程序设计.c 2KB
第9章
4X4矩阵键盘返回键值并在12864上显示键值.c 7KB
4X4矩阵键盘返回键值并控制P2口指示灯变化并在1602液晶上显示键值.c 9KB
4X4矩阵键盘返回键值并控制P2口指示灯变化.c 3KB
4X4矩阵键盘返回键值并控制P2口指示灯变化并在数码管显示键值.c 6KB
第1章
基础时钟模块工作方式和相关寄存器设置.c 1KB
第11章
DelayNus.c 213B
总线写子程序.c 361B
选择系统主时钟为8MHz.c 404B
总线初始化子程序.c 1KB
DS18B20温度数据的读取.c 342B
总线读子程序.c 473B
第12章
起始条件产生.c 287B
SDA高电平的产生.c 137B
按页写.c 526B
ACK确认.c 130B
NAK确认.c 115B
顺序地址读.c 662B
Delay_ms.c 202B
随机读.c 552B
获得ACK.c 130B
SCL低电平的产生.c 137B
数据发送.c 296B
数据接收.c 301B
SDA低电平的产生.c 137B
单字节写.c 515B
SCL高电平的产生.c 137B
停止条件产生.c 367B
第6章
看门狗应用举例.c 401B
LED指示灯程序设计.c 428B
采用Timer_A定时功能在P2.0口产生一个方波.c 542B
第5章
AD转换与1602显示1.c 5KB
DAC12应用举例1.c 398B
AD转换与12864显示1.c 3KB
DAC12应用举例4.c 8KB
DAC12应用举例3.c 7KB
单通道AD转换与MAX7219显示.c 3KB
AD转换与MAX7219显示.c 4KB
序列通道AD转换.c 1KB
AD转换与12864显示2.c 4KB
单通道AD转换1.c 935B
AD转换与1602显示2.c 4KB
单通道AD转换2.c 593B
DAC12应用举例2.c 10KB
第14章
计算的子程序.c 288B
宽体封装的244芯片.LIB 23KB
共 94 条
- 1
pk3725069
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 毕业设计-仿生六足机器人的制作全教程源码+电子元器件+程序代码+线路组件图+安装教程+搭建视频教程
- 基于ROS和webots的xrobot机械臂仿真初探C++源码
- 基于ROS的点焊机器人仿真与控制python源码+文档说明+使用说明+详细注释
- 基于vue实现的细粒度交通时空大数据分析系统+源代码+文档说明
- 安卓大作业-基于Electron的交通时空大数据分析挖掘系统客户端(Android)+源代码+文档说明+界面截图
- 基于Java的朱氏集团客户关系管理系统设计源码
- 基于C++的作业提交与批改系统设计源码
- 基于Vue2的移动端电影资讯网站设计源码
- 高分课程设计作业-基于QT的模仿宝石迷阵游戏C++源码+文档说明+界面截图
- 基于Apache Spark的Spark DistCP重实现设计源码
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
前往页