main.lis
来自「为日本瑞萨苏州分公司做的一个温控系统」· LIS 代码 · 共 1,434 行 · 第 1/4 页
LIS
1,434 行
0165 87 psha
0166 CD03BF jsr _LightAlarm
0169 A701 ais #1
016B 95 tsx
016C .dbline 98
016C ; StateFlag=5; //进入状态5
016C A605 lda #5
016E B702 sta *_StateFlag
0170 .dbline 99
0170 ; }
0170 204D bra L12
0172 L24:
0172 .dbline 101
0172 ; else
0172 ; {
0172 .dbline 102
0172 ; StateFlag=3; //加热时间未到,回状态3,边判边等
0172 A603 lda #3
0174 B702 sta *_StateFlag
0176 .dbline 103
0176 ; }
0176 .dbline 104
0176 ; break;
0176 2047 bra L12
0178 L26:
0178 .dbline 106
0178 ; case 5://状态5:冷却箱中有物体放入,就闭合Cool阀,等到无物体时就断开
0178 ; if(Infrared<=C_Exist)
0178 5506 ldhx *_Infrared
017A 650200 cphx #512
017D 95 tsx
017E 221B bhi L27
0180 .dbline 107
0180 ; {
0180 .dbline 108
0180 ; SwitchOutput(C_CoolSw,1);
0180 A601 lda #1
0182 87 psha
0183 A604 lda #4
0185 87 psha
0186 CD0000 jsr _SwitchOutput
0189 A702 ais #2
018B .dbline 109
018B ; SwitchOutput(C_GreenLight,1);
018B A601 lda #1
018D 87 psha
018E 87 psha
018F CD0000 jsr _SwitchOutput
0192 A702 ais #2
0194 95 tsx
0195 .dbline 110
0195 ; CoolFlag=1; //有物体放入置此标志
0195 A601 lda #1
0197 B701 sta *_CoolFlag
0199 .dbline 111
0199 ; }
0199 2024 bra L12
019B L27:
019B .dbline 112
019B ; else if(CoolFlag==0) //没物体放入,转状态4继续黄灯闪提示
019B B601 lda *_CoolFlag
019D 2606 bne L29
019F .dbline 113
019F ; {
019F .dbline 114
019F ; StateFlag=4;
019F A604 lda #4
01A1 B702 sta *_StateFlag
01A3 .dbline 115
01A3 ; }
01A3 201A bra L12
01A5 L29:
01A5 .dbline 117
01A5 ; else //有物体放入并已经拿走,则断开Cool阀
01A5 ; {
01A5 .dbline 118
01A5 ; SwitchOutput(C_CoolSw,0); //关冷却箱
01A5 4F clra
01A6 87 psha
01A7 A604 lda #4
01A9 87 psha
01AA CD0000 jsr _SwitchOutput
01AD A702 ais #2
01AF .dbline 119
01AF ; SwitchOutput(C_GreenLight,0);//绿灯灭
01AF 4F clra
01B0 87 psha
01B1 A601 lda #1
01B3 87 psha
01B4 CD0000 jsr _SwitchOutput
01B7 A702 ais #2
01B9 95 tsx
01BA .dbline 120
01BA ; CoolFlag=0;
01BA 3F01 clr *_CoolFlag
01BC .dbline 121
01BC ; goto MainLoop;
01BC CC001C jmp L2
01BF X6:
01BF .dbline 123
01BF ; }
01BF ; break;
01BF L11:
01BF L12:
01BF .dbline 125
01BF L4:
01BF .dbline 49
01BF CC0027 jmp L3
01C2 X7:
01C2 .dbline -2
01C2 L1:
01C2 A71B ais #27
01C4 .dbline 0 ; func end
01C4 81 rts
01C5 .dbsym l InitTime 2 c
01C5 .dbsym l tmp 3 i
01C5 .dbsym l ADValue 5 A[22:11]i
01C5 .dbend
01C5 .dbfunc e ConvertCT _ConvertCT fi
01C5 ; tmp -> 0,X
01C5 ; adv -> 6,X
01C5 _ConvertCT::
01C5 .dbline -1
01C5 A7FC ais #-4
01C7 95 tsx
01C8 .dbline 140
01C8 ; }//switch
01C8 ; }//while
01C8 ; }
01C8 ;
01C8 ;
01C8 ; //**************************************************************************
01C8 ; // 内部函数 *
01C8 ; //**************************************************************************
01C8 ;
01C8 ; //-------------------------------------------------------------------------*
01C8 ; //函数名:ConvertCT *
01C8 ; //参 数:AD值 *
01C8 ; //返 回:AD值对应的当前温度 *
01C8 ; //功 能:将AD值转换为当前温度 *
01C8 ; //-------------------------------------------------------------------------*
01C8 ; INT16U ConvertCT(INT16U adv)
01C8 ; {
01C8 .dbline 144
01C8 ; INT32U tmp;
01C8 ;
01C8 ; //防止溢出,限定最大最小值
01C8 ; if(adv<TADmin)
01C8 C68003 lda _TADmin+1
01CB B700 sta *__r1
01CD C68002 lda _TADmin
01D0 B700 sta *__r0
01D2 E607 lda 7,X
01D4 B700 sta *__r3
01D6 E606 lda 6,X
01D8 B700 sta *__r2
01DA 5500 ldhx *__r2
01DC 7500 cphx *__r0
01DE 95 tsx
01DF 240C bhs L32
01E1 .dbline 145
01E1 ; adv=TADmin;
01E1 C68002 lda _TADmin
01E4 E706 sta 6,X
01E6 C68003 lda _TADmin+1
01E9 E707 sta 7,X
01EB 2023 bra L33
01ED L32:
01ED .dbline 146
01ED ; else if(adv>TADmax)
01ED C68005 lda _TADmax+1
01F0 B700 sta *__r1
01F2 C68004 lda _TADmax
01F5 B700 sta *__r0
01F7 E607 lda 7,X
01F9 B700 sta *__r3
01FB E606 lda 6,X
01FD B700 sta *__r2
01FF 5500 ldhx *__r2
0201 7500 cphx *__r0
0203 95 tsx
0204 230A bls L34
0206 .dbline 147
0206 ; adv=TADmax;
0206 C68004 lda _TADmax
0209 E706 sta 6,X
020B C68005 lda _TADmax+1
020E E707 sta 7,X
0210 L34:
0210 L33:
0210 .dbline 152
0210 ;
0210 ; // TADmax-TADmin adv-TADmin
0210 ; //计算公式: -------------- = ---------------
0210 ; // Tmax-Tmin ?-Tmin
0210 ; tmp=adv-TADmin;
0210 E607 lda 7,X
0212 C08003 sub _TADmin+1
0215 B700 sta *__r1
0217 E606 lda 6,X
0219 C28002 sbc _TADmin
021C B700 sta *__r0
021E 4F clra
021F E701 sta 1,X
0221 F7 sta ,X
0222 B600 lda *__r1
0224 E703 sta 3,X
0226 B600 lda *__r0
0228 E702 sta 2,X
022A .dbline 153
022A ; tmp=(tmp*(Tmax-Tmin))/(TADmax-TADmin)+Tmin;
022A 3F00 clr *__r0
022C C68000 lda _Tmin
022F B700 sta *__r1
0231 3F00 clr *__r2
0233 C68001 lda _Tmax
0236 B000 sub *__r1
0238 B700 sta *__r1
023A B600 lda *__r2
023C B200 sbc *__r0
023E B700 sta *__r0
0240 4E0000 mov *__r1,*__r3
0243 4E0000 mov *__r0,*__r2
0246 3F00 clr *__r1
0248 3F00 clr *__r0
024A 3D00 tst *__r2
024C 2A04 bpl X11
024E 3300 com *__r1
0250 3300 com *__r0
0252 X11:
0252 E603 lda 3,X
0254 87 psha
0255 E602 lda 2,X
0257 87 psha
0258 E601 lda 1,X
025A 87 psha
025B F6 lda ,X
025C 87 psha
025D B600 lda *__r3
025F 87 psha
0260 B600 lda *__r2
0262 87 psha
0263 B600 lda *__r1
0265 87 psha
0266 B600 lda *__r0
0268 87 psha
0269 CD0000 jsr __mul32u
026C A704 ais #4
026E C68005 lda _TADmax+1
0271 C08003 sub _TADmin+1
0274 B700 sta *__r5
0276 C68004 lda _TADmax
0279 C28002 sbc _TADmin
027C B700 sta *__r4
027E 4E0000 mov *__r5,*__r7
0281 4E0000 mov *__r4,*__r6
0284 3F00 clr *__r5
0286 3F00 clr *__r4
0288 B600 lda *__r7
028A 87 psha
028B B600 lda *__r6
028D 87 psha
028E B600 lda *__r5
0290 87 psha
0291 B600 lda *__r4
0293 87 psha
0294 CD0000 jsr __divmod32u
0297 A704 ais #4
0299 86 pula
029A B700 sta *__r0
029C 86 pula
029D B700 sta *__r1
029F 86 pula
02A0 B700 sta *__r2
02A2 86 pula
02A3 B700 sta *__r3
02A5 3F00 clr *__r6
02A7 3F00 clr *__r5
02A9 3F00 clr *__r4
02AB C68000 lda _Tmin
02AE B700 sta *__r7
02B0 B600 lda *__r3
02B2 BB00 add *__r7
02B4 E703 sta 3,X
02B6 B600 lda *__r2
02B8 B900 adc *__r6
02BA E702 sta 2,X
02BC B600 lda *__r1
02BE B900 adc *__r5
02C0 E701 sta 1,X
02C2 B600 lda *__r0
02C4 B900 adc *__r4
02C6 F7 sta ,X
02C7 .dbline 154
02C7 ; return(tmp);
02C7 E603 lda 3,x
02C9 B700 sta *__r3
02CB E602 lda 2,x
02CD B700 sta *__r2
02CF 95 tsx
02D0 4E0000 mov *__r3,*__r1
02D3 4E0000 mov *__r2,*__r0
02D6 .dbline -2
02D6 L31:
02D6 A704 ais #4
02D8 .dbline 0 ; func end
02D8 81 rts
02D9 .dbsym l tmp 0 l
02D9 .dbsym l adv 6 i
02D9 .dbend
02D9 .dbfunc e ConvertT _ConvertT fi
02D9 ; tmp -> 0,X
02D9 ; adv -> 6,X
02D9 _ConvertT::
02D9 .dbline -1
02D9 A7FC ais #-4
02DB 95 tsx
02DC .dbline 163
02DC ; }
02DC ; //-------------------------------------------------------------------------*
02DC ; //函数名:ConvertT *
02DC ; //参 数:AD值 *
02DC ; //返 回:AD值对应的设定温度 *
02DC ; //功 能:将AD值转换为设定温度 *
02DC ; //-------------------------------------------------------------------------*
02DC ; INT16U ConvertT(INT16U adv)
02DC ; {
02DC .dbline 166
02DC ; INT32U tmp; //32位
02DC ;
02DC ; tmp=adv;
02DC 4F clra
02DD E701 sta 1,X
02DF F7 sta ,X
02E0 E607 lda 7,X
02E2 E703 sta 3,X
02E4 E606 lda 6,X
02E6 E702 sta 2,X
02E8 .dbline 168
02E8 ; //按线性关系,将AD值范围分为C_TmpBound等分
02E8 ; tmp=((tmp*C_TmpBound)/C_RADMax)/10+C_MinTmp;
02E8 A6B8 lda #-72
02EA 87 psha
02EB A60B lda #11
02ED 87 psha
02EE 4F clra
02EF 87 psha
02F0 87 psha
02F1 E603 lda 3,X
02F3 87 psha
02F4 E602 lda 2,X
02F6 87 psha
02F7 E601 lda 1,X
02F9 87 psha
02FA F6 lda ,X
02FB 87 psha
02FC CD0000 jsr __mul32u
02FF A704 ais #4
0301 A6CC lda #-52
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?