📄 read me.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 + -