📄 2.src
字号:
DEC TMSetV
?C0020:
; if (TMSetV <= -55) //限制温度上下限
; SOURCE LINE # 184
SETB C
MOV A,TMSetV
XRL A,#080H
SUBB A,#049H
JNC ?C0021
; TMSetV = -55;
; SOURCE LINE # 185
MOV TMSetV,#0C9H
?C0021:
; if (TMSetV >= 125)
; SOURCE LINE # 186
CLR C
MOV A,TMSetV
XRL A,#080H
SUBB A,#0FDH
JC ?C0018
; TMSetV = 125;
; SOURCE LINE # 187
MOV TMSetV,#07DH
; }
; SOURCE LINE # 188
?C0018:
; if ((!KeyTF) && (IntNum3 == 0)) KeyTF = 1; //当键盘处于可用时,锁定
; SOURCE LINE # 189
JB KeyTF,?C0011
MOV A,IntNum3
JNZ ?C0011
SETB KeyTF
; }
; SOURCE LINE # 190
?C0011:
;
; if (KeySETDown) //在2秒内按下了SET则计中断发生次数用于长按SET时计时用
; SOURCE LINE # 192
JNB KeySETDown,?C0024
; IntNum = IntNum + 1;
; SOURCE LINE # 193
INC IntNum
?C0024:
; if (IntNum > 55) //中断发生了55次时(大约1.2秒)75为1.5秒左右
; SOURCE LINE # 194
MOV A,IntNum
SETB C
SUBB A,#037H
JC ?C0007
; {
; SOURCE LINE # 195
; IntNum = 0;
; SOURCE LINE # 196
MOV IntNum,#00H
; KeySETDown = 0;
; SOURCE LINE # 197
CLR KeySETDown
; if (KSDNum == 55) //如一直长按了SET1.2秒左右
; SOURCE LINE # 198
MOV A,KSDNum
XRL A,#037H
JNZ ?C0026
; {
; SOURCE LINE # 199
; RelayOutPort = 1; //关闭继电器输出
; SOURCE LINE # 200
SETB RelayOutPort
; PowTF = 1; //电源标识关
; SOURCE LINE # 201
SETB PowTF
; LEDOneC = 0;
; SOURCE LINE # 202
CLR LEDOneC
; LEDTwoC = 0;
; SOURCE LINE # 203
CLR LEDTwoC
; LEDThreeC = 0;
; SOURCE LINE # 204
CLR LEDThreeC
; LEDPort = 0xBF; //显示"--"
; SOURCE LINE # 205
SETB LEDPort
; Delay_4s(); //延时
; SOURCE LINE # 206
LCALL Delay_4s
; LEDOneC = 1;
; SOURCE LINE # 207
SETB LEDOneC
; LEDTwoC = 1; //关显示
; SOURCE LINE # 208
SETB LEDTwoC
; LEDThreeC = 1;
; SOURCE LINE # 209
SETB LEDThreeC
; Delay_4s();
; SOURCE LINE # 210
LCALL Delay_4s
; IntNum = 0;
; SOURCE LINE # 211
MOV IntNum,#00H
; IntNum2 = 0;
; SOURCE LINE # 212
MOV IntNum2,#00H
; IntNum3 = 0;
; SOURCE LINE # 213
MOV IntNum3,#00H
; }
; SOURCE LINE # 214
?C0026:
; KSDNum = 0;
; SOURCE LINE # 215
MOV KSDNum,#00H
; }
; SOURCE LINE # 216
; }
; SOURCE LINE # 217
?C0007:
; KeyV = 0;
; SOURCE LINE # 218
MOV KeyV,#00H
; TempKeyV = 0; //清空变量准备下次键扫描
; SOURCE LINE # 219
MOV TempKeyV,#00H
;
; if (!PowTF)
; SOURCE LINE # 221
JNB PowTF,$ + 6H
LJMP ?C0036
; {
; SOURCE LINE # 222
; InitDS1820(); //初始化
; SOURCE LINE # 223
LCALL InitDS1820
; ROMDS1820(); //跳过ROM
; SOURCE LINE # 224
LCALL ROMDS1820
; TMVDS1820(); //温度转换指令
; SOURCE LINE # 225
LCALL TMVDS1820
;
; Delay_510();
; SOURCE LINE # 227
LCALL Delay_510
; Delay_510(); //延时等待转换完成
; SOURCE LINE # 228
LCALL Delay_510
;
; InitDS1820(); //初始化
; SOURCE LINE # 230
LCALL InitDS1820
; ROMDS1820(); //跳过ROM
; SOURCE LINE # 231
LCALL ROMDS1820
; TMRDS1820(); //读出温度指令
; SOURCE LINE # 232
LCALL TMRDS1820
; ReadDS1820(); //读出温度值
; SOURCE LINE # 233
LCALL ReadDS1820
;
; V2ToV(); //转换显示值
; SOURCE LINE # 235
LCALL V2ToV
; if (TMV > TMSetV) //根据采集到的温度值控制继电器
; SOURCE LINE # 236
SETB C
MOV A,TMSetV
XRL A,#080H
MOV R0,A
MOV A,TMV
XRL A,#080H
SUBB A,R0
JC ?C0028
; {
; SOURCE LINE # 237
; RelayOutPort = 0;
; SOURCE LINE # 238
CLR RelayOutPort
; }
; SOURCE LINE # 239
SJMP ?C0029
?C0028:
; else
; {
; SOURCE LINE # 241
; RelayOutPort = 1;
; SOURCE LINE # 242
SETB RelayOutPort
; }
; SOURCE LINE # 243
?C0029:
;
; if (SetTF) IntNum2 = IntNum2 + 1; //用于闪烁计数
; SOURCE LINE # 245
JNB SetTF,?C0030
INC IntNum2
?C0030:
; if (IntNum2 > 50 ) IntNum2 = 0;
; SOURCE LINE # 246
MOV A,IntNum2
SETB C
SUBB A,#032H
JC ?C0031
MOV IntNum2,#00H
?C0031:
; if (KeyTF) IntNum3 = IntNum3 + 1; //用于防止按键连按
; SOURCE LINE # 247
JNB KeyTF,?C0032
INC IntNum3
?C0032:
; if (IntNum3 > 25)
; SOURCE LINE # 248
MOV A,IntNum3
SETB C
SUBB A,#019H
JC ?C0033
; {
; SOURCE LINE # 249
; IntNum3 = 0;
; SOURCE LINE # 250
MOV IntNum3,#00H
; KeyTF = 0;
; SOURCE LINE # 251
CLR KeyTF
; }
; SOURCE LINE # 252
?C0033:
;
; if ((SetTF) && (IntNum2 < 25)) goto InitEnd; //计数在后半段时显示
; SOURCE LINE # 254
JNB SetTF,?C0034
MOV A,IntNum2
CLR C
SUBB A,#019H
JC ?C0036
?C0034:
; LEDPort = LED_One;
; SOURCE LINE # 255
MOV A,LED_One
ADD A,#0FFH
MOV LEDPort,C
; LEDOneC = 0;
; SOURCE LINE # 256
CLR LEDOneC
; Delay_510();
; SOURCE LINE # 257
LCALL Delay_510
; LEDOneC = 1; //显示百位数
; SOURCE LINE # 258
SETB LEDOneC
; LEDPort = LED_Two;
; SOURCE LINE # 259
MOV A,LED_Two
ADD A,#0FFH
MOV LEDPort,C
; LEDTwoC = 0;
; SOURCE LINE # 260
CLR LEDTwoC
; Delay_510();
; SOURCE LINE # 261
LCALL Delay_510
; LEDTwoC = 1; //显示十位数
; SOURCE LINE # 262
SETB LEDTwoC
; LEDPort = LED_Three;
; SOURCE LINE # 263
MOV A,LED_Three
ADD A,#0FFH
MOV LEDPort,C
; LEDThreeC = 0;
; SOURCE LINE # 264
CLR LEDThreeC
; Delay_510();
; SOURCE LINE # 265
LCALL Delay_510
; LEDThreeC = 1; //显示个位数
; SOURCE LINE # 266
SETB LEDThreeC
; }
; SOURCE LINE # 267
; InitEnd:;
; SOURCE LINE # 268
?KeyAndDis_Time0?InitEnd:
; }
; SOURCE LINE # 269
?C0036:
POP PSW
POP DPL
POP DPH
POP B
POP ACC
RETI
; END OF KeyAndDis_Time0
;
; void V2ToV(void) //数值转换
RSEG ?PR?V2ToV?2
V2ToV:
USING 0
; SOURCE LINE # 271
; {
; SOURCE LINE # 272
; TLV = TLV >> 4;
; SOURCE LINE # 273
MOV A,TLV
SWAP A
ANL A,#0FH
MOV TLV,A
; THV = THV << 4; //读出的高低位数值移位
; SOURCE LINE # 274
MOV A,THV
SWAP A
ANL A,#0F0H
MOV THV,A
; TMV = TLV | THV; //合并高低位放入TM为实际温度值
; SOURCE LINE # 275
ORL A,TLV
MOV TMV,A
; Sign = 0;
; SOURCE LINE # 276
CLR A
MOV Sign,A
; if (SetTF || !Key_SET)
; SOURCE LINE # 277
JB SetTF,?C0038
JB Key_SET,?C0037
?C0038:
; Sign = TMSetV >> 7; //取符号
; SOURCE LINE # 278
MOV A,TMSetV
MOV R0,#07H
?C0072:
MOV C,ACC.7
RRC A
DJNZ R0,?C0072
MOV Sign,A
SJMP ?C0039
?C0037:
; else
; Sign = TMV >> 7;
; SOURCE LINE # 280
MOV A,TMV
MOV R0,#07H
?C0073:
MOV C,ACC.7
RRC A
DJNZ R0,?C0073
MOV Sign,A
?C0039:
;
; if (Sign)
; SOURCE LINE # 282
MOV A,Sign
JZ ?C0040
; {
; SOURCE LINE # 283
; if (SetTF || !Key_SET)
; SOURCE LINE # 284
JB SetTF,?C0042
JB Key_SET,?C0041
?C0042:
; {
; SOURCE LINE # 285
; LED_One = (~(TMSetV-1)) / 100; //SET状态下显示设定值
; SOURCE LINE # 286
MOV A,TMSetV
; LED_Two = ((~(TMSetV-1)) - LED_One * 100)/10;
; SOURCE LINE # 287
; LED_Three = (~(TMSetV-1)) - LED_One * 100 - LED_Two * 10;
; SOURCE LINE # 288
; }
; SOURCE LINE # 289
SJMP ?C0074
?C0041:
; else
; {
; SOURCE LINE # 291
; LED_One = (~(TMV-1)) / 100; //转换百位值
; SOURCE LINE # 292
MOV A,TMV
?C0074:
DEC A
CPL A
MOV R7,A
MOV B,#064H
LCALL ?C?SCDIV
MOV LED_One,A
; LED_Two = ((~(TMV-1)) - LED_One * 100)/10;
; SOURCE LINE # 293
MOV B,#064H
MUL AB
MOV R6,A
CLR C
MOV A,R7
SUBB A,R6
; LED_Three = (~(TMV-1)) - LED_One * 100 - LED_Two * 10;
; SOURCE LINE # 294
; }
; SOURCE LINE # 295
; }
; SOURCE LINE # 296
SJMP ?C0076
?C0040:
; else
; {
; SOURCE LINE # 298
; if (SetTF || !Key_SET)
; SOURCE LINE # 299
JB SetTF,?C0046
JB Key_SET,?C0045
?C0046:
; {
; SOURCE LINE # 300
; LED_One = (TMSetV) / 100; //SET状态下显示设定值
; SOURCE LINE # 301
MOV A,TMSetV
MOV B,#064H
LCALL ?C?SCDIV
MOV LED_One,A
; LED_Two = (TMSetV - LED_One * 100)/10;
; SOURCE LINE # 302
MOV B,#064H
MUL AB
MOV R7,A
CLR C
MOV A,TMSetV
SUBB A,R7
?C0075:
; LED_Three = TMSetV - LED_One * 100 - LED_Two * 10;
; SOURCE LINE # 303
; }
; SOURCE LINE # 304
SJMP ?C0076
?C0045:
; else
; {
; SOURCE LINE # 306
; LED_One = (TMV) / 100; //转换百位值
; SOURCE LINE # 307
MOV A,TMV
MOV B,#064H
LCALL ?C?SCDIV
MOV LED_One,A
; LED_Two = (TMV - LED_One * 100)/10;
; SOURCE LINE # 308
MOV B,#064H
MUL AB
MOV R7,A
CLR C
MOV A,TMV
SUBB A,R7
?C0076:
MOV R7,A
MOV B,#0AH
LCALL ?C?SCDIV
MOV LED_Two,A
; LED_Three = TMV - LED_One * 100 - LED_Two * 10;
; SOURCE LINE # 309
MOV B,#0AH
MUL AB
MOV R6,A
CLR C
MOV A,R7
SUBB A,R6
MOV LED_Three,A
; }
; SOURCE LINE # 310
; }
; SOURCE LINE # 311
?C0044:
;
; //转LED字段
; if (LED_One) //超过百时十位的处理
; SOURCE LINE # 314
MOV A,LED_One
JZ ?C0048
; LED_Two = LEDDis[LED_Two];
; SOURCE LINE # 315
SJMP ?C0077
?C0048:
; else
; {
; SOURCE LINE # 317
; if (LED_Two == 0)
; SOURCE LINE # 318
MOV A,LED_Two
JNZ ?C0050
; LED_Two = LEDDis[10];
; SOURCE LINE # 319
MOV DPTR,#LEDDis+0AH
SJMP ?C0078
?C0050:
; else
; LED_Two = LEDDis[LED_Two];
; SOURCE LINE # 321
?C0077:
MOV R7,LED_Two
MOV A,R7
RLC A
SUBB A,ACC
MOV R6,A
MOV A,#LOW (LEDDis)
ADD A,R7
MOV DPL,A
MOV A,#HIGH (LEDDis)
ADDC A,R6
MOV DPH,A
CLR A
?C0078:
MOVC A,@A+DPTR
MOV LED_Two,A
; }
; SOURCE LINE # 322
?C0049:
; if (Sign)
; SOURCE LINE # 323
MOV A,Sign
JZ ?C0052
; LED_One = LEDDis[11];
; SOURCE LINE # 324
MOV DPTR,#LEDDis+0BH
SJMP ?C0079
?C0052:
; else
; {
; SOURCE LINE # 326
; if (LED_One == 0)
; SOURCE LINE # 327
MOV A,LED_One
JNZ ?C0054
; LED_One = LEDDis[10];
; SOURCE LINE # 328
MOV DPTR,#LEDDis+0AH
SJMP ?C0080
?C0054:
; else
; LED_One = LEDDis[LED_One];
; SOURCE LINE # 330
MOV R7,LED_One
MOV A,R7
RLC A
SUBB A,ACC
MOV R6,A
MOV A,#LOW (LEDDis)
ADD A,R7
MOV DPL,A
MOV A,#HIGH (LEDDis)
ADDC A,R6
MOV DPH,A
?C0079:
CLR A
?C0080:
MOVC A,@A+DPTR
MOV LED_One,A
; }
; SOURCE LINE # 331
?C0053:
; LED_Three = LEDDis[LED_Three];
; SOURCE LINE # 332
MOV R7,LED_Three
MOV A,R7
RLC A
SUBB A,ACC
MOV R6,A
MOV A,#LOW (LEDDis)
ADD A,R7
MOV DPL,A
MOV A,#HIGH (LEDDis)
ADDC A,R6
MOV DPH,A
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -