?? ds12c887.lst
字號:
C51 COMPILER V8.02 DS12C887 07/27/2012 12:43:51 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE DS12C887
OBJECT MODULE PLACED IN DS12C887.OBJ
COMPILER INVOKED BY: F:\新建文件夾\新建文件夾 (2)\C51\BIN\C51.EXE DS12C887.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<reg51.h>
2 #define uchar unsigned char
3 #define uint unsigned int
4 sbit s1=P1^1;
5 sbit s2=P1^3;
6 sbit s3=P1^5;
7 sbit s4=P1^7;
8 sbit lcdrs=P3^0;
9 sbit lcden=P3^1;
10 sbit irq=P3^2;
11 sbit beep=P3^3;
12 sbit as=P3^4;
13 sbit rw=P3^5;
14 sbit ds=P3^6;
15 sbit cs=P3^7;
16 bit flag1,flag_alarm;
17 uchar s1num,flag;
18 char miao,shi,fen,year,month,day,week,alarm_miao,alarm_shi,alarm_fen;
19 uchar code table1[]="20 - - ";
20 uchar code table2[]=" : : ";
21 //////////////////////////////////////////////////////////////////////////////
22 void delay(uint z)
23 {
24 1 uint x,y;
25 1 for(x=z;x>0;x--)
26 1 for(y=110;y>0;y--);
27 1 }
28 void di()
29 {
30 1 beep=1;
31 1 delay(200);
32 1 beep=0;
33 1 }
34 ///////////1602和ds12c887讀寫部分//////////////////////////////////////////
35 void write_ds(uchar add,uchar date)
36 {
37 1 as=0;
38 1 cs=0;
39 1 ds=1;
40 1 rw=1;
41 1 as=1;
42 1 P0=add;
43 1 as=0;
44 1 rw=0;
45 1 P0=date;
46 1 rw=1;
47 1 as=1;
48 1 cs=1;
49 1 }
50 uchar read_ds(uchar add)
51 {
52 1 uchar ds_date;
53 1 as=0;
54 1 cs=0;
55 1 ds=1;
C51 COMPILER V8.02 DS12C887 07/27/2012 12:43:51 PAGE 2
56 1 rw=1;
57 1 as=1;
58 1 P0=add;
59 1 as=0;
60 1 ds=0;
61 1 P0=0xff;
62 1 ds_date=P0;
63 1 ds=1;
64 1 as=1;
65 1 cs=1;
66 1 return ds_date;
67 1 }
68 void write_com(uchar com)
69 {
70 1 lcdrs=0;
71 1 P0=com;
72 1 delay(5);
73 1 lcden=1;
74 1 lcden=0;
75 1 }
76 void write_data(uchar date)
77 {
78 1 lcdrs=1;
79 1 P0=date;
80 1 delay(5);
81 1 lcden=1;
82 1 lcden=0;
83 1 }
84 /////////讀取時間和顯示部分///////////////////////////////////////////////////
85 void gettime()
86 {
87 1 year=read_ds(9);
88 1 month=read_ds(8);
89 1 day=read_ds(7);
90 1 week=read_ds(6);
91 1 shi=read_ds(4);
92 1 fen=read_ds(2);
93 1 miao=read_ds(0);
94 1 }
95 void write_sfm(uchar add,uchar date)
96 {
97 1 uchar shi,ge;
98 1 shi=date/10;
99 1 ge=date%10;
100 1 write_com(0x80+0x40+add);
101 1 write_data(0x30+shi);
102 1 write_data(0x30+ge);
103 1 }
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_data(0x30+shi);
111 1 write_data(0x30+ge);
112 1 }
113 void write_week(uchar week)
114 {
115 1 write_com(0x80+12);
116 1 switch(week)
117 1 {
C51 COMPILER V8.02 DS12C887 07/27/2012 12:43:51 PAGE 3
118 2 case 1: write_data('M');
119 2 delay(5);
120 2 write_data('O');
121 2 delay(5);
122 2 write_data('N');
123 2 break;
124 2 case 2: write_data('T');
125 2 delay(5);
126 2 write_data('H');
127 2 delay(5);
128 2 write_data('U');
129 2 break;
130 2 case 3: write_data('W');
131 2 delay(5);
132 2 write_data('E');
133 2 delay(5);
134 2 write_data('D');
135 2 break;
136 2 case 4: write_data('T');
137 2 delay(5);
138 2 write_data('H');
139 2 delay(5);
140 2 write_data('U');
141 2 break;
142 2 case 5: write_data('F');
143 2 delay(5);
144 2 write_data('R');
145 2 delay(5);
146 2 write_data('I');
147 2 break;
148 2 case 6: write_data('S');
149 2 delay(5);
150 2 write_data('A');
151 2 delay(5);
152 2 write_data('T');
153 2 break;
154 2 case 7: write_data('S');
155 2 delay(5);
156 2 write_data('U');
157 2 delay(5);
158 2 write_data('N');
159 2 break;
160 2 }
161 1 }
162 void display()
163 {
164 1 write_sfm(10,miao);
165 1 write_sfm(7,fen);
166 1 write_sfm(4,shi);
167 1 write_week(week);
168 1 write_nyr(3,year);
169 1 write_nyr(6,month);
170 1 write_nyr(9,day);
171 1 }
172 /////////鍵盤掃描部分//////////////////////////////////////////
173 void read_alarm( )
174 {
175 1 alarm_miao=read_ds(1);
176 1 alarm_fen=read_ds(3);
177 1 alarm_shi=read_ds(5);
178 1 }
179 void keyscan()
C51 COMPILER V8.02 DS12C887 07/27/2012 12:43:51 PAGE 4
180 {
181 1 if(flag_alarm==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_alarm=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 if(flag1==1)
201 3 if(s1num==4)
202 3 s1num=1;
203 3 flag=1;
204 3 while(!s1);
205 3 switch(s1num)
206 3 {
207 4 case 1:write_com(0x80+0x40+10);
208 4 write_com(0x0f);
209 4 break;
210 4 case 2:write_com(0x80+0x40+7);
211 4
212 4 break;
213 4 case 3:write_com(0x80+0x40+4);
214 4
215 4 break;
216 4 case 4:write_com(0x80+12);
217 4
218 4 break;
219 4 case 5:write_com(0x80+9);
220 4
221 4 break;
222 4 case 6:write_com(0x80+6);
223 4
224 4 break;
225 4 case 7:write_com(0x80+3);
226 4
227 4 break;
228 4 case 8:s1num=0;
229 4 write_com(0x0c);
230 4 flag=0;
231 4 write_ds(0,miao);
232 4 write_ds(2,fen);
233 4 write_ds(4,shi);
234 4 write_ds(6,week);
235 4 write_ds(7,day);
236 4 write_ds(8,month);
237 4 write_ds(9,year);
238 4 break;
239 4 }
240 3
241 3 }
C51 COMPILER V8.02 DS12C887 07/27/2012 12:43:51 PAGE 5
242 2
243 2 }
244 1 if(s1num!=0)
245 1 {
246 2 if(s2==0)
247 2 {
248 3 delay(5);
249 3 {
250 4 while(!s2);
251 4 if(s1num==1)
252 4 {
253 5 miao++;
254 5 if(miao==60)
255 5 miao=0;
256 5 write_sfm(10,miao);
257 5 write_com(0x80+0x40+10);
258 5 }
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -