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