?? s52.lst
字號:
C51 COMPILER V8.05a S52 12/21/2008 21:40:08 PAGE 1
C51 COMPILER V8.05a, COMPILATION OF MODULE S52
OBJECT MODULE PLACED IN s52.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE s52.c OMF2 BROWSE DEBUG
line level source
1 #include<reg51.h>
2 #include<intrins.h>
3 #include<dis18b20.c>
4 #include<AT24C01A.c>
5 #include<lcd.c>
6 #define ulint unsigned long int
7 #define uchar unsigned char
8 #define uint unsigned int
9 void DisplayTemper();
10 void Temp();
11 void circle();
12 sbit k1=P1^0;
13 sbit k2=P1^1;
14 sbit k3=P1^2;
15 sbit k4=P1^3;
16 sbit k5=P1^4;
17 uchar flag;
18 uchar v ;
19 ulint tt;
20 //sbit spk=P0^0;
21 uchar rev1,rev2,rev3,rev4,revx;
22 sbit WP= P1^3; /*硬件寫保護*/
23 //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
24 void delayy(uchar count)
25 {
26 1 uchar i;
27 1 for(i=0;i<count;i++);
28 1 }
29 //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
30 int key ()
31 {
32 1 int z;
33 1 uchar d;
34 1 d=P1;
35 1 flag=0;
36 1 z=0;
37 1 P1=0xff;
38 1 k1= 0;k2=1;
39 1 if (k3==0) z=1;
40 1 if (k4==0) z=2;
41 1 if (k5==0) z=3;
42 1 k2=0;k1=1;
43 1 if (k3==0) z=4;
44 1 if (k4==0) z=5;
45 1 if (k5==0) z=6;
46 1 P1=d;
47 1 return (z);
48 1 }
49 //????????????????????????????????????????????????????????????????????
50 unsigned char code led[]={0xC0,0xF9,0xA2,0xB0,0x99, /* 0 1 2 3 4 */
51 0x94,0x84,0xF8,0x80,0x90, /* 5 6 7 8 9 */
52 0x88,0x85,0xC6,0xA1,0x86,0x8E,0xff}; /* A B C D E F*/
53 unsigned char code led1[]={0x40,0x79,0x22,0x30,0x19, /* 0 1 2 3 4 */
54 0x14,0x04,0x78,0x00,0x10, /* 5 6 7 8 9 */
55 0x08,0x05,0x46,0x21,0x06,0x0E,0xff}; /* A B C D E F*/
C51 COMPILER V8.05a S52 12/21/2008 21:40:08 PAGE 2
56 unsigned char code cir2[]={0xfe,0xfe,0xfe,0xfe,0xdf,0xef,0xf7,0xf7,0xf7,0xf7,0xfd,0xfb};
57 unsigned char code cir3[]={0X7f,0Xbf,0Xdf,0Xef,0Xef,0Xef,0Xef,0Xdf,0Xbf,0X7f,0X7f,0X7f};
58 //??????????????????????????????????????????????????????????????
59 void delay(uchar t)
60 { uint i,j;
61 1 for(i=t;i>0;i--) {for(j=200;j>0;j--); v=key(); if (v!=0) { P2=led[v]; P3=0x0f;} }
62 1 }
63 //&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
64 void display(uchar a,uchar b,uchar c,uchar d)
65 {
66 1 if ( a==0) {P2=0xff; P3=0Xef;}else { P2=led[a] ; P3=0Xef;}
67 1 delay(2);
68 1 if (b==0) { if (a==0) { P2=0xff;P3=0Xdf;} else { P2=led[b] ; P3=0Xdf;}}else { P2=led[b] ;P3=0Xdf;}
69 1 delay(2);
70 1 if (c==0) { if (b==0) { if (a==0) {P2=0xff; P3=0Xbf;delay(2);}else { P2=led[c] ; P3=0Xbf;delay(2);} }
71 2 else { P2=led[c] ; P3=0Xbf;delay(2);} }
72 1 else { P2=led[c] ; P3=0Xbf;delay(2);}
73 1 P2=led[d] ;P3=0X7f; delay(2);
74 1 }
75 //$$$$$$$$$$$$$$$displat$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
76 void displat(uchar a,uchar b,uchar c,uchar d)
77 {
78 1 if ( a==0) {P2=0xff; P3=0Xef;}else { P2=led[a];P3=0Xef;}
79 1 delay(2);
80 1 if (b==0) { if (a==0) { P2=0xff;P3=0Xdf;} else { P2=led[b];P3=0Xdf;}}else { P2=led[b];P3=0Xdf;}
81 1 delay(2);
82 1 if (c==0) { if (b==0) { if (a==0) {P2=0xff; P3=0Xbf;delay(2);}else { P2=led1[c]; P3=0Xbf;delay(2);} }
83 2 else { P2=led1[c] ; P3=0Xbf;delay(2);} }
84 1 else { P2=led1[c];P3=0Xbf;delay(2);}
85 1 P2=led[d];P3=0X7f;delay(2);
86 1 }
87 //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
88 void displar(uchar a,uchar b,uchar c,uchar d)
89 {
90 1 P2=led[a] ; P3=0Xef;
91 1 delay(2);
92 1 P2=led[b] ; P3=0Xdf;
93 1 delay(2);
94 1 P2=led[c] ; P3=0Xbf;
95 1 delay(2);
96 1 P2=led[d] ; P3=0X7f;
97 1 delay(2);
98 1 }
99 //================main==============
100 int main()
101 {
102 1 uchar Number[4]={8,8,8,8};
103 1 uchar i,o,w,m ;
104 1 char a,b,c,d;
105 1 uint h,h1;
106 1 int P;
107 1 h=0;h1=0;
108 1 SCON=0xd0;PCON=0x80;TMOD=0x21;TL1=0xfc;TH1=0xfc;
109 1 EA=0;TR1=1;
110 1 P=0;P1=0xff;
111 1 rev1=0x00;
112 1 rev2=0x00;
113 1 rev3=0x00;
114 1 rev4=0x00;
115 1 revx=0x00;
116 1 for(i=0;i<5;i++) { P2=0x00;P3=0x00;delay(200);P2=0x00;P3=0xff;delay(200);}
117 1 init_1602();clear_1602();dis_1602str(" AVR-S51");
C51 COMPILER V8.05a S52 12/21/2008 21:40:08 PAGE 3
118 1 send_cmd(second);dis_1602str("Welcome to 615");
119 1 //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
120 1 Y:
121 1 if (revx == 0x05)
122 1 {EA=0;
123 2 w=rev1;m=rev2; w=w>>4; a=w;w=rev1&0x0f;b=w;w=rev2; w=w>>4; c=w; w=m&0x0f; d=w;
124 2 for (i=50;i>0;i--) displar(a,b,c,d);
125 2 P2=0xff;P3=0xff;
126 2 delay(500);
127 2 w=rev3;m=rev4; w=w>>4; a=w;w=rev3&0x0f;b=w;w=rev4; w=w>>4; c=w; w=m&0x0f; d=w;
128 2 for (i=50;i>0;i--) displar(a,b,c,d);
129 2 init_1602();clear_1602();dis_1602str(" Receiver:");
130 2 send_cmd(second);dis_hex(rev1);dis_1602str(" "); dis_hex(rev2);dis_1602str(" ");dis_hex(rev3);dis_1602str(
-" "); dis_hex(rev4);
131 2 rev1=0x00;rev2=0x00;rev3=0x00;rev4=0x00;revx=0;ES=1;EA=1;
132 2 }
133 1 if (P==20) P=0 ;else P++;
134 1 delay(1);
135 1 //22222222222222222222222222222222222222222222222222222222222222222
136 1 switch (h)
137 1 {case 0 : {if (h1==0) { if (P1==0x00) {w=0Xff;h1=1;}else P1=P1<<1; }
138 3 else { if (P1==0xff) {P1=0xff; h=1;h1=0; } else { w=w<<1; m=~w; P1=P1|m; } }
139 3 } break;
140 2 case 1 : {if (h1==0) {if (P1==0x00) {w=0Xff;h1=1; } else P1=P1>>1; }
141 3 else { if (P1==0xff) {P1=0xff; h=0;h1=0;a=0x00;b=0x06;c=0x01;d=0x05;for (i=0;i<20;i++) displa
-y(a,b,c,d);}
142 4 else { w=w>>1; m=~w; P1=P1|m; } }
143 3 }break;
144 2 default : delay(10);
145 2 }
146 1 delay(20);
147 1 //333333333333333333333333333333333333333333333333333333333333333333333
148 1 o=P1;
149 1 if (P==0)
150 1 {
151 2 EA=0;
152 2 P3=0xff;
153 2 Temp();
154 2 a=tt/1000;b=(tt-a*1000)/100;c=(tt-a*1000-b*100)/10;d=tt%10;
155 2 if (flag==0x01) a=0xbf;else a=tt/1000;
156 2 SBUF= a;delay(1);while(TI == 0){;} TI = 0;
157 2 SBUF= b;delay(1);while(TI == 0){;} TI = 0;
158 2 SBUF= c;delay(1);while(TI == 0){;} TI = 0;
159 2 SBUF= d;delay(1);while(TI == 0){;} TI = 0;
160 2 }
161 1 //44444444444444444444444444444444444444444444444444444444444444444444
162 1 delayy(1);
163 1 v=key();
164 1 if (v!=0)
165 1 {
166 2 while(key());
167 2 switch (v)
168 2 {case 6: {DisplayTemper();} break;
169 3 case 5 : {for(i=0;i<10;i++) { P2=0x00;P3=0x00;delay(200);P2=0x00;P3=0xff;delay(200);}} break;
170 3 case 4 : {for(i=20;i>0;i--){circle();} } break;
171 3 case 3 : {k3=0 ; WP=0; delayy(30);
172 4 Temp();
173 4 a=tt/1000;b=(tt-a*1000)/100;c=(tt-a*1000-b*100)/10;d=tt%10;
174 4 if (flag==0x01) a=0xbf;
175 4 else a=tt/1000;
176 4 Number[0]=a;Number[1]=b;Number[2]=c;Number[3]=d;
177 4 WrToROM(Number,4,4); /*將初始化后的數值寫入EEPROM*/
C51 COMPILER V8.05a S52 12/21/2008 21:40:08 PAGE 4
178 4 for(i=20;i>0;i--) displat(a,b,c,d);
179 4 } break;
180 3 case 2 : { k3=0 ; WP=1; delayy(30);
181 4 RdFromROM(Number,4,4);
182 4 a=Number[0];b=Number[1];c=Number[2];d=Number[3];
183 4 for(i=20;i>0;i--) displat(a,b,c,d);
184 4 init_1602();clear_1602();dis_1602str(" AVR-S51");
185 4 send_cmd(second);dis_1602str(" glzff@126.com");
186 4 } break;
187 3 case 1 : {
188 4 k3=0 ;WP=1; delayy(30);
189 4 RdFromROM(Number,4,4);
190 4 a=Number[0];b=Number[1];c=Number[2];d=Number[3];
191 4 init_1602();clear_1602();dis_1602str("read AT24C01A");;
192 4 send_cmd(second);dis_1602str(" ");
193 4 if (a!=0)
194 4 dis_1602num(a);
195 4 if ((a!=0)||(b!=0)) dis_1602num(b);
196 4 dis_1602num(c);dis_1602str(".");dis_1602num(d);dis_1602str(" C");
197 4 delay(500);
198 4 init_1602();clear_1602();dis_1602str(" AVR-S51");
199 4 send_cmd(second);dis_1602str("Welcome to 615");
200 4 delay(1); } break;
201 3 default : {_nop_ ();};
202 3 }
203 2 }
204 1 P3=0xff;
205 1 v=0;
206 1 ES=1;
207 1 EA=1;
208 1 //??????????????????????????????????????????????????
209 1 //Y1:
210 1 P1=o;
211 1 goto Y ;
212 1 }
213 //00000000000000000000000000000000000000000000000000000000000
214 void DisplayTemper() //讀取并顯示溫度
215 {
216 1 uchar i;
217 1 uchar a,b,c,d;
218 1 Temp();
219 1 a=tt/1000;b=(tt-a*1000)/100;c=(tt-a*1000-b*100)/10;d=tt%10;
220 1 if (flag==0x01) a=0xbf;
221 1 else a=tt/1000;
222 1 for(i=100;i>0;i--) displat(a,b,c,d);
223 1 }
224 //0000000000000000000000000000000000000000000000000000000000000
225 void circle()
226 {uchar i;
227 1 for (i=0;i<12;i++)
228 1 {P2=cir2[i];P3=cir3[i];delay(20);}
229 1 }
230 //11111111111111111111111111111111111111111111111111111111111
231 void rev() interrupt 4 using 1
232 {
233 1 ES=0;
234 1 while(RI==0);
235 1 switch (revx)
236 1 {
237 2 case 0 : {rev1=SBUF;revx=1;}break;
238 2 case 1 : {rev2=SBUF;revx=2;}break;
239 2 case 2 : {rev3=SBUF;revx=3;}break;
C51 COMPILER V8.05a S52 12/21/2008 21:40:08 PAGE 5
240 2 case 3 : {rev4=SBUF;revx=5;}break;
241 2 default : revx=0;
242 2 }
243 1 RI=0;
244 1 ES=1;
245 1 }
246 //222222222222222222222222222222222222222222222222222222222222222
247 void Temp()
248 {
249 1 tt=ReadTemperature();
250 1 if (tt>16384)
251 1 { tt=~tt+1;tt=tt*0.625;flag=0x01;} //負溫度處理
252 1 else
253 1 {tt=tt*0.625;flag=0x00;} //正溫度 //得到真實十進制溫度值,因為DS18B20
254 1 //可以精確到0.0625度,所以讀回數據的最低位代表
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -