📄 ds1302.lst
字号:
C51 COMPILER V7.20 DS1302 07/12/2008 10:30:08 PAGE 1
C51 COMPILER V7.20, COMPILATION OF MODULE DS1302
OBJECT MODULE PLACED IN ds1302.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ds1302.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /************************Ds1302时钟芯片***************************/
2
3 #include "dpj.h"
4
5
6 /*****************************************************************/
7
8 sbit t_clk=P2^7;
9 sbit t_io=P1^4 ;
10 sbit t_rst=P1^5 ;
11
12 /*****************************************************************/
13
14
15
16 /*******************写入1byte数据到ds1302*************************/
17 void rt_setbyte(byte ucda)
*** ERROR C141 IN LINE 17 OF DS1302.C: syntax error near 'ucda', expected ')'
18 {
19 1 byte i,acc,acc0;
*** ERROR C141 IN LINE 19 OF DS1302.C: syntax error near 'i'
*** ERROR C202 IN LINE 19 OF DS1302.C: 'i': undefined identifier
20 1 acc=ucda;
*** ERROR C202 IN LINE 20 OF DS1302.C: 'acc': undefined identifier
21 1 for(i=8;i>0;i--)
*** ERROR C202 IN LINE 21 OF DS1302.C: 'i': undefined identifier
22 1 {
23 2 t_io=acc0;
*** ERROR C202 IN LINE 23 OF DS1302.C: 'acc0': undefined identifier
24 2 t_clk=1;
25 2 t_clk=0;
26 2 acc=acc>>1;
*** ERROR C202 IN LINE 26 OF DS1302.C: 'acc': undefined identifier
27 2 }
28 1 }
29 /*****************************************************************/
30
31
32
33 /*******************从ds1302读取1byte数据*************************/
34
35 byte rt_getbyte(void)
*** ERROR C129 IN LINE 35 OF DS1302.C: missing ';' before 'rt_getbyte'
36 {
37 byte i;
38 for(i=8;i>0;i--)
39 {
40 acc=acc>>1;
41 acc7=t_i0;
42 t_clk=1;
43 t_clk=0;
44 }
45 return (acc);
46 }
47 /*****************************************************************/
C51 COMPILER V7.20 DS1302 07/12/2008 10:30:08 PAGE 2
48
49
50
51 /*******************先写地址,后写命令/数据***********************/
52 void rt_w1302(byte caddr,byte cdata)
53 {
54 t_rst=0;
55 t_clk=0;
56 t_rst=1;
57 rt_setbyte(caddr); /*地址,命令*/
58 rt_setbyte(cdata); /*写1byte数据*/
59 t_clk=1;
60 t_rst=0;
61 }
62 /*****************************************************************/
63
64
65
66 /******************先写地址,后写命令/数据************************/
67 byte rt_r1302(byte caddr)
68 {
69 byte cadta;
70 t_rst=0;
71 t_clk=0;
72 t_rst=1;
73 rt_setbyte(caddr); /*地址,命令*/
74 cdata=rt_getbyte(); /*读取1byte数据*/
75 t_clk=1;
76 t_rst=0;
77 return(cdata);
78 }
79 /*****************************************************************/
80
81
82
83 /************先写地址,后写数据(时钟多字节模式)******************/
84 void rt_burstw1302t(byte *psecda)
85 {
86 byte i;
87 rt_w1302(0x8e,0x00);
88 t_rst=0;
89 t_clk=0;
90 t_rst=1;
91 rt_setbyte(0xbe); /*0xbe:时钟多字节写命令*/
92 for(i=8;i>0;i--)
93 {
94 rt_setbyte(*psecda); /*写1byte数据*/
95 psecda++;
96 }
97 t_clk=1;
98 t_rst=0;
99 }
100 /****************************************************************/
101
102
103
104 /*********先写地址,后读命令/数据(时钟多字节模式)**************/
105 void rt_burstr1302t(byte *psecda)
106 {
107 byte i;
108 t_rst=0;
109 t_clk=0;
C51 COMPILER V7.20 DS1302 07/12/2008 10:30:08 PAGE 3
110 t_rst=1;
111 rt_setbyte(0xbf); /*0xbe:时钟多字节读命令*/
112 for(i=8;i>0;i--)
113 {
114 *psecda=rt_getbyte(); /*读取1byte数据*/
115 psecda++;
116 }
117 t_clk=1;
118 t_rst=0;
119 }
120 /****************************************************************/
121
122
123
124 /***********先写地址,后写数据(寄存器多字节模式)***************/
125 void rt_burstr1302t(byte *preda)
126 {
127 byte i;
128 rt_w1302(0x8e,0x00);
129 t_rst=0;
130 t_clk=0;
131 t_rst=1;
132 rt_setbyte(0xfe); /*0xbe:寄存器多字节写命令*/
133 for(i=31;i>0;i--)
134 {
135 rt_setbyte(*preda); /*写1byte数据*/
136 preda++;
137 }
138 t_clk=1;
139 t_rst=0;
140 }
141 /****************************************************************/
142
143
144
145 /********先写地址,后读命令/数据(寄存器多字节模式)*************/
146 void rt_burstr1302r(byte *preda)
147 {
148 byte i;
149 rt_w1302(0x8e,0x00);
150 t_rst=0;
151 t_clk=0;
152 t_rst=1; /*0xbe:寄存器多字节读命令*/
153 rt_setbyte(0xff);
154 for(i=31;i>0;i--)
155 {
156 *preda=rt_getbyte(); /*读取1byte数据*/
157 preda++;
158 }
159 t_clk=1;
160 t_rst=0;
161 }
162 /****************************************************************/
163
164
165
166 /************************设置初始时间****************************/
167 void rt_set1302(byte *psecda)
168 {
169 byte i;
170 byte caddr=0x80;
171 rt_w1302(0x8e,0x00); /*秒 分 时 日 月 星期 年*/
C51 COMPILER V7.20 DS1302 07/12/2008 10:30:08 PAGE 4
172 for(i=7;i>0;i--)
173 {
174 rt_w1302(caddr,*psecda);
175 caddr=2;
176 }
177 rt_w1302(0x8e,0x80);
178 }
179 /*****************************************************************/
180
181
182
183 /******************读取ds1302时间********************************/
184 void rt_get1302(byte ccurtime[])
185 {
186 byte i;
187 byte caddr=0x81;
188 for(i=0;i=7;i++)
189 {
190 ccurtime[i]=uc_r1302(ucaddr); /*格式设为:秒 分 时 日 月 星期 年*/
191 caddr+=2;
192 }
193 rt_w1302(0x8e,0x80);
194 }
195 /*****************************************************************/
196
C51 COMPILATION COMPLETE. 0 WARNING(S), 8 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -