?? good.lst
字號:
C51 COMPILER V6.12 GOOD 04/29/2009 16:29:58 PAGE 1
C51 COMPILER V6.12, COMPILATION OF MODULE GOOD
OBJECT MODULE PLACED IN good.obj
COMPILER INVOKED BY: E:\Keil\C51\BIN\C51.EXE .\sucess\good.c DEBUG OBJECTEXTEND PRINT(.\good.lst) OBJECT(good.obj)
stmt level source
1 #include<reg52.h>
2 #include<stdio.h>
3 #include<intrins.h>
4
5 #define uchar unsigned char
6 #define uint unsigned int
7
8 sbit dula=P2^6;
9 sbit wela=P2^7;
10 sbit dq=P2^2;
11 sbit feng=P2^3;
12
13 uint c1_temper,c2_temper;
14 uint L_temper;
15 uint H_temper;
16
17 unsigned char aa[9]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
18 unsigned char bb[9]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
19
20 uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f,
21 0xBf,0x86,0xDb,0xCf,0xE6, 0xEd,0xEd,0x87,0xFf,0xEf};
22
23 void delay_ms(uint z);
24 void delay_us();
25 void write_cmd(uchar z);
26 void get_firstid();
27 void get_seconedid();
28 void write_bit(uchar dd);
29 void deal_temper();
30 void deal_ds1();
31 void deal_ds2();
32 void display_temper(uint wengdu,uchar fc);
33 void init();
34 void warn_temper(uchar z);
35 uchar dq_reset();
36 uchar keyscanf();
37 uchar read_byte();
38 uint get_temper(uchar z);
39 uchar read_bit();
40 uchar read_date();
41
42 /******************延遲****************/
43
44 void delay_ms(uint z)//毫秒級的延遲
45 {
46 1 uint x,y;
47 1 for(x=z;x>0;x--)
48 1 for(y=110;y>0;y--);
49 1 }
50
51 void delay_us()//延時微秒
52 {
53 1 _nop_();
54 1 }
55
C51 COMPILER V6.12 GOOD 04/29/2009 16:29:58 PAGE 2
56 /*****************復位*************************/
57
58 uchar dq_reset()
59 {
60 1 uchar t;
61 1 uchar dd;
62 1 dq=0;
63 1 for(t=250;t>0;t--);
64 1 dq=1;
65 1 for(t=5;t>0;t--);
66 1 dd=dq;
67 1 for(t=150;t>0;t--);
68 1 return dd;
69 1 }
70
71 /******************讀位寫位**********************/
72
73 uchar read_bit()
74 {
75 1 uchar t;
76 1 uchar dd;
77 1
78 1 dq=0;
79 1 delay_us();delay_us();
80 1 dq=1;
81 1 for(t=3;t>0;t--);
82 1 dd=dq;//get the signal
83 1 for(t=20;t>0;t--);
84 1 return dd;
85 1 }
86
87 void write_bit(uchar dd)
88 {
89 1 uchar t;
90 1
91 1 if(dd==1)
92 1 {
93 2 dq=0;
94 2 delay_us();
95 2 dq=1;
96 2 for(t=30;t>0;t--);
97 2 }
98 1 else
99 1 {
100 2 dq=0;
101 2 for(t=30;t>0;t--);
102 2 dq=1;
103 2 delay_us();
104 2 delay_us();
105 2 }
106 1 }
107
108 /******************寫命令寫數據***********************/
109
110 void write_cmd(uchar z)//寫命令
111 {
112 1 uchar i,t;
113 1 uchar temp;
114 1 uchar cd=z;
115 1
116 1 for(i=0;i<8;i++)
117 1 {
C51 COMPILER V6.12 GOOD 04/29/2009 16:29:58 PAGE 3
118 2 temp=cd&0x01;
119 2 if(temp)
120 2 {
121 3 dq=0;
122 3 delay_us();delay_us();//
123 3 dq=1;
124 3 for(t=40;t>0;t--);
125 3 }
126 2 else
127 2 {
128 3 dq=0;
129 3 for(t=40;t>0;t--);
130 3 dq=1;
131 3 delay_us(); delay_us();
132 3 }
133 2 cd=_cror_(cd,1);
134 2 }
135 1
136 1 }
137
138 /*****************溫度******************************/
139
140 uchar read_byte()//讀字節
141 {
142 1 uchar i;
143 1 uchar temp;
144 1 uchar dd;
145 1
146 1 temp=0x00;
147 1 for(i=0;i<8;i++)
148 1 {
149 2 temp=_cror_(temp,1);
150 2 dd=read_bit();
151 2 if(dd==1)
152 2 {
153 3 temp=temp|0x80;
154 3 }
155 2 else
156 2 {
157 3 temp=temp|0x00;
158 3 }
159 2 }
160 1 return(temp);
161 1 }
162
163 uint get_temper(uchar z)//get centigrad for the ram
164 {
165 1
166 1 uchar LSB_temper=0x00;
167 1 uchar MSB_temper=0x00;
168 1 uchar i;
169 1 //uchar t;
170 1 uint c_temp=0;
171 1 float f_temp=0;
172 1
173 1 dq_reset();
174 1
175 1 write_cmd(0x55);
176 1 if(z==1)
177 1 {
178 2 for(i=1;i<=8;i++)
179 2 {
C51 COMPILER V6.12 GOOD 04/29/2009 16:29:58 PAGE 4
180 3 write_cmd(aa[i]);
181 3 }
182 2 }
183 1 else
184 1 {
185 2 for(i=1;i<=8;i++)
186 2 {
187 3 write_cmd(bb[i]);
188 3 }
189 2 }
190 1 delay_ms(1);
191 1 write_cmd(0xbe);//讀存儲器內的溫度
192 1
193 1 LSB_temper=read_byte();
194 1 MSB_temper=read_byte();
195 1 dq_reset();
196 1 c_temp=MSB_temper;
197 1 c_temp=(c_temp<<8);
198 1 c_temp=c_temp|LSB_temper;
199 1 f_temp=c_temp*0.0625;
200 1 c_temp=f_temp*10+0.5;
201 1
202 1 return (c_temp);
203 1 }
204
205 /******************獲取序列號************************/
206
207 void get_firstid()
208 {
209 1 uchar t;
210 1 uchar w=1;
211 1 uchar d1,d2;
212 1 uchar temp=0x00;
213 1
214 1 dq_reset();
215 1 write_cmd(0xf0);//搜索序列號命令
216 1
217 1 for(t=1;t<=64;t++)
218 1 {
219 2 d1=read_bit();
220 2 d2=read_bit();
221 2 temp=_cror_(temp,1);
222 2
223 2 if( (d1==1) && (d2==0) )
224 2 {
225 3 temp=temp|0x80;
226 3 write_bit(1);
227 3 }
228 2 else if( (d1==0) && (d2==1))
229 2 {
230 3 temp=temp|0x00;
231 3 write_bit(0);
232 3 }
233 2 else if( (d1==0) && (d2==0) )
234 2 {
235 3 temp=temp|0x00;
236 3 write_bit(0);
237 3 }
238 2 if(t%8==0)
239 2 {
240 3 aa[w]=temp;
241 3 w=w+1;
C51 COMPILER V6.12 GOOD 04/29/2009 16:29:58 PAGE 5
242 3 temp=0x00;
243 3 }
244 2 }
245 1
246 1 }
247
248 void get_seconedid()
249 {
250 1 uchar t;
251 1 uchar w=1;
252 1 uchar d1,d2;
253 1 uchar temp=0x00;
254 1
255 1 dq_reset();
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -