📄 main.lst
字号:
C51 COMPILER V8.05a MAIN 04/18/2007 21:34:58 PAGE 1
C51 COMPILER V8.05a, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<reg51.h>
2 #include <intrins.h>
3 #include <stdio.h>
4
5 #define uint unsigned int
6 #define uchar unsigned char
7 #define Nop() _nop_()
8 sbit ACC0 = ACC^0;
9 sbit ACC7 = ACC^7;
10 sbit T_CLK = P3^1; /*实时时钟时钟线引脚 */
11 sbit T_IO = P3^2; /*实时时钟数据线引脚 */
12 sbit T_RST = P3^0; /*实时时钟复位线引脚 */
13
14 sbit RS=P1^0; //设置连接线
15 sbit RW=P1^1;
16 sbit E=P1^2;
17 sbit D7=P2^7;
18 uchar a[7]={0,0,0,1,1,0,7};
19 uchar b[7];
20 uint SEC,MIN,HOUR,DAY,MONTH,YEAR,WEEKDAY;
21 unsigned char year_lunar;
22 unsigned char month_lunar;
23 unsigned char day_lunar;
24 uint yue,ri;
25 ///以下为LCD驱动程序
26 void busy()
27 {
28 1 do {P2=0xff;
29 2 RS=0;
30 2 RW=1;
31 2 E=0;
32 2 E=1;
33 2 }while (D7);
34 1 }
35
36 void write_com(char commend)
37 {
38 1 busy();
39 1 P2=commend;
40 1 RS=0;
41 1 RW=0;
42 1 E=0;
43 1 }
44
45 void write_char(char lcddata)
46 { busy();
47 1 P2=lcddata;
48 1 RS=1;
49 1 RW=0;
50 1 E=0;
51 1 }
52
53 void write_string(char * s)
54 {
55 1 while (*s!=0x00)
C51 COMPILER V8.05a MAIN 04/18/2007 21:34:58 PAGE 2
56 1 write_char(*s++);
57 1 }
58
59 void i_lcd()//
60 {
61 1 write_com(0x38);//置功能
62 1 write_com(0x01);//清屏
63 1 write_com(0x06);//输入模式
64 1 write_com(0x0c);//显示开
65 1 }
66 /////以上为LCD驱动程序
67
68 void delay(uint i) //延时几豪秒
69 {
70 1 uint j,k;
71 1 for(j=0;j<=i;j++)
72 1 for(k=0;k<125;k++); //1MS
73 1 }
74 //////////将数据写入DS1302
75 //////////将数据写入DS1302
76 void RTInputByte(unsigned char d)
77 {
78 1 unsigned char i;
79 1 ACC = d;
80 1 for(i=8; i>0; i--)
81 1 {
82 2 Nop();
83 2 T_IO = ACC0; /*相当于汇编中的 RRC */
84 2 Nop();
85 2 T_CLK = 1;
86 2 Nop();
87 2 T_CLK = 0;
88 2 Nop();
89 2 ACC = ACC >> 1;
90 2 Nop();
91 2 }
92 1 }
93 /********************************************************************
94
95
96 ***********************************************************************/
97 unsigned char RTOutputByte(void)
98 {
99 1 unsigned char i;
100 1 T_IO = 1;
101 1 for(i=8; i>0; i--)
102 1 {
103 2 Nop();
104 2 ACC = ACC >>1; /*相当于汇编中的 RRC */
105 2 Nop();
106 2 ACC7 = T_IO;
107 2 Nop();
108 2 T_CLK = 1;
109 2 Nop();
110 2 T_CLK = 0;
111 2 Nop();
112 2 }
113 1 return(ACC);
114 1 }
115 /********************************************************************
116
117
C51 COMPILER V8.05a MAIN 04/18/2007 21:34:58 PAGE 3
118 ***********************************************************************/
119 void W1302(unsigned char ucAddr, unsigned char ucDa)
120 {
121 1 T_RST = 0;
122 1 Nop();
123 1 T_CLK = 0;
124 1 Nop();
125 1 T_RST = 1;
126 1 Nop();
127 1 RTInputByte(ucAddr); /* 地址,命令 */
128 1 Nop();
129 1 RTInputByte(ucDa); /* 写1Byte数据*/
130 1 Nop();
131 1 T_CLK = 1;
132 1 Nop();
133 1 T_RST = 0;
134 1 }
135 /********************************************************************
136
137 ***********************************************************************/
138 unsigned char R1302(unsigned char ucAddr)
139 {
140 1 unsigned char ucData;
141 1 T_RST = 0;
142 1 Nop();
143 1 T_CLK = 0;
144 1 Nop();
145 1 T_RST = 1;
146 1 Nop();
147 1 RTInputByte(ucAddr); /* 地址,命令 */
148 1 Nop();
149 1 ucData = RTOutputByte(); /* 读1Byte数据 */
150 1 Nop();
151 1 T_CLK = 1;
152 1 Nop();
153 1 T_RST = 0;
154 1 Nop();
155 1 return(ucData);
156 1 }
157 /********************************************************************
158
159
160 ***********************************************************************/
161 void BurstW1302T(unsigned char *pWClock)
162 {
163 1 unsigned char i;
164 1 W1302(0x8e,0x00); /* 控制命令,WP=0,写操作?*/
165 1 Nop();
166 1 T_RST = 0;
167 1 Nop();
168 1 T_CLK = 0;
169 1 Nop();
170 1 T_RST = 1;
171 1 Nop();
172 1 RTInputByte(0xbe); /* 0xbe:时钟多字节写命令 */
173 1 Nop();
174 1 for (i = 8; i>0; i--) /*8Byte = 7Byte 时钟数据 + 1Byte 控制*/
175 1 {
176 2 Nop();
177 2 RTInputByte(*pWClock); /* 写1Byte数据*/
178 2 Nop();
179 2 pWClock++;
C51 COMPILER V8.05a MAIN 04/18/2007 21:34:58 PAGE 4
180 2 Nop();
181 2 }
182 1 T_CLK = 1;
183 1 Nop();
184 1 T_RST = 0;
185 1 }
186 /********************************************************************
187
188
189 ***********************************************************************/
190 void BurstR1302T(unsigned char *pRClock)
191 {
192 1 unsigned char i;
193 1 T_RST = 0;
194 1 Nop();
195 1 T_CLK = 0;
196 1 Nop();
197 1 T_RST = 1;
198 1 Nop();
199 1 RTInputByte(0xbf); /* 0xbf:时钟多字节读命令 */
200 1 Nop();
201 1 for (i=8; i>0; i--)
202 1 {
203 2 Nop();
204 2 *pRClock = RTOutputByte(); /* 读1Byte数据 */
205 2 Nop();
206 2 pRClock++;
207 2 Nop();
208 2 }
209 1 T_CLK = 1;
210 1 Nop();
211 1 T_RST = 0;
212 1 }
213 /********************************************************************
214
215
216 ***********************************************************************/
217 void BurstW1302R(unsigned char *pWReg)
218 {
219 1 unsigned char i;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -