📄 tempc.ls1
字号:
ED笔划,0xFF为空,0xF7为负号
190 ;
191 ; static unsigned char bdata StateREG; //可位寻址的状态寄存器
192 ; sbit DS18B20ON = StateREG^0; //DS1820是否存在
193 ; sbit SetTF = StateREG^1; //是否是在温度设置状态
194 ;
195 ; static signed char LED_f,LED_1,LED_2,LED_3,LED_4; //LED的显示位 LED_One为十位,LED_Two为
个位
196 ; static signed char L_1,L_2,L_3,L_4,L_5; //LED的显示位 LED_One为十位,LED_Two为个位
197 ; static unsigned char Sign; //负号标识
198 ; static unsigned char sign_jd; //精度标识
199 ; static unsigned char KeyV,TempKeyV; //键值
200 ;
201 ; static unsigned char bdata TLV _at_ 0x0029; //温度变量高低位
202 ; static unsigned char bdata THV _at_ 0x0028;
203 ; static signed char TMV; //转换后的温度值
204 ; static signed char TM; //转换后的温度值
205 ; static signed int wd; //转换后的温度值
206 ; static signed int zd; //转换后的温度值
207 ;
208 ; void Delay_10ms(void);
209 ; void InitDS1820(void);
210 ; void ROMDS1820(void);
211 ; void TMVDS1820(void);
212 ; void Delay_510(void);
213 ; void TMRDS1820(void);
214 ; void ReadDS1820(void);
215 ; void V2ToV(void);
216 ; void Delay_110(void);
217 ;
218 ;
219 ;
220 ; void main(void)
221
---- 222 RSEG ?PR?main?TEMPC
0000 223 main:
224 USING 0
225 ; SOURCE LINE # 54
226 ; {
227 ; SOURCE LINE # 55
228 ; THV = 0;
229 ; SOURCE LINE # 56
0000 E4 230 CLR A
0001 F528 231 MOV THV,A
232 ; TLV = 0;
233 ; SOURCE LINE # 57
0003 F529 234 MOV TLV,A
235 ; TMV = 0;
236 ; SOURCE LINE # 58
0005 F500 F 237 MOV TMV,A
238 ; TM=0;
239 ; SOURCE LINE # 59
0007 F500 F 240 MOV TM,A
241 ; KeyV = 0;
242 ; SOURCE LINE # 60
0009 F500 F 243 MOV KeyV,A
244 ; TempKeyV = 0;
245 ; SOURCE LINE # 61
000B F500 F 246 MOV TempKeyV,A
247 ; zd=50;
248 ; SOURCE LINE # 62
000D F500 F 249 MOV zd,A
000F 750032 F 250 MOV zd+01H,#032H
251 ;
252 ; InitDS1820(); //初始化
253 ; SOURCE LINE # 64
A51 MACRO ASSEMBLER TEMPC 04/13/2005 22:38:51 PAGE 5
0012 1100 F 254 ACALL InitDS1820
255 ; ROMDS1820(); //跳过ROM
256 ; SOURCE LINE # 65
0014 1100 F 257 ACALL ROMDS1820
258 ; TMRDS1820(); //读出温度指令
259 ; SOURCE LINE # 66
0016 1100 F 260 ACALL TMRDS1820
261 ; ReadDS1820(); //读出温度值和上限值
262 ; SOURCE LINE # 67
0018 1100 F 263 ACALL ReadDS1820
264 ;
265 ; EA = 1; //允许CPU中断
266 ; SOURCE LINE # 69
001A D2AF 267 SETB EA
268 ; ET0 = 1; //定时器0中断打开
269 ; SOURCE LINE # 70
001C D2A9 270 SETB ET0
271 ; TMOD = 0x1; //设定时器0为模式1,16位模式
272 ; SOURCE LINE # 71
001E 758901 273 MOV TMOD,#01H
274 ; TH0=0xB1;
275 ; SOURCE LINE # 72
0021 758CB1 276 MOV TH0,#0B1H
277 ; TL0=0xDF; //设定时值为20000us(20ms)
278 ; SOURCE LINE # 73
0024 758ADF 279 MOV TL0,#0DFH
280 ; TR0 = 1; //开始定时
281 ; SOURCE LINE # 74
0027 D28C 282 SETB TR0
0029 283 ?C0001:
284 ; while(1);
285 ; SOURCE LINE # 75
0029 80FE 286 SJMP ?C0001
287 ; END OF main
288
---- 289 CSEG AT 0000BH
000B 0100 F 290 AJMP KeyAndDis_Time0
291
292 ; }
293 ;
294 ; //定时器0中断外理中键扫描和显示
295 ; void KeyAndDis_Time0(void) interrupt 1 using 2
296
---- 297 RSEG ?PR?KeyAndDis_Time0?TEMPC
298 USING 2
0000 299 KeyAndDis_Time0:
0000 C0E0 300 PUSH ACC
0002 C0F0 301 PUSH B
0004 C083 302 PUSH DPH
0006 C082 303 PUSH DPL
0008 C0D0 304 PUSH PSW
305 USING 2
000A 75D010 306 MOV PSW,#010H
307 ; SOURCE LINE # 79
308 ; {
309 ; TH0=0xb1;
310 ; SOURCE LINE # 81
000D 758CB1 311 MOV TH0,#0B1H
312 ; TL0=0xDF; //设定时值为20000us(20ms)
313 ; SOURCE LINE # 82
0010 758ADF 314 MOV TL0,#0DFH
315 ; Key_jd=1;
316 ; SOURCE LINE # 83
0013 D2B5 317 SETB P3_5
318 ; LEDPort = 0x00;
319 ; SOURCE LINE # 84
A51 MACRO ASSEMBLER TEMPC 04/13/2005 22:38:51 PAGE 6
0015 759000 320 MOV P1,#00H
321 ; zd++;
322 ; SOURCE LINE # 85
0018 0500 F 323 INC zd+01H
001A E500 F 324 MOV A,zd+01H
001C 7002 325 JNZ ?C0041
001E 0500 F 326 INC zd
0020 327 ?C0041:
328 ; if (zd>50)
329 ; SOURCE LINE # 86
0020 D3 330 SETB C
0021 9432 331 SUBB A,#032H
0023 E500 F 332 MOV A,zd
0025 6480 333 XRL A,#080H
0027 9480 334 SUBB A,#080H
0029 4029 335 JC ?C0004
336 ; {
337 ; SOURCE LINE # 87
338 ; if (!Key_jd)
339 ; SOURCE LINE # 88
002B 20B503 340 JB P3_5,?C0005
341 ; KeyV = 1;
342 ; SOURCE LINE # 89
002E 750001 F 343 MOV KeyV,#01H
0031 344 ?C0005:
345 ;
346 ; if (KeyV != 0) //有键按下
347 ; SOURCE LINE # 91
0031 E500 F 348 MOV A,KeyV
0033 601F 349 JZ ?C0004
350 ; {
351 ; SOURCE LINE # 92
352 ; Delay_10ms(); //延时防抖 按下10ms再测
353 ; SOURCE LINE # 93
0035 1100 F 354 ACALL Delay_10ms
355 ; if (!Key_jd)
356 ; SOURCE LINE # 94
0037 20B503 357 JB P3_5,?C0007
358 ; TempKeyV = 1;
359 ; SOURCE LINE # 95
003A 750001 F 360 MOV TempKeyV,#01H
003D 361 ?C0007:
362 ; if (KeyV == TempKeyV) //两次值相等为确定接下了键
363 ; SOURCE LINE # 96
003D E500 F 364 MOV A,KeyV
003F B50012 F 365 CJNE A,TempKeyV,?C0004
366 ; {
367 ; SOURCE LINE # 97
368 ; sign_jd=!sign_jd;
369 ; SOURCE LINE # 98
0042 E500 F 370 MOV A,sign_jd
0044 7004 371 JNZ ?C0009
0046 7F01 372 MOV R7,#01H
0048 8002 373 SJMP ?C0010
004A 374 ?C0009:
004A 7F00 375 MOV R7,#00H
004C 376 ?C0010:
004C 8F00 F 377 MOV sign_jd,R7
378 ; zd=0;
379 ; SOURCE LINE # 99
004E 750000 F 380 MOV zd,#00H
0051 750000 F 381 MOV zd+01H,#00H
382 ; }
383 ; SOURCE LINE # 100
384 ; }
385 ; SOURCE LINE # 101
A51 MACRO ASSEMBLER TEMPC 04/13/2005 22:38:51 PAGE 7
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -