📄 main.s
字号:
lda #<_BigNumCode
psha
lda #>_BigNumCode
psha
clra
psha
psha
jsr _LcdShBigNum
ais #6
tsx
.dbline 104
;
; }
L13:
.dbline 107
;
; //3 接收到PC读数据的请求就发送显示参数
; if(SendFlag==1)
lda _SendFlag
cmp #1
bne L16
.dbline 108
; {
.dbline 110
;
; SCISend1('S'); //帧头'S'
lda #83
psha
jsr _SCISend1
ais #1
.dbline 111
; SCISend1(CurtTmp>>8); //当前温度
lda _CurtTmp
psha
jsr _SCISend1
ais #1
.dbline 112
; SCISend1(CurtTmp);
lda _CurtTmp+1
psha
jsr _SCISend1
ais #1
.dbline 113
; SCISend1(Temper>>8); //设定温度
lda _Temper
psha
jsr _SCISend1
ais #1
.dbline 114
; SCISend1(Temper);
lda _Temper+1
psha
jsr _SCISend1
ais #1
.dbline 115
; SCISend1(CurtTime>>8); //当前时间
lda _CurtTime
psha
jsr _SCISend1
ais #1
.dbline 116
; SCISend1((INT8U)CurtTime);
lda _CurtTime+1
psha
jsr _SCISend1
ais #1
.dbline 117
; SCISend1(Time>>8); //设定时间
lda _Time
psha
jsr _SCISend1
ais #1
.dbline 118
; SCISend1(Time);
lda _Time+1
psha
jsr _SCISend1
ais #1
.dbline 119
; SCISend1(ScdTim); //当前秒数,供PC显示横坐标刻度
lda _ScdTim
psha
jsr _SCISend1
ais #1
tsx
.dbline 120
; SCISend1(sum>>8); //当前温度的AD值
lda 6,X
psha
jsr _SCISend1
ais #1
tsx
.dbline 121
; SCISend1(sum);
lda 7,X
psha
jsr _SCISend1
ais #1
.dbline 122
; SCISend1('E'); //帧尾'E'
lda #69
psha
jsr _SCISend1
ais #1
tsx
.dbline 123
; SendFlag=0; //清标志
clra
sta _SendFlag
.dbline 124
; }
L16:
.dbline 131
;
;
;
;
;
; //4 Bake炉根据不同状态,作不同处理
; switch(StateFlag)
clr ,X
lda _StateFlag
sta 1,X
lda ,X
bne X0
lda 1,X
cmp #1
beq L21
X0:
lda ,X
bne X1
lda 1,X
cmp #2
beq L22
X1:
lda ,X
bne X2
lda 1,X
cmp #3
bne X10
jmp L25
X10:
X2:
lda ,X
bne X3
lda 1,X
cmp #4
bne X11
jmp L30
X11:
X3:
lda ,X
bne X4
lda 1,X
cmp #5
bne X12
jmp L33
X12:
X4:
lda ,X
bne X5
lda 1,X
cmp #6
bne X13
jmp L36
X13:
X5:
lda ,X
bne X6
lda 1,X
cmp #7
bne X14
jmp L39
X14:
X6:
jmp L18
X7:
.dbline 132
; {
L21:
.dbline 134
; case 1://状态1:绿灯亮,Bake炉电源接通,其电源指示灯亮
; SwitchOutput(C_GreenLight,1); //系统开始工作后,绿灯常亮
lda #1
psha
psha
jsr _SwitchOutput
ais #2
.dbline 135
; SwitchOutput(C_BakeSw,1); //使Bake炉电源接通
lda #1
psha
lda #3
psha
jsr _SwitchOutput
ais #2
.dbline 136
; LightOut(1); //Bake炉电源指示灯亮
lda #1
psha
jsr _LightOut
ais #1
tsx
.dbline 138
; // BakeFlag=1;
; StateFlag=2; //进入状态2
lda #2
sta _StateFlag
.dbline 139
; break;
jmp L19
L22:
.dbline 141
; case 2://状态2:等待炉内温度达到设定值
; if(CurtTmp>=Temper) //温度达到设定值
lda _Temper+1
sta *__r1
lda _Temper
sta *__r0
lda _CurtTmp+1
sta *__r3
lda _CurtTmp
sta *__r2
ldhx *__r2
cphx *__r0
tsx
bhs X15
jmp L19
X15:
.dbline 142
; {
.dbline 143
; InitTime=MntTim; //记录此刻时间,作为加热时间的基值
lda _MntTim
sta 2,X
lda _MntTim+1
sta 3,X
.dbline 144
; StateFlag=3; //进入状态3
lda #3
sta _StateFlag
.dbline 145
; }
.dbline 146
; break;
jmp L19
L25:
.dbline 148
; case 3://状态3:如果当前炉内温度偏离设定温度过大,则报警提示复位系统
; if(CurtTmp>Temper) //允许正负偏一定值,tmp为两者的差值
lda _Temper+1
sta *__r1
lda _Temper
sta *__r0
lda _CurtTmp+1
sta *__r3
lda _CurtTmp
sta *__r2
ldhx *__r2
cphx *__r0
tsx
bls L26
.dbline 149
; tmp=CurtTmp-Temper;
lda _CurtTmp+1
sub _Temper+1
sta 5,X
lda _CurtTmp
sbc _Temper
sta 4,X
bra L27
L26:
.dbline 151
; else
; tmp=Temper-CurtTmp;
lda _Temper+1
sub _CurtTmp+1
sta 5,X
lda _Temper
sbc _CurtTmp
sta 4,X
L27:
.dbline 152
; if(tmp>C_TmpPC) //如果当前温度与设定温度偏差大于5,作异常处理
lda 5,X
sta *__r1
lda 4,X
sta *__r0
ldhx *__r0
cphx #10
tsx
bls L28
.dbline 153
; {
.dbline 154
; SwitchOutput(C_BakeSw,0); //断开Bake炉电源
clra
psha
lda #3
psha
jsr _SwitchOutput
ais #2
.dbline 155
; LightOut(0); //Bake炉电源指示灯灭
clra
psha
jsr _LightOut
ais #1
.dbline 157
; // BakeFlag=0;
; SwitchOutput(C_GreenLight,0);//绿灯灭
clra
psha
lda #1
psha
jsr _SwitchOutput
ais #2
tsx
.dbline 158
; StateFlag=6; //进入状态6
lda #6
sta _StateFlag
.dbline 159
; }
jmp L19
L28:
.dbline 161
; else
; {
.dbline 162
; StateFlag=4; //无异常,进入状态4
lda #4
sta _StateFlag
.dbline 163
; }
.dbline 164
; break;
jmp L19
L30:
.dbline 166
; case 4://状态4:如果加热到设定时间,黄灯闪,提示将加热物体拿出放入冷却箱
; CurtTime=MntTim-InitTime;
lda _MntTim+1
sub 3,X
sta _CurtTime+1
lda _MntTim
sbc 2,X
sta _CurtTime
.dbline 167
; if(CurtTime>=Time) //加热时间到,黄灯闪提示,直到Cool阀开
lda _Time+1
sta *__r1
lda _Time
sta *__r0
lda _CurtTime+1
sta *__r3
lda _CurtTime
sta *__r2
ldhx *__r2
cphx *__r0
tsx
blo L31
.dbline 168
; {
.dbline 169
; LightAlarm(C_YellowLight); //断开Bake阀、绿灯灭、黄灯闪
lda #2
psha
jsr _LightAlarm
ais #1
tsx
.dbline 170
; StateFlag=5; //进入状态5
lda #5
sta _StateFlag
.dbline 171
; }
bra L19
L31:
.dbline 173
; else
; {
.dbline 174
; StateFlag=3; //加热时间未到,回状态3,边判边等
lda #3
sta _StateFlag
.dbline 175
; }
.dbline 176
; break;
bra L19
L33:
.dbline 178
; case 5://状态5:冷却箱中无物体放入,黄灯继续闪
; if(Infrared>C_Exist)
lda _Infrared+1
sta *__r1
lda _Infrared
sta *__r0
ldhx *__r0
cphx #160
tsx
bls L34
.dbline 179
; StateFlag=4; //无物体放入,回状态4,黄灯继续闪
lda #4
sta _StateFlag
bra L19
L34:
.dbline 181
; else
; StateFlag=7; //有物体放入,去状态7
lda #7
sta _StateFlag
.dbline 182
; break;
bra L19
L36:
.dbline 184
; case 6://状态6:Bake炉内温度异常后红灯报警,直至有复位开关按下
; SwitchOutput(C_RedLight,1); //红灯亮并报警
lda #1
psha
lda #5
psha
jsr _SwitchOutput
ais #2
tsx
.dbline 185
; if(ResetFlag==1)
lda _ResetFlag
cmp #1
bne L19
.dbline 186
; {
.dbline 187
; ResetFlag=0;
clra
sta _ResetFlag
.dbline 188
; SwitchOutput(C_RedLight,0);
clra
psha
lda #5
psha
jsr _SwitchOutput
ais #2
tsx
.dbline 189
; goto MainLoop;
jmp L2
X8:
.dbline 191
; }
; break;
L39:
.dbline 193
; case 7://状态7:Bake炉加热时间到后,等Bake炉电源重启按钮按下
; if(BakeFlag==1)
lda _BakeFlag
cmp #1
bne L19
.dbline 194
; {
.dbline 195
; BakeFlag=0;
clra
sta _BakeFlag
.dbline 196
; StateFlag=1;
lda #1
sta _StateFlag
.dbline 197
; }
.dbline 198
; break;
L18:
L19:
.dbline 202
; }//switch
;
; //3 冷却箱的处理
; if(Infrared<=C_Exist && CoolFlag==0) //从无到有
lda _Infrared+1
sta *__r1
lda _Infrared
sta *__r0
ldhx *__r0
cphx #160
tsx
bhi L42
lda _CoolFlag
bne L42
.dbline 203
; {
.dbline 204
; SwitchOutput(C_CoolSw,1); //打开冷却阀
lda #1
psha
lda #4
psha
jsr _SwitchOutput
ais #2
tsx
.dbline 205
; CoolFlag=1; //有物体放入置此标志
lda #1
sta _CoolFlag
.dbline 206
; }
bra L43
L42:
.dbline 207
; else if(Infrared>C_Exist && CoolFlag==1) //从有到无
lda _Infrared+1
sta *__r1
lda _Infrared
sta *__r0
ldhx *__r0
cphx #160
tsx
bls L44
lda _CoolFlag
cmp #1
bne L44
.dbline 208
; {
.dbline 209
; SwitchOutput(C_CoolSw,0); //关冷却阀
clra
psha
lda #4
psha
jsr _SwitchOutput
ais #2
tsx
.dbline 210
; CoolFlag=0; //没有物体放入清此标志
clra
sta _CoolFlag
.dbline 211
; }
L44:
L43:
.dbline 213
L4:
.dbline 62
jmp L3
X9:
.dbline -2
L1:
ais #9
.dbline 0 ; func end
rts
.dbsym l InitTime 2 i
.dbsym l tmp 4 i
.dbsym l sum 6 i
.dbsym l i 8 c
.dbend
.dbfunc e ConvertCT _ConvertCT fi
; x -> 0,X
; y -> 2,X
; tmp -> 4,X
; b -> 8,X
; k -> 12,X
; i -> 16,X
; adv -> 19,X
_ConvertCT::
.dbline -1
ais #-17
tsx
.dbline 229
;
; }//while
;
; }
;
;
; //**************************************************************************
; // 内部函数 *
; //**************************************************************************
;
; //-------------------------------------------------------------------------*
; //函数名:ConvertCT *
; //参 数:AD值 *
; //返 回:AD值对应的当前温度 *
; //功 能:将AD值转换为当前温度 *
; //-------------------------------------------------------------------------*
; INT16U ConvertCT(INT16U adv)
; {
.dbline 233
; INT8U i;
; INT16U x,y;
; INT32U k,b,tmp;
; for(i=9;i>=0;i--)
lda #9
sta 16,X
jmp L50
L47:
.dbline 234
; {
.dbline 235
; if(ADtoPHY_X[i]!=0 && adv>=ADtoPHY_X[i])
clr *__r0
lda 16,X
sta *__r1
lsl *__r1
rol *__r0
lda *__r1
add #<_ADtoPHY_X
sta *__r1
lda *__r0
adc #>_ADtoPHY_X
sta *__r0
ldhx *__r0
lda 1,x
sta *__r1
lda ,x
sta *__r0
ldhx *__r0
cphx #0
tsx
bne X16
jmp L51
X16:
lda 20,X
sta *__r3
lda 19,X
sta *__r2
ldhx *__r2
cphx *__r0
tsx
bhs X17
jmp L51
X17:
.dbline 236
; {
.dbline 237
; k=ADtoPHY_k1[i];
clr *__r0
lda 16,X
sta *__r1
lsl *__r1
rol *__r0
lda *__r1
add #<_ADtoPHY_k1
sta *__r1
lda *__r0
adc #>_ADtoPHY_k1
sta *__r0
ldhx *__r0
lda 1,x
sta *__r1
lda ,x
tsx
sta *__r0
clra
sta 13,X
sta 12,X
lda *__r1
sta 15,X
lda *__r0
sta 14,X
.dbline 238
; k=k*1000+ADtoPHY_k2[i];
clr *__r0
lda 16,X
sta *__r1
lsl *__r1
rol *__r0
lda *__r1
add #<_ADtoPHY_k2
sta *__r1
lda *__r0
adc #>_ADtoPHY_k2
sta *__r0
ldhx *__r0
lda 1,x
sta *__r1
lda ,x
tsx
sta *__r0
mov *__r1,*__r3
mov *__r0,*__r2
clr *__r1
clr *__r0
lda #-24
psha
lda #3
psha
clra
psha
psha
lda 15,X
psha
lda 14,X
psha
lda 13,X
psha
lda 12,X
psha
jsr __mul32u
ais #4
pula
sta *__r4
pula
sta *__r5
pula
sta *__r6
pula
add *__r3
sta 15,X
lda *__r6
adc *__r2
sta 14,X
lda *__r5
adc *__r1
sta 13,X
lda *__r4
adc *__r0
sta 12,X
.dbline 239
; b=ADtoPHY_b1[i];
clr *__r0
lda 16,X
sta *__r1
lsl *__r1
rol *__r0
lda *__r1
add #<_ADtoPHY_b1
sta *__r1
lda *__r0
adc #>_ADtoPHY_b1
sta *__r0
ldhx *__r0
lda 1,x
sta *__r1
lda ,x
tsx
sta *__r0
clra
sta 9,X
sta 8,X
lda *__r1
sta 11,X
lda *__r0
sta 10,X
.dbline 240
; b=b*1000+ADtoPHY_b2[i];
clr *__r0
lda 16,X
sta *__r1
lsl *__r1
rol *__r0
lda *__r1
add #<_ADtoPHY_b2
sta *__r1
lda *__r0
adc #>_ADtoPHY_b2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -