📄 无调时.lst
字号:
C51 COMPILER V8.02 蝊礯时 07/26/2012 17:35:48 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE 蝊礯时
OBJECT MODULE PLACED IN 无调时.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 无调时.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<reg51.h>
2 #define uchar unsigned char
3 #define uint unsigned int
4 sbit lcden=P2^3;
5 sbit lcdrs=P2^4;
6 sbit reset=P2^5;
7 sbit io=P2^6;
8 sbit scl=P2^7;
9 #define DS1302_SECOND 0x80
10 #define DS1302_MINUTE 0x82
11 #define DS1302_HOUR 0x84
12 #define DS1302_WEEK 0x8A
13 #define DS1302_DAY 0x86
14 #define DS1302_MONTH 0x88
15 #define DS1302_YEAR 0x8C
16 char Second,Minute,Hour,Week,Day,Month,Year;
17 uchar DateString[9];
18 uchar TimeString[9];
19 void delay(uint z)
20 {
21 1 uint x,y;
22 1 for(x=z;x>0;x--)
23 1 for(y=110;y>0;y--);
24 1 }
25 void write_byte(uchar date) //实时时钟写入一字节(内部函数)
26 {
27 1 uchar i,j;
28 1 j=date;
29 1 scl=0;
30 1 for(i=8;i>0;i--)
31 1 {
32 2 j=j>>1;
33 2 io=CY; //相当于汇编中的 RRC
34 2 scl=1;
35 2 scl=0;
36 2 }
37 1 }
38
39 uchar read_byte() //实时时钟读取一字节(内部函数)
40 {
41 1 uchar i,j;
42 1 for(i=8;i>0;i--)
43 1 {
44 2 j=j>>1;
45 2 if(io==1)
46 2 j|=0x80; //相当于汇编中的 RRC
47 2 scl=1;
48 2 scl=0;
49 2 }
50 1 return(j);
51 1 }
52
53 void write1302(uchar addr,uchar date) //addr: DS1302地址, date 要写的数据
54 {
55 1 reset=0;
C51 COMPILER V8.02 蝊礯时 07/26/2012 17:35:48 PAGE 2
56 1 scl=0;
57 1 reset=1;
58 1 write_byte(addr);
59 1 write_byte(date); // 写1Byte数据
60 1 scl=1;
61 1 reset=0;
62 1 }
63
64 uchar read1302(uchar addr) //读取DS1302某地址的数据
65 {
66 1 uchar date;
67 1 reset=0;
68 1 scl=0;
69 1 reset=1;
70 1 write_byte(addr|0x01); // 地址,命令
71 1 date=read_byte(); // 读1Byte数据
72 1 scl=1;
73 1 reset=0;
74 1 return(date);
75 1 }
76 void gettime()
77 {
78 1
79 1 uchar value;
80 1 value=read1302(DS1302_SECOND);
81 1 Second=((value&0x70)>>4)*10+(value&0x0F);
82 1
83 1 value=read1302(DS1302_MINUTE);
84 1 Minute=((value&0x70)>>4)*10+(value&0x0F);
85 1
86 1 value=read1302(DS1302_HOUR);
87 1 Hour=((value&0x70)>>4)*10+(value&0x0F);
88 1
89 1 value=read1302(DS1302_DAY);
90 1 Day=((value&0x70)>>4)*10+(value&0x0F);
91 1
92 1 value=read1302(DS1302_WEEK);
93 1 Week=((value&0x70)>>4)*10+(value&0x0F);
94 1
95 1 value=read1302(DS1302_MONTH);
96 1 Month=((value&0x70)>>4)*10+(value&0x0F);
97 1
98 1 value=read1302(DS1302_YEAR);
99 1 Year=((value&0x70)>>4)*10+(value&0x0F);
100 1
101 1 }
102 void Datechange()
103 {
104 1 DateString[0]=Year/10+0x30;
105 1 DateString[1]=Year%10+0x30;
106 1 DateString[2]='-';
107 1 DateString[3]=Month/10+'0';
108 1 DateString[4]=Month%10+'0';
109 1 DateString[5]='-';
110 1 DateString[6]=Day/10+'0';
111 1 DateString[7]=Day%10+'0';
112 1 DateString[8]='\0';
113 1 }
114
115 void Timechange()
116 {
117 1 TimeString[0]=Hour/10+'0';
C51 COMPILER V8.02 蝊礯时 07/26/2012 17:35:48 PAGE 3
118 1 TimeString[1]=Hour%10+'0';
119 1 TimeString[2]=':';
120 1 TimeString[3]=Minute/10+'0';
121 1 TimeString[4]=Minute%10+'0';
122 1 TimeString[5]=':';
123 1 TimeString[6]=Second/10+'0';
124 1 TimeString[7]=Second%10+'0';
125 1 TimeString[8]='\0';
126 1 }
127 /////////////////////////////////////////////////////////////////////////////////////////////////////////
128 void write_com(uchar com)
129 {
130 1 lcdrs=0;
131 1 P0=com;
132 1 delay(5);
133 1 lcden=1;
134 1 lcden=0;
135 1 }
136 void write_data(uchar date)
137 {
138 1 lcdrs=1;
139 1 P0=date;
140 1 delay(5);
141 1 lcden=1;
142 1 lcden=0;
143 1 }
144 void display()
145 {
146 1 uchar num;
147 1 write_com(0x81);
148 1 write_data(0x32);
149 1 write_data(0x30);
150 1 for(num=0;num<9;num++)
151 1 {
152 2 write_data(DateString[num]);
153 2 delay(5);
154 2 }
155 1 write_com(0x80+0x44);
156 1 for(num=0;num<9;num++)
157 1 {
158 2 write_data(TimeString[num]);
159 2 delay(5);
160 2 }
161 1 write_com(0x80+12);
162 1 switch(Week)
163 1 {
164 2 case 1: write_data('M');
165 2 delay(5);
166 2 write_data('O');
167 2 delay(5);
168 2 write_data('N');
169 2 break;
170 2 case 2: write_data('T');
171 2 delay(5);
172 2 write_data('H');
173 2 delay(5);
174 2 write_data('U');
175 2 break;
176 2 case 3: write_data('W');
177 2 delay(5);
178 2 write_data('E');
179 2 delay(5);
C51 COMPILER V8.02 蝊礯时 07/26/2012 17:35:48 PAGE 4
180 2 write_data('D');
181 2 break;
182 2 case 4: write_data('T');
183 2 delay(5);
184 2 write_data('H');
185 2 delay(5);
186 2 write_data('U');
187 2 break;
188 2 case 5: write_data('F');
189 2 delay(5);
190 2 write_data('R');
191 2 delay(5);
192 2 write_data('I');
193 2 break;
194 2 case 6: write_data('S');
195 2 delay(5);
196 2 write_data('A');
197 2 delay(5);
198 2 write_data('T');
199 2 break;
200 2 case 7: write_data('S');
201 2 delay(5);
202 2 write_data('U');
203 2 delay(5);
204 2 write_data('N');
205 2 break;
206 2 }
207 1 }
208
209 ////////////////////////////////////////////////////////////////////////////////////////////////////////
210 void lcd_init()
211 {
212 1 uchar num;
213 1 lcden=0;
214 1 write_com(0x38);
215 1 write_com(0x0c);
216 1 write_com(0x06);
217 1 write_com(0x01);
218 1 write_com(0x81);
219 1
220 1 }
*** WARNING C280 IN LINE 212 OF 无调时.C: 'num': unreferenced local variable
221 void init1302()
222 {
223 1 write1302(0x8e,0x00);
224 1 write1302(0x80,((50/10)<<4|(50%10))); //根据写秒寄存器命令字,写入秒的初始值
225 1 write1302(0x82,((59/10)<<4|(59%10))); //根据写分寄存器命令字,写入分的初值
226 1 write1302(0x84,((12/10)<<4|(12%10)));
227 1 write1302(0x86,((29/10)<<4|(29%10)));
228 1 write1302(0x88,((2/10)<<4|(2%10)));
229 1 write1302(0x8c,((12/10)<<4|(12%10)));
230 1 write1302(0x8a,((4/10)<<4|(4%10)));
231 1 }
232 void main()
233 {
234 1 lcd_init();
235 1 init1302();
236 1
237 1 while(1)
238 1 {
239 2 gettime();
240 2 Datechange();
C51 COMPILER V8.02 蝊礯时 07/26/2012 17:35:48 PAGE 5
241 2 Timechange();
242 2 display();
243 2 }
244 1
245 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 755 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 25 1
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 1 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -