?? 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 + -