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

📄 read me.txt

📁 时钟芯片ds1302 程序 源程序按版本号放在文件夹中。里面有在Protues中仿真的DSN文件。 打开MPLAB的MCP文件进行编译 将DSN文件载入Protues中 将生成的HEX导入到P
💻 TXT
字号:
/*
说明
     DS1302.h   DS1302中的特殊定义
      DS1302op.h  操作DS1302的函数声明
      DS1302op.c  操作DS1302的函数实现
*.* 其余文件为调试时的辅助文件

源程序按版本号放在文件夹中。里面有在Protues中仿真的DSN文件。
打开MPLAB的MCP文件进行编译
将DSN文件载入Protues中
将生成的HEX导入到Protues中的16F84A中 -> RUN


编译调试环境:
Protues  4.7 SP3
MPLAB    7.5
PICC     8.05 PL1
PIC.jpg 为在Protues中仿真的效果图。(图中为简化线路,未加驱动芯片,晶振等)
*/
/*
版本历史
0.0
确定使用不同的函数实现RAM的读/写,时间的读写,以及多字节的读写
确定读/写单字节用用函数实现
确定各个函数的入口参数及类型
1.0
实现0.0
使用行汇编,并且可选择使用汇编代码还是C代码
做出最基本的功能,满足读写1302的要求
完成八个函数:单字节读/写,多字节读/写 分别为RAM操作和时间操作

2.0
将时间和RAM操作的命令合并,合并为四个函数
更改头文件定义,各函数入口参数及类型不变

3.0
将单/多字节函数合并,将读/写命令合并,只使用一个函数OperateDS
操作方法由参数给出
返回值不显式给出,由代码生成
单字节操作使用中间变量DataTemp,目的:统一单/多字节操作
更改头文件定义,各函数入口参数及类型不变

4.0
去掉部分行汇编,改用C语言操作间接寻址器
不再提供C与汇编的选择,部分汇编改由C编写
将读字节函数嵌入到OperateDS中,提高效率
由于控制字节CMDByte使用一次后便没有用了
因此取消外部参数传递变量DataAll,复用CMDByte
由于写字节函数还需要写操作码,因此用不同于读字节的方法
更改头文件定义,各函数入口参数及类型不变

5.0
去掉多余的东西
头文件改动: 在单字节写入操作时,如果数据以变量形式给出,给出专用的函数以节省资源
variable edition:  WriteDSvar(cmd,VarData) 
                   WriteRAMvar(Address, VarData)  
                   WriteTimevar(Address, VarData)
更改头文件定义,以前各函数入口参数及类型不变

潜在问题:
OperateDS的ptr参数直接传给FSR,没有进行页面处理,可以用FSR=ptr解决
WriteByte与OperateDS不同页时,可能会导致 CMDByte 传递出错,解决方法:重写WriteByte函数增加中间变量 
...

5.1
让5.0的例子可以使用。只修改了DS1302op.h文件中端口定义部分


*/

//Code example:
#include <pic.h>
#include "DS1302op.h"
void main()
{
//Make sure you have already defined the pin in head file DS1302op.h
unsigned char Times[8];
TRISA=0;
UnlockDS1302;
Times[DS_Second]=0x03;
Times[DS_Minute]=0x34;
Times[DS_Hour]=0x17;
Times[DS_Date]=0x21;
Times[DS_Month]=0x01;
Times[DS_Year]=0x07;
//Set time and date to 21-01-07  17:34:03
WriteTimeAll(Times);
}

⌨️ 快捷键说明

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