📄 main.lis
字号:
02B2 C6008D lda _CurtTmp
02B5 C2008B sbc _Temper
02B8 E704 sta 4,X
02BA 2010 bra L27
02BC L26:
02BC .dbline 151
02BC ; else
02BC ; tmp=Temper-CurtTmp;
02BC C6008C lda _Temper+1
02BF C0008E sub _CurtTmp+1
02C2 E705 sta 5,X
02C4 C6008B lda _Temper
02C7 C2008D sbc _CurtTmp
02CA E704 sta 4,X
02CC L27:
02CC .dbline 152
02CC ; if(tmp>C_TmpPC) //如果当前温度与设定温度偏差大于5,作异常处理
02CC E605 lda 5,X
02CE B700 sta *__r1
02D0 E604 lda 4,X
02D2 B700 sta *__r0
02D4 5500 ldhx *__r0
02D6 65000A cphx #10
02D9 95 tsx
02DA 2324 bls L28
02DC .dbline 153
02DC ; {
02DC .dbline 154
02DC ; SwitchOutput(C_BakeSw,0); //断开Bake炉电源
02DC 4F clra
02DD 87 psha
02DE A603 lda #3
02E0 87 psha
02E1 CD0000 jsr _SwitchOutput
02E4 A702 ais #2
02E6 .dbline 155
02E6 ; LightOut(0); //Bake炉电源指示灯灭
02E6 4F clra
02E7 87 psha
02E8 CD0000 jsr _LightOut
02EB A701 ais #1
02ED .dbline 157
02ED ; // BakeFlag=0;
02ED ; SwitchOutput(C_GreenLight,0);//绿灯灭
02ED 4F clra
02EE 87 psha
02EF A601 lda #1
02F1 87 psha
02F2 CD0000 jsr _SwitchOutput
02F5 A702 ais #2
02F7 95 tsx
02F8 .dbline 158
02F8 ; StateFlag=6; //进入状态6
02F8 A606 lda #6
02FA C7007B sta _StateFlag
02FD .dbline 159
02FD ; }
02FD CC039F jmp L19
0300 L28:
0300 .dbline 161
0300 ; else
0300 ; {
0300 .dbline 162
0300 ; StateFlag=4; //无异常,进入状态4
0300 A604 lda #4
0302 C7007B sta _StateFlag
0305 .dbline 163
0305 ; }
0305 .dbline 164
0305 ; break;
0305 CC039F jmp L19
0308 L30:
0308 .dbline 166
0308 ; case 4://状态4:如果加热到设定时间,黄灯闪,提示将加热物体拿出放入冷却箱
0308 ; CurtTime=MntTim-InitTime;
0308 C60083 lda _MntTim+1
030B E003 sub 3,X
030D C7008A sta _CurtTime+1
0310 C60082 lda _MntTim
0313 E202 sbc 2,X
0315 C70089 sta _CurtTime
0318 .dbline 167
0318 ; if(CurtTime>=Time) //加热时间到,黄灯闪提示,直到Cool阀开
0318 C60088 lda _Time+1
031B B700 sta *__r1
031D C60087 lda _Time
0320 B700 sta *__r0
0322 C6008A lda _CurtTime+1
0325 B700 sta *__r3
0327 C60089 lda _CurtTime
032A B700 sta *__r2
032C 5500 ldhx *__r2
032E 7500 cphx *__r0
0330 95 tsx
0331 2510 blo L31
0333 .dbline 168
0333 ; {
0333 .dbline 169
0333 ; LightAlarm(C_YellowLight); //断开Bake阀、绿灯灭、黄灯闪
0333 A602 lda #2
0335 87 psha
0336 CD0742 jsr _LightAlarm
0339 A701 ais #1
033B 95 tsx
033C .dbline 170
033C ; StateFlag=5; //进入状态5
033C A605 lda #5
033E C7007B sta _StateFlag
0341 .dbline 171
0341 ; }
0341 205C bra L19
0343 L31:
0343 .dbline 173
0343 ; else
0343 ; {
0343 .dbline 174
0343 ; StateFlag=3; //加热时间未到,回状态3,边判边等
0343 A603 lda #3
0345 C7007B sta _StateFlag
0348 .dbline 175
0348 ; }
0348 .dbline 176
0348 ; break;
0348 2055 bra L19
034A L33:
034A .dbline 178
034A ; case 5://状态5:冷却箱中无物体放入,黄灯继续闪
034A ; if(Infrared>C_Exist)
034A C60086 lda _Infrared+1
034D B700 sta *__r1
034F C60085 lda _Infrared
0352 B700 sta *__r0
0354 5500 ldhx *__r0
0356 6500A0 cphx #160
0359 95 tsx
035A 2307 bls L34
035C .dbline 179
035C ; StateFlag=4; //无物体放入,回状态4,黄灯继续闪
035C A604 lda #4
035E C7007B sta _StateFlag
0361 203C bra L19
0363 L34:
0363 .dbline 181
0363 ; else
0363 ; StateFlag=7; //有物体放入,去状态7
0363 A607 lda #7
0365 C7007B sta _StateFlag
0368 .dbline 182
0368 ; break;
0368 2035 bra L19
036A L36:
036A .dbline 184
036A ; case 6://状态6:Bake炉内温度异常后红灯报警,直至有复位开关按下
036A ; SwitchOutput(C_RedLight,1); //红灯亮并报警
036A A601 lda #1
036C 87 psha
036D A605 lda #5
036F 87 psha
0370 CD0000 jsr _SwitchOutput
0373 A702 ais #2
0375 95 tsx
0376 .dbline 185
0376 ; if(ResetFlag==1)
0376 C60079 lda _ResetFlag
0379 A101 cmp #1
037B 2622 bne L19
037D .dbline 186
037D ; {
037D .dbline 187
037D ; ResetFlag=0;
037D 4F clra
037E C70079 sta _ResetFlag
0381 .dbline 188
0381 ; SwitchOutput(C_RedLight,0);
0381 4F clra
0382 87 psha
0383 A605 lda #5
0385 87 psha
0386 CD0000 jsr _SwitchOutput
0389 A702 ais #2
038B 95 tsx
038C .dbline 189
038C ; goto MainLoop;
038C CC0021 jmp L2
038F X8:
038F .dbline 191
038F ; }
038F ; break;
038F L39:
038F .dbline 193
038F ; case 7://状态7:Bake炉加热时间到后,等Bake炉电源重启按钮按下
038F ; if(BakeFlag==1)
038F C60078 lda _BakeFlag
0392 A101 cmp #1
0394 2609 bne L19
0396 .dbline 194
0396 ; {
0396 .dbline 195
0396 ; BakeFlag=0;
0396 4F clra
0397 C70078 sta _BakeFlag
039A .dbline 196
039A ; StateFlag=1;
039A A601 lda #1
039C C7007B sta _StateFlag
039F .dbline 197
039F ; }
039F .dbline 198
039F ; break;
039F L18:
039F L19:
039F .dbline 202
039F ; }//switch
039F ;
039F ; //3 冷却箱的处理
039F ; if(Infrared<=C_Exist && CoolFlag==0) //从无到有
039F C60086 lda _Infrared+1
03A2 B700 sta *__r1
03A4 C60085 lda _Infrared
03A7 B700 sta *__r0
03A9 5500 ldhx *__r0
03AB 6500A0 cphx #160
03AE 95 tsx
03AF 2218 bhi L42
03B1 C6007A lda _CoolFlag
03B4 2613 bne L42
03B6 .dbline 203
03B6 ; {
03B6 .dbline 204
03B6 ; SwitchOutput(C_CoolSw,1); //打开冷却阀
03B6 A601 lda #1
03B8 87 psha
03B9 A604 lda #4
03BB 87 psha
03BC CD0000 jsr _SwitchOutput
03BF A702 ais #2
03C1 95 tsx
03C2 .dbline 205
03C2 ; CoolFlag=1; //有物体放入置此标志
03C2 A601 lda #1
03C4 C7007A sta _CoolFlag
03C7 .dbline 206
03C7 ; }
03C7 2028 bra L43
03C9 L42:
03C9 .dbline 207
03C9 ; else if(Infrared>C_Exist && CoolFlag==1) //从有到无
03C9 C60086 lda _Infrared+1
03CC B700 sta *__r1
03CE C60085 lda _Infrared
03D1 B700 sta *__r0
03D3 5500 ldhx *__r0
03D5 6500A0 cphx #160
03D8 95 tsx
03D9 2316 bls L44
03DB C6007A lda _CoolFlag
03DE A101 cmp #1
03E0 260F bne L44
03E2 .dbline 208
03E2 ; {
03E2 .dbline 209
03E2 ; SwitchOutput(C_CoolSw,0); //关冷却阀
03E2 4F clra
03E3 87 psha
03E4 A604 lda #4
03E6 87 psha
03E7 CD0000 jsr _SwitchOutput
03EA A702 ais #2
03EC 95 tsx
03ED .dbline 210
03ED ; CoolFlag=0; //没有物体放入清此标志
03ED 4F clra
03EE C7007A sta _CoolFlag
03F1 .dbline 211
03F1 ; }
03F1 L44:
03F1 L43:
03F1 .dbline 213
03F1 L4:
03F1 .dbline 62
03F1 CC004E jmp L3
03F4 X9:
03F4 .dbline -2
03F4 L1:
03F4 A709 ais #9
03F6 .dbline 0 ; func end
03F6 81 rts
03F7 .dbsym l InitTime 2 i
03F7 .dbsym l tmp 4 i
03F7 .dbsym l sum 6 i
03F7 .dbsym l i 8 c
03F7 .dbend
03F7 .dbfunc e ConvertCT _ConvertCT fi
03F7 ; x -> 0,X
03F7 ; y -> 2,X
03F7 ; tmp -> 4,X
03F7 ; b -> 8,X
03F7 ; k -> 12,X
03F7 ; i -> 16,X
03F7 ; adv -> 19,X
03F7 _ConvertCT::
03F7 .dbline -1
03F7 A7EF ais #-17
03F9 95 tsx
03FA .dbline 229
03FA ;
03FA ; }//while
03FA ;
03FA ; }
03FA ;
03FA ;
03FA ; //**************************************************************************
03FA ; // 内部函数 *
03FA ; //**************************************************************************
03FA ;
03FA ; //-------------------------------------------------------------------------*
03FA ; //函数名:ConvertCT *
03FA ; //参 数:AD值 *
03FA ; //返 回:AD值对应的当前温度 *
03FA ; //功 能:将AD值转换为当前温度 *
03FA ; //-------------------------------------------------------------------------*
03FA ; INT16U ConvertCT(INT16U adv)
03FA ; {
03FA .dbline 233
03FA ; INT8U i;
03FA ; INT16U x,y;
03FA ; INT32U k,b,tmp;
03FA ; for(i=9;i>=0;i--)
03FA A609 lda #9
03FC E710 sta 16,X
03FE CC0648 jmp L50
0401 L47:
0401 .dbline 234
0401 ; {
0401 .dbline 235
0401 ; if(ADtoPHY_X[i]!=0 && adv>=ADtoPHY_X[i])
0401 3F00 clr *__r0
0403 E610 lda 16,X
0405 B700 sta *__r1
0407 3800 lsl *__r1
0409 3900 rol *__r0
040B B600 lda *__r1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -