📄 callds05.c
字号:
/********************************************************************/
/* 这是调用DS1305汇编程序(DS1305B.ASM)的C51程序, */
/* 文件名CALLDS05.c */
/* 功能: 运行此程序,可将DS1305的时钟日历(7 bytes) 和RAM(96 bytes) */
/* 读出并将新的时钟日历值和RAM值置入。本程序只可从RAM读出16个字节或 */
/* 写入16个字节 */
/**********************************************************************/
#include <reg52.h> //单片机头文件
#include <stdio.h>
#include <math.h>
#include <absacc.h>
#define uchar unsigned char //简化定义
#define uint unsigned int
void delay1(uint x);
void fill60(void);
void fill67(void);
extern uchar chai5; //把全局变量chai5声明为外部变量
extern uchar a_func3(uchar,uchar);//把a_func3 声明为外部函数
uchar idata w1,w2,w3,w4,w5,w6,w7,w8,w9,wa,wb,wc,wd,we,wf,wg;
void delay1(uint x) //延时程序
{
uchar tw;
while (x-->0){
for (tw=0;tw<125;tw++){;}
}
}
void fill60(void) /* 准备初始日历时钟值*/
{
DBYTE[0x60]=0x00;
DBYTE[0x61]=0x15;
DBYTE[0x62]=0x10;
DBYTE[0x63]=0x31;
DBYTE[0x64]=0x12;
DBYTE[0x65]=0x05;
DBYTE[0x66]=0x01;
}
void fill67(void) /* 准备初始RAM值*/
{ DBYTE[0x60]=0x10;
DBYTE[0x61]=0x12;
DBYTE[0x62]=0x13;
DBYTE[0x63]=0x14;
DBYTE[0x64]=0x15;
DBYTE[0x65]=0x16;
DBYTE[0x66]=0x17;
DBYTE[0x67]=0x18;
DBYTE[0x68]=0x19;
DBYTE[0x69]=0x22;
DBYTE[0x6a]=0x33;
DBYTE[0x6b]=0x44;
DBYTE[0x6c]=0x55;
DBYTE[0x6d]=0x66;
DBYTE[0x6e]=0x88;
DBYTE[0x6f]=0x77;
}
void main() //主程序
{
SP=0xdf;
delay1(1);
EA=0;
chai5=a_func3(0x00,0x00); /* 读DS1305日历时钟值 */
w1=DBYTE[0x60];
w2=DBYTE[0x61];
w3=DBYTE[0x62];
w4=DBYTE[0x63];
w5=DBYTE[0x64];
w6=DBYTE[0x66];
chai5=a_func3(0x00,0xFF); /*读DS1305 RAM值 */
w1=DBYTE[0x60];
w2=DBYTE[0x61];
w3=DBYTE[0x62];
w4=DBYTE[0x63];
w5=DBYTE[0x64];
w6=DBYTE[0x65];
w7=DBYTE[0x66];
w8=DBYTE[0x67];
w9=DBYTE[0x68];
wa=DBYTE[0x69];
wb=DBYTE[0x6a];
wc=DBYTE[0x6b];
wd=DBYTE[0x6c];
we=DBYTE[0x6d];
wf=DBYTE[0x6e];
wg=DBYTE[0x6f];
fill60(); /* 输入初始日历时钟值 */
chai5=a_func3(0xFF,0x00); /* 写DS1305日历时钟值*/
fill67(); /* 输入初始RAM值 */
chai5=a_func3(0xFF,0xFF); /* 写DS1305 RAM值 */
while(1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -