📄 tcmain.src
字号:
; //BEEP=1;
; send_char_com('N');
; SOURCE LINE # 187
MOV R7,#04EH
; send_char_com('N');
; SOURCE LINE # 188
; send_char_com('N');
; SOURCE LINE # 189
ACALL L?0100
; SetTF = 0;
; SOURCE LINE # 190
CLR SetTF
;
; inbuf2[0]=0x00;
; SOURCE LINE # 192
MOV inbuf2,#00H
;
; }
; SOURCE LINE # 194
?C0019:
;
; if (inbuf2[0]==0x34){
; SOURCE LINE # 196
MOV A,inbuf2
CJNE A,#034H,?C0020
; KeyV=2;
; SOURCE LINE # 197
MOV KeyV,#02H
; //send_string_com(inbuf2,1);
; //BEEP=0;
; //RELAY=0;
; TMSetV = TMSetV - 1;
; SOURCE LINE # 201
DEC TMSetV
; inbuf2[0]=0x00;
; SOURCE LINE # 202
MOV inbuf2,#00H
; }
; SOURCE LINE # 203
?C0020:
;
; if (inbuf2[0]==0x35){
; SOURCE LINE # 205
MOV A,inbuf2
CJNE A,#035H,?C0021
;
; //send_string_com(inbuf2,1);
; //BEEP=1;
; //RELAY=1;
; TMSetV = TMSetV + 1; //上调温度
; SOURCE LINE # 210
INC TMSetV
; inbuf2[0]=0x00;
; SOURCE LINE # 211
MOV inbuf2,#00H
; }
; SOURCE LINE # 212
?C0021:
;
; if (inbuf2[0]==0x74){
; SOURCE LINE # 214
MOV A,inbuf2
CJNE A,#074H,?C0022
; KeyV=2;
; SOURCE LINE # 215
MOV KeyV,#02H
; //send_string_com(inbuf2,1);
; //BEEP=1;
; //RELAY=1;
; }
; SOURCE LINE # 219
?C0022:
;
; if (inbuf2[0]==0x90){
; SOURCE LINE # 221
MOV A,inbuf2
CJNE A,#090H,?C0023
; KeyV=1;
; SOURCE LINE # 222
MOV KeyV,#01H
; //send_string_com(inbuf2,1);
; //BEEP=1;
; //RELAY=1;
; }
; SOURCE LINE # 226
?C0023:
;
;
; if (!Key_UP)
; SOURCE LINE # 229
JB P1_0,?C0024
; KeyV = 1;
; SOURCE LINE # 230
MOV KeyV,#01H
?C0024:
; if (!Key_DOWN)
; SOURCE LINE # 231
JB P1_1,?C0025
; KeyV = 2;
; SOURCE LINE # 232
MOV KeyV,#02H
?C0025:
; if (!Key_SET)
; SOURCE LINE # 233
JB P1_2,?C0026
; KeyV = 3;
; SOURCE LINE # 234
MOV KeyV,#03H
?C0026:
; //KeySETDowning = 0; //清除
; if (KeyV != 0) //有键按下
; SOURCE LINE # 236
MOV A,KeyV
JNZ $ + 4H
AJMP ?C0027
; {
; SOURCE LINE # 237
; Delay_10ms(); //延时防抖 按下10ms再测
; SOURCE LINE # 238
ACALL Delay_10ms
; if (!Key_UP)
; SOURCE LINE # 239
JB P1_0,?C0028
; TempKeyV = 1;
; SOURCE LINE # 240
MOV TempKeyV,#01H
?C0028:
; if (!Key_DOWN)
; SOURCE LINE # 241
JB P1_1,?C0029
; TempKeyV = 2;
; SOURCE LINE # 242
MOV TempKeyV,#02H
?C0029:
; if (!Key_SET)
; SOURCE LINE # 243
JB P1_2,?C0030
; TempKeyV = 3;
; SOURCE LINE # 244
MOV TempKeyV,#03H
?C0030:
; if (KeyV == TempKeyV) //两次值相等为确定接下了键
; SOURCE LINE # 245
MOV A,KeyV
XRL A,TempKeyV
JNZ ?C0027
; {
; SOURCE LINE # 246
; if (KeyV == 3) //按下SET键,如在SET状态就退出,否则进入
; SOURCE LINE # 247
MOV A,KeyV
XRL A,#03H
JNZ ?C0032
; {
; SOURCE LINE # 248
; //KeySETDowning = 1; //表明SET正在按下
;
;
; PowTF = 0; //电源标识开
; SOURCE LINE # 252
CLR PowTF
; if (!KeyTF)
; SOURCE LINE # 253
JB KeyTF,?C0033
; if (SetTF){
; SOURCE LINE # 254
JNB SetTF,?C0034
; send_char_com('N');
; SOURCE LINE # 255
MOV R7,#04EH
; send_char_com('N');
; SOURCE LINE # 256
; send_char_com('N');
; SOURCE LINE # 257
ACALL L?0100
; SetTF = 0; //标识位标识退出设定
; SOURCE LINE # 258
CLR SetTF
;
; InitDS1820(); //初始化
; SOURCE LINE # 260
ACALL InitDS1820
; ROMDS1820(); //跳过ROM
; SOURCE LINE # 261
ACALL ROMDS1820
; TMWDS1820(); //写温度上限指令
; SOURCE LINE # 262
ACALL TMWDS1820
; WriteDS1820(); //写温度上限到DS18B20ROM
; SOURCE LINE # 263
ACALL WriteDS1820
; WriteDS1820(); //写温度上限到DS18B20ROM
; SOURCE LINE # 264
ACALL WriteDS1820
; WriteDS1820(); //写温度上限到DS18B20ROM
; SOURCE LINE # 265
ACALL WriteDS1820
; InitDS1820(); //初始化
; SOURCE LINE # 266
ACALL InitDS1820
; ROMDS1820(); //跳过ROM
; SOURCE LINE # 267
ACALL ROMDS1820
; TMREDS1820(); //温度上限值COPY回E2PRAM
; SOURCE LINE # 268
ACALL TMREDS1820
; }
; SOURCE LINE # 269
SJMP ?C0033
?C0034:
; else {
; SOURCE LINE # 270
; send_char_com('O');
; SOURCE LINE # 271
; send_char_com('O');
; SOURCE LINE # 272
; send_char_com('O');
; SOURCE LINE # 273
LCALL L?0099
; SetTF = 1;}
; SOURCE LINE # 274
SETB SetTF
?C0033:
;
;
; if (!KeySETDown) //没有第一次按下SET时,KeySETDown标识置1
; SOURCE LINE # 277
JB KeySETDown,?C0036
; KeySETDown = 1;
; SOURCE LINE # 278
SETB KeySETDown
SJMP ?C0032
?C0036:
; else
; KSDNum = KSDNum + 1; //前一秒内有按过SET则开始计数
; SOURCE LINE # 280
INC KSDNum
; }
; SOURCE LINE # 281
?C0032:
; if (SetTF) //在SET状态下
; SOURCE LINE # 282
JNB SetTF,?C0038
; {
; SOURCE LINE # 283
;
; if ((KeyV == 1) && (!KeyTF))
; SOURCE LINE # 285
MOV A,KeyV
CJNE A,#01H,?C0039
JB KeyTF,?C0039
; TMSetV = TMSetV + 1; //上调温度
; SOURCE LINE # 286
INC TMSetV
?C0039:
; if ((KeyV == 2) && (!KeyTF))
; SOURCE LINE # 287
MOV A,KeyV
CJNE A,#02H,?C0040
JB KeyTF,?C0040
; TMSetV = TMSetV - 1; //下调温度
; SOURCE LINE # 288
DEC TMSetV
?C0040:
; if (TMSetV <= 20) //限制温度上下限
; SOURCE LINE # 289
SETB C
MOV A,TMSetV
XRL A,#080H
SUBB A,#094H
JNC ?C0041
; TMSetV = 20;
; SOURCE LINE # 290
MOV TMSetV,#014H
?C0041:
; if (TMSetV >= 75)
; SOURCE LINE # 291
CLR C
MOV A,TMSetV
XRL A,#080H
SUBB A,#0CBH
JC ?C0038
; TMSetV = 75;
; SOURCE LINE # 292
MOV TMSetV,#04BH
; }
; SOURCE LINE # 293
?C0038:
; if ((!KeyTF) && (IntNum3 == 0)) KeyTF = 1; //当键盘处于可用时,锁定
; SOURCE LINE # 294
JB KeyTF,?C0027
MOV A,IntNum3
JNZ ?C0027
SETB KeyTF
; }
; SOURCE LINE # 295
;
;
; }
; SOURCE LINE # 298
?C0027:
; KeyV = 0;
; SOURCE LINE # 299
MOV KeyV,#00H
; TempKeyV = 0; //清空变量准备下次键扫描
; SOURCE LINE # 300
MOV TempKeyV,#00H
;
; if (!PowTF)
; SOURCE LINE # 302
JB PowTF,?C0053
; {
; SOURCE LINE # 303
; InitDS1820(); //初始化
; SOURCE LINE # 304
ACALL InitDS1820
; ROMDS1820(); //跳过ROM
; SOURCE LINE # 305
ACALL ROMDS1820
; TMVDS1820(); //温度转换指令
; SOURCE LINE # 306
ACALL TMVDS1820
;
; Delay_510();
; SOURCE LINE # 308
ACALL Delay_510
; Delay_510(); //延时等待转换完成
; SOURCE LINE # 309
ACALL Delay_510
;
; InitDS1820(); //初始化
; SOURCE LINE # 311
ACALL InitDS1820
; ROMDS1820(); //跳过ROM
; SOURCE LINE # 312
ACALL ROMDS1820
; TMRDS1820(); //读出温度指令
; SOURCE LINE # 313
ACALL TMRDS1820
; ReadDS1820(); //读出温度值
; SOURCE LINE # 314
ACALL ReadDS1820
;
; V2ToV(); //转换显示值
; SOURCE LINE # 316
ACALL V2ToV
; if (TMV > TMSetV) //根据采集到的温度值控制继电器
; SOURCE LINE # 317
SETB C
MOV A,TMSetV
XRL A,#080H
MOV R0,A
MOV A,TMV
XRL A,#080H
SUBB A,R0
JC ?C0045
; {
; SOURCE LINE # 318
; RelayOutPort = 0;
; SOURCE LINE # 319
CLR P2_0
; flag=0;
; SOURCE LINE # 320
MOV flag,#00H
; }
; SOURCE LINE # 321
SJMP ?C0046
?C0045:
; else
; {
; SOURCE LINE # 323
; RelayOutPort = 1;
; SOURCE LINE # 324
SETB P2_0
; DELPort=1;
; SOURCE LINE # 325
SETB P2_1
; Second=1;
; SOURCE LINE # 326
MOV Second,#01H
; flag=1;
; SOURCE LINE # 327
MOV flag,#01H
;
;
; }
; SOURCE LINE # 330
?C0046:
;
; if (SetTF) IntNum2 = IntNum2 + 1; //用于闪烁计数
; SOURCE LINE # 332
JNB SetTF,?C0047
INC IntNum2
?C0047:
; if (IntNum2 > 50 ) IntNum2 = 0;
; SOURCE LINE # 333
MOV A,IntNum2
SETB C
SUBB A,#032H
JC ?C0048
MOV IntNum2,#00H
?C0048:
; if (KeyTF) IntNum3 = IntNum3 + 1; //用于防止按键连按
; SOURCE LINE # 334
JNB KeyTF,?C0049
INC IntNum3
?C0049:
; if (IntNum3 > 25)
; SOURCE LINE # 335
MOV A,IntNum3
SETB C
SUBB A,#019H
JC ?C0050
; {
; SOURCE LINE # 336
; IntNum3 = 0;
; SOURCE LINE # 337
MOV IntNum3,#00H
; KeyTF = 0;
; SOURCE LINE # 338
CLR KeyTF
; }
; SOURCE LINE # 339
?C0050:
;
; if ((SetTF) && (IntNum2 < 25)) goto InitEnd; //计数在后半段时显示
; SOURCE LINE # 341
JNB SetTF,?C0051
MOV A,IntNum2
CLR C
SUBB A,#019H
JC ?C0053
?C0051:
;
; LEDPort = LED_Two;
; SOURCE LINE # 343
MOV P0,LED_Two
; LEDTwoC = 0;
; SOURCE LINE # 344
CLR P3_6
; Delay_510();
; SOURCE LINE # 345
ACALL Delay_510
; LEDTwoC = 1; //显示十位数
; SOURCE LINE # 346
SETB P3_6
; LEDPort = LED_Three;
; SOURCE LINE # 347
MOV P0,LED_Three
; LEDThreeC = 0;
; SOURCE LINE # 348
CLR P3_7
; Delay_510();
; SOURCE LINE # 349
ACALL Delay_510
; LEDThreeC = 1; //显示个位数
; SOURCE LINE # 350
SETB P3_7
; }
; SOURCE LINE # 351
; InitEnd:;
; SOURCE LINE # 352
?KeyAndDis_Time0?InitEnd:
; }
; SOURCE LINE # 353
?C0053:
POP PSW
POP DPL
POP DPH
POP B
POP ACC
RETI
; END OF KeyAndDis_Time0
;
; void V2ToV(void) //数值转换
RSEG ?PR?V2ToV?TCMAIN
V2ToV:
USING 0
; SOURCE LINE # 355
; {
; SOURCE LINE # 356
; TLV = TLV >> 4;
; SOURCE LINE # 357
MOV A,TLV
SWAP A
ANL A,#0FH
MOV TLV,A
; THV = THV << 4; //读出的高低位数值移位
; SOURCE LINE # 358
MOV A,THV
SWAP A
ANL A,#0F0H
MOV THV,A
; TMV = TLV | THV; //合并高低位放入TM为实际温度值
; SOURCE LINE # 359
ORL A,TLV
MOV TMV,A
; Sign = 0;
; SOURCE LINE # 360
CLR A
MOV Sign,A
; if (SetTF || !Key_SET)
; SOURCE LINE # 361
JB SetTF,?C0055
JB P1_2,?C0054
?C0055:
; Sign = TMSetV >> 7; //取符号
; SOURCE LINE # 362
MOV A,TMSetV
MOV R0,#07H
?C0090:
MOV C,ACC.7
RRC A
DJNZ R0,?C0090
MOV Sign,A
SJMP ?C0056
?C0054:
; else
; Sign = TMV >> 7;
; SOURCE LINE # 364
MOV A,TMV
MOV R0,#07H
?C0091:
MOV C,ACC.7
RRC A
DJNZ R0,?C0091
MOV Sign,A
?C0056:
;
; if (Sign)
; SOURCE LINE # 366
MOV A,Sign
JZ ?C0057
; {
; SOURCE LINE # 367
; if (SetTF || !Key_SET)
; SOURCE LINE # 368
JB SetTF,?C0059
JB P1_2,?C0058
?C0059:
; {
; SOURCE LINE # 369
; LED_One = (~(TMSetV-1)) / 100; //SET状态下显示设定值
; SOURCE LINE # 370
MOV A,TMSetV
DEC A
CPL A
MOV R7,A
MOV B,#064H
ACALL ?C?SCDIV
MOV LED_One,A
; LED_Two = ((~(TMSetV-1)) - LED_One * 100)/10;
; SOURCE LINE # 371
MOV B,#064H
MUL AB
MOV R6,A
CLR C
MOV A,R7
SUBB A,R6
MOV R7,A
MOV B,#0AH
ACALL ?C?SCDIV
MOV LED_Two,A
; LED_Three = (~(TMSetV-1)) - LED_One * 100 - LED_Two * 10;
; SOURCE LINE # 372
MOV B,#0AH
MUL AB
MOV R6,A
CLR C
MOV A,R7
SUBB A,R6
MOV LED_Three,A
; inbuf1[0]=dis_8[LED_Two];
; SOURCE LINE # 373
MOV A,#LOW (dis_8)
ADD A,LED_Two
MOV R0,A
MOV A,@R0
MOV inbuf1,A
; inbuf1[1]=dis_8[LED_Three];
; SOURCE LINE # 374
MOV A,#LOW (dis_8)
ADD A,LED_Three
MOV R0,A
MOV A,@R0
MOV inbuf1+01H,A
; //inbuf1[2]=dis_8[ LED_Three];
; inbuf1[2]=0x0d;
; SOURCE LINE # 376
MOV inbuf1+02H,#0DH
; inbuf1[3]=0x0a;
; SOURCE LINE # 377
MOV inbuf1+03H,#0AH
; }
; SOURCE LINE # 378
SJMP ?C0061
?C0058:
; else
; {
; SOURCE LINE # 380
; LED_One = (~(TMV-1)) / 100; //转换百位值
; SOURCE LINE # 381
MOV A,TMV
DEC A
CPL A
MOV R7,A
MOV B,#064H
ACALL ?C?SCDIV
MOV LED_One,A
; LED_Two = ((~(TMV-1)) - LED_One * 100)/10;
; SOURCE LINE # 382
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 # 383
; inbuf1[0]=dis_8[LED_Two];
; SOURCE LINE # 384
; inbuf1[1]=dis_8[LED_Three];
; SOURCE LINE # 385
; inbuf1[2]=dis_8[0];
; SOURCE LINE # 386
; inbuf1[3]=0x0d;
; SOURCE LINE # 387
; inbuf1[4]=0x0a;
; SOURCE LINE # 388
; }
; SOURCE LINE # 389
; }
; SOURCE LINE # 390
SJMP ?C0094
?C0057:
; else
; {
; SOURCE LINE # 392
; if (SetTF || !Key_SET)
; SOURCE LINE # 393
JB SetTF,?C0063
JB P1_2,?C0062
?C0063:
; {
; SOURCE LINE # 394
; LED_One = (TMSetV) / 100; //SET状态下显示设定值
; SOURCE LINE # 395
MOV A,TMSetV
MOV B,#064H
ACALL ?C?SCDIV
MOV LED_One,A
; LED_Two = (TMSetV - LED_One * 100)/10;
; SOURCE LINE # 396
MOV B,#064H
MUL AB
MOV R7,A
CLR C
MOV A,TMSetV
SUBB A,R7
?C0093:
; LED_Three = TMSetV - LED_One * 100 - LED_Two * 10;
; SOURCE LINE # 397
; inbuf1[0]=dis_8[LED_Two];
; SOURCE LINE # 398
; inbuf1[1]=dis_8[LED_Three];
; SOURCE LINE # 399
; inbuf1[2]=dis_8[0];
; SOURCE LINE # 400
; inbuf1[3]=0x0d;
; SOURCE LINE # 401
; inbuf1[4]=0x0a;
; SOURCE LINE # 402
; }
; SOURCE LINE # 403
SJMP ?C0094
?C0062:
; else
; {
; SOURCE LINE # 405
; LED_One = (TMV) / 100; //转换百位值
; SOURCE LINE # 406
MOV A,TMV
MOV B,#064H
ACALL ?C?SCDIV
MOV LED_One,A
; LED_Two = (TMV - LED_One * 100)/10;
; SOURCE LINE # 407
MOV B,#064H
MUL AB
MOV R7,A
CLR C
MOV A,TMV
SUBB A,R7
?C0094:
MOV R7,A
MOV B,#0AH
ACALL ?C?SCDIV
MOV LED_Two,A
; LED_Three = TMV - LED_One * 100 - LED_Two * 10;
; SOURCE LINE # 408
MOV B,#0AH
MUL AB
MOV R6,A
CLR C
MOV A,R7
SUBB A,R6
MOV LED_Three,A
; inbuf1[0]=dis_8[LED_Two];
; SOURCE LINE # 409
MOV A,#LOW (dis_8)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -