📄 ds12c887.lst
字号:
C51 COMPILER V7.09 DS12C887 02/11/2009 12:02:16 PAGE 1
C51 COMPILER V7.09, COMPILATION OF MODULE DS12C887
OBJECT MODULE PLACED IN DS12C887.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE DS12C887.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<reg52.h>
2 #include"define.h"
3
4 extern void delay(uint z);
5 //extern void write_com(uchar com);
6 //extern void write_date(uchar date);
7 extern void tempchange();
8 extern uint get_temp();
9 /*void delay(uint z)
10 {
11 uint x,y;
12 for(x=z;x>0;x--)
13 for(y=110;y>0;y--);
14 }*/
15 //写指令
16 void write_com(uchar com)
17 {
18 1 rs=0;
19 1 lcden=0;
20 1 P0=com;
21 1 delay(3);
22 1 lcden=1;//高脉冲
23 1 delay(3);
24 1 lcden=0;
25 1 }
26 //写数据
27 void write_date(uchar date)
28 {
29 1 rs=1;
30 1 lcden=0;
31 1 P0=date;
32 1 delay(3);
33 1 lcden=1;
34 1 delay(3);
35 1 lcden=0;
36 1 }
37 void di()
38 {
39 1 beep=0;
40 1 delay(100);
41 1 beep=1;
42 1 }
43 void init()
44 {
45 1 uchar num;
46 1 EA=1;
47 1 EX1=1;
48 1 IT1=1;
49 1 flag1=0;
50 1 //flag=0;
51 1 s1num=0;
52 1 week=1;
53 1 dula=0;
54 1 wela=0;
55 1 lcden=0;
C51 COMPILER V7.09 DS12C887 02/11/2009 12:02:16 PAGE 2
56 1 rd=0;
57 1 // write_ds(0x0A,0x20);
58 1 // write_ds(0x0B,0x26);
59 1 // read_ds(0x0c);
60 1 // set_time();
61 1 set_alarm(15,12,8);
62 1 write_com(0x38);
63 1 write_com(0x0c);//开显示,光标不显示,光标不闪烁
64 1 write_com(0x06);
65 1 write_com(0x01);
66 1 write_com(0x80);
67 1 for(num=0;num<15;num++)
68 1 {
69 2 write_date(table[num]);
70 2 delay(1);
71 2 }
72 1 write_com(0x80+0x40);
73 1 for(num=0;num<15;num++)
74 1 {
75 2 write_date(table1[num]);
76 2 delay(1);
77 2 }
78 1 }
79 //温度显示子函数
80 void wendu(uchar temp)
81 {
82 1 uchar bai,shi,ge;
83 1 bai=temp/100;
84 1 shi=temp%100/10;
85 1 ge=temp%10;
86 1 write_com(0x80+0x40+11);
87 1 write_date(0x30+bai);
88 1 write_date(0x30+shi);
89 1 write_date(0x2e);
90 1 write_date(0x30+ge);
91 1 write_date(0x63);
92 1 }
93 //时分秒刷新子函数
94 void write_sfm(uchar add,uchar date)
95 {
96 1 uchar shi,ge;
97 1 shi=date/10;
98 1 ge=date%10;
99 1 write_com(0x80+0x40+add);
100 1 write_date(0x30+shi);
101 1 write_date(0x30+ge);
102 1 }
103 //年月日刷新子函数
104 void write_nyr(uchar add,uchar date)
105 {
106 1 uchar shi,ge;
107 1 shi=date/10;
108 1 ge=date%10;
109 1 write_com(0x80+add);
110 1 write_date(0x30+shi);
111 1 write_date(0x30+ge);
112 1 }
113 void write_week(uchar add,uchar date)
114 {
115 1 switch(date)
116 1 {
117 2 case 1:
C51 COMPILER V7.09 DS12C887 02/11/2009 12:02:16 PAGE 3
118 2 {
119 3 write_com(0x80+add);
120 3 write_date(0x4d);
121 3 //delay(5);
122 3 write_date(0x4f);
123 3 // delay(5);
124 3 write_date(0x4e);
125 3 }
126 2 break;
127 2 case 2:
128 2 {
129 3 write_com(0x80+add);
130 3 write_date(0x54);
131 3 // delay(5);
132 3 write_date(0x55);
133 3 // delay(5);
134 3 write_date(0x45);
135 3 }
136 2 break;
137 2 case 3:
138 2 { write_com(0x80+add);
139 3 write_date(0x57);
140 3 // delay(5);
141 3 write_date(0x45);
142 3 // delay(5);
143 3 write_date(0x44);}
144 2 break;
145 2 case 4:
146 2 { write_com(0x80+add);
147 3 write_date(0x54);
148 3 // delay(5);
149 3 write_date(0x48);
150 3 // delay(5);
151 3 write_date(0x55);}
152 2 break;
153 2 case 5:
154 2 { write_com(0x80+add);
155 3 write_date(0x46);
156 3 // delay(5);
157 3 write_date(0x52);
158 3 // delay(5);
159 3 write_date(0x49);}
160 2 break;
161 2 case 6:
162 2 { write_com(0x80+add);
163 3 write_date(0x53);
164 3 // delay(5);
165 3 write_date(0x41);
166 3 // delay(5);
167 3 write_date(0x54);}
168 2 break;
169 2 case 7:
170 2 { write_com(0x80+add);
171 3 write_date(0x53);
172 3 // delay(5);
173 3 write_date(0x55);
174 3 // delay(5);
175 3 write_date(0x4e);}
176 2 break;
177 2 }
178 1 }
179 void keyscan()
C51 COMPILER V7.09 DS12C887 02/11/2009 12:02:16 PAGE 4
180 {
181 1 if(flag_ri==1)//按任意键取消报警
182 1 {
183 2 if((s1==0)||(s2==0)||(s3==0)||(s4==0))
184 2 {
185 3 delay(5);
186 3 if((s1==0)||(s2==0)||(s3==0)||(s4==0))
187 3 {
188 4 while(!(s1&&s2&&s3&&s4));
189 4 di();
190 4 flag_ri=0;
191 4 }
192 3 }
193 2 }
194 1 if(s1==0)
195 1 {
196 2 delay(5);
197 2 if(s1==0)
198 2 {
199 3 s1num++;
200 3 flag=1;
201 3 if(flag1==1)
202 3 if(s1num==4)
203 3 s1num=1;
204 3 while(!s1);
205 3 di();
206 3 tempchange();
207 3 wendu(get_temp());
208 3 switch(s1num)
209 3 {
210 4 case 1: write_com(0x80+0x40+8);
211 4 write_com(0x0f);//开显示,光标显示并闪烁
212 4 break;
213 4 case 2: write_com(0x80+0x40+5);
214 4 break;
215 4 case 3: write_com(0x80+0x40+2);
216 4 break;
217 4 case 4: write_com(0x80+13);
218 4 break;
219 4 case 5: write_com(0x80+10);
220 4 break;
221 4 case 6: write_com(0x80+7);
222 4 break;
223 4 case 7: write_com(0x80+4);
224 4 break;
225 4 case 8: s1num=0;
226 4 write_com(0x0c);
227 4 flag=0;
228 4 write_ds(0,miao);
229 4 write_ds(2,fen);
230 4 write_ds(4,shi);
231 4 write_ds(6,week);
232 4 write_ds(7,day);
233 4 write_ds(8,month);
234 4 write_ds(9,year);
235 4 break;
236 4 }
237 3 }
238 2 }
239 1 if(s1num!=0)
240 1 {
241 2 if(s2==0)
C51 COMPILER V7.09 DS12C887 02/11/2009 12:02:16 PAGE 5
242 2 {
243 3 delay(5);
244 3 if(s2==0)
245 3 {
246 4 while(!s2);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -