📄 main.lst
字号:
008B 2500 F 233 ADD A , TempOffsetL
008D FB 234 MOV R3 , A
008E E500 F 235 MOV A , VIH
0090 3500 F 236 ADDC A , TempOffsetH
0092 FA 237 MOV R2 , A ;进行测量误差修正
0093 238 LOOP102:
A51 MACRO ASSEMBLER MAIN DATE 28/01/02 PAGE 5
LOC OBJ LINE SOURCE
239
0093 9004C6 240 MOV DPTR,#TempTab
0096 7913 241 MOV R1,#19
0098 120000 F 242 LCALL UNEX2
009B B4FF06 243 CJNE A,#0FFH,LOOP0
009E AA00 F 244 MOV R2,BeForTempH
00A0 AB00 F 245 MOV R3,BeForTempL
00A2 800C 246 SJMP LOOP1 ;温度超限则显示上一次的正常温度
247
00A4 248 LOOP0:
00A4 EC 249 MOV A,R4
00A5 F500 F 250 MOV BeForTempH,A
00A7 F500 F 251 MOV TempH,A
00A9 FA 252 MOV R2,A
00AA ED 253 MOV A,R5
00AB F500 F 254 MOV BeForTempL,A
00AD F500 F 255 MOV TempL,A
00AF FB 256 MOV R3,A
00B0 257 LOOP1:
258
00B0 1203E2 259 LCALL IBTD2 ;把数值转换成BCD码并存入显示缓冲区中
00B3 E500 F 260 MOV A,KeyCode
00B5 B45503 261 CJNE A,#UnKey,LOOP2
00B8 02006A 262 LJMP LOOP
00BB 263 LOOP2:
00BB B41203 264 CJNE A,#SetKey,LOOP3
00BE 02006A 265 LJMP LOOP
00C1 266 LOOP3:
00C1 120122 267 LCALL SetTemp ;若有键按下则进入温度设置模块
00C4 02006A 268 LJMP LOOP
00C7 00 269 NOP
00C8 00 270 NOP
271 ;*************************************************************
00C9 272 CompTemp:
00C9 E500 F 273 MOV A,SetTempL
00CB 2401 274 ADD A,#01H
00CD F500 F 275 MOV SetTempLBak1,A
00CF E500 F 276 MOV A,SetTempH
00D1 3400 277 ADDC A,#0H
00D3 F500 F 278 MOV SetTempHBak1,A
279
00D5 C3 280 CLR C
00D6 E500 F 281 MOV A,TempL
00D8 9500 F 282 SUBB A,SetTempLBak1
00DA F5F0 283 MOV B,A
00DC E500 F 284 MOV A,TempH
00DE 9500 F 285 SUBB A,SetTempHBak1
00E0 401B 286 JC CompTemp5
287 ;温度是否超过上限判断,否则转。
00E2 E5F0 288 MOV A,B
00E4 7006 289 JNZ CompTemp3
00E6 D200 F 290 SETB TempContr
00E8 750015 F 291 MOV TempSub,#21
00EB 22 292 RET
00EC 293 CompTemp3:
00EC C3 294 CLR C
00ED E500 F 295 MOV A,TempL
00EF 9436 296 SUBB A,#low(310)
00F1 E500 F 297 MOV A,TempH
A51 MACRO ASSEMBLER MAIN DATE 28/01/02 PAGE 6
LOC OBJ LINE SOURCE
00F3 9401 298 SUBB A,#high(310)
00F5 5003 299 JNC CompTemp31
300 ;温度是否超过300度判断,否则转。
00F7 C200 F 301 CLR TempContr
302 ;停止加热
00F9 22 303 RET
00FA 304 CompTemp31:
305 ;温度超过设定300度
00FA 02020A 306 LJMP ErrorDisplay
00FD 307 CompTemp5:
00FD C3 308 CLR C
00FE E500 F 309 MOV A,SetTempLBak1
0100 9500 F 310 SUBB A,TempL
0102 F5F0 311 MOV B,A
312
0104 74A0 313 MOV A,#160
0106 95F0 314 SUBB A,B
0108 5002 315 JNC CompTemp6
010A 7400 316 MOV A,#00H
010C 317 CompTemp6:
010C C3 318 CLR C
010D F5F0 319 MOV B,A
010F 9496 320 SUBB A,#150
0111 5008 321 JNC CompTemp7
0113 E5F0 322 MOV A,B
0115 75F008 323 MOV B,#8
0118 84 324 DIV AB
0119 8002 325 SJMP CompTemp8
011B 326 CompTemp7:
327 ; ADD A,#8
328 ; MOV B,A
329 ; CLR C
330 ; SUBB A,#16
331 ; MOV A,B
332 ; JNC CompTemp8
011B 7412 333 MOV A,#18
011D 334 CompTemp8:
011D F500 F 335 MOV TempSub,A
011F D200 F 336 SETB TempContr
337 ;否则处于加热状态
0121 22 338 RET
339
340 ;*************************************************************
341
342 ;设定控制温度子程序
0122 343 SetTemp:
0122 C28C 344 CLR TR0
0124 C2A9 345 CLR ET0 ;关闭温度测量
0126 C2AB 346 CLR ET1
0128 C28E 347 CLR TR1
348
012A C296 349 CLR TempContrPort
350
012C 750000 F 351 MOV Timer1,#00H ;清返回主程序时间计数器
012F C200 F 352 CLR FHBJ ;清可返回标记
353
0131 750000 F 354 MOV Timer2,#00H ;清控制温度改变时间计数器
0134 750014 F 355 MOV ChangSpeed,#SetChangSpeed1
0137 D200 F 356 SETB ChangOk ;按住键后可改变控制温度值
A51 MACRO ASSEMBLER MAIN DATE 28/01/02 PAGE 7
LOC OBJ LINE SOURCE
357
0139 750000 F 358 MOV PushKeyMumber,#00H
359
360
361 ;------------------------------------------------------------
013C 1201F5 362 LCALL ReadSetTempDate ;读取E2PROM中的设定温度值
363
364 ;------------------------------------------------------------
013F 7401 365 MOV A,#01H
0141 12040A 366 LCALL SetDisplayMode ;数码管闪烁
367
368
369 ;-------------------------------------------------------------
0144 370 SetTemp1:
0144 120434 371 LCALL ReadKey
0147 E500 F 372 MOV A,KeyCode
373
0149 B45511 374 CJNE A,#UnKey,SetTemp10
375 ;-------------------------------------------------------------
014C 750000 F 376 MOV Timer2,#00H ;清控制温度改变时间计数器
014F 750014 F 377 MOV ChangSpeed,#SetChangSpeed1
0152 D200 F 378 SETB ChangOk ;按住键后可改变控制温度值
0154 750000 F 379 MOV PushKeyMumber,#00H
0157 750055 F 380 MOV UpPushKeyCode,#UnKey
015A 0201C7 381 LJMP SetTemp3
382 ;-------------------------------------------------------------
015D 383 SetTemp10: ;有键盘按下
015D 300067 F 384 JNB ChangOk,SetTemp3
0160 C200 F 385 CLR ChangOk ;改变了控制温度后不允许马上再改变
386 ;等下次时间到后可再改变
0162 C0E0 387 PUSH ACC
388
0164 B5000F F 389 CJNE A,UpPushKeyCode,SetTemp11 ;为上键否
0167 0500 F 390 INC PushKeyMumber ;按键次数加1
0169 E500 F 391 MOV A,PushKeyMumber
016B B40506 392 CJNE A,#SetPushKeyMum,SetTemp12 ;按住相同键的时已到指定时间否
016E 750000 F 393 MOV PushKeyMumber,#00H ;清按键时间
0171 750004 F 394 MOV ChangSpeed,#SetChangSpeed2 ;加速控制温度调整时间
0174 395 SetTemp12:
0174 8008 396 SJMP SetTemp13
0176 397 SetTemp11:
0176 F500 F 398 MOV UpPushKeyCode,A ;按了另外键
0178 750000 F 399 MOV PushKeyMumber,#00H
017B 750014 F 400 MOV ChangSpeed,#SetChangSpeed1 ;重新判别按键时间
017E 401 SetTemp13:
017E D0E0 402 POP ACC
403 ;------------------------------------------------------------
0180 B41021 404 CJNE A,#UpKey,SetTemp2
0183 C3 405 CLR C
0184 E500 F 406 MOV A,SetTempL
0186 942C 407 SUBB A,#TempUpL
0188 E500 F 408 MOV A,SetTempH
018A 9401 409 SUBB A,#TempUpH
018C 500E 410 JNC SetTemp14 ;设定温度是否超过上限判断
411
018E E500 F 412 MOV A,SetTempL
0190 2401 413 ADD A,#01
0192 F500 F 414 MOV SetTempL,A
0194 E500 F 415 MOV A,SetTempH
A51 MACRO ASSEMBLER MAIN DATE 28/01/02 PAGE 8
LOC OBJ LINE SOURCE
0196 3400 416 ADDC A,#00H
0198 F500 F 417 MOV SetTempH,A
019A 802B 418 SJMP SetTemp3
019C 419 SetTemp14:
019C 750000 F 420 MOV SetTempL,#TempDownL
019F 750000 F 421 MOV SetTempH,#TempDownH
01A2 8023 422 SJMP SetTemp3
423
424
01A4 425 SetTemp2:
01A4 B41120 426 CJNE A,#DownKey,SetTemp3
01A7 C3 427 CLR C
01A8 7400 428 MOV A,#TempDownL
01AA 9500 F 429 SUBB A,SetTempL
01AC 7400 430 MOV A,#TempDownH
01AE 9500 F 431 SUBB A,SetTempH
01B0 500F 432 JNC SetTemp21 ;设定温度是否低于下限判断
433
01B2 C3 434 CLR C
01B3 E500 F 435 MOV A,SetTempL
01B5 9401 436 SUBB A,#01
01B7 F500 F 437 MOV SetTempL,A
01B9 E500 F 438 MOV A,SetTempH
01BB 9400 439 SUBB A,#00H
01BD F500 F 440 MOV SetTempH,A
01BF 8006 441 SJMP SetTemp3
01C1 442 SetTemp21:
01C1 75002C F 443 MOV SetTempL,#TempUpL
01C4 750001 F 444 MOV SetTempH,#TempUpH
445
01C7 446 SetTemp3:
01C7 B41202 447 CJNE A,#SetKey,SetTemp30
01CA D200 F 448 SETB FHBJ
449 ;------------------------------------------------------------
01CC 450 SetTemp30:
451
01CC AA00 F 452 MOV R2,SetTempH
01CE AB00 F 453 MOV R3,SetTempL
01D0 1203E2 454 LCALL IBTD2 ;把数值转换成BCD码并存入显示缓冲区中
01D3 12038A 455 LCALL Display ;显示数码
01D6 1204B9 456 LCALL Dealy
457
01D9 300014 F 458 JNB FHBJ,SetTemp4 ;没到返回时间则继续处于设定温度状态
459 ;------------------------------------------------------------
460
01DC C2AB 461 CLR ET1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -