⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.lst

📁 加热器的温度控制
💻 LST
📖 第 1 页 / 共 5 页
字号:
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 + -