📄 trime+key.src
字号:
SETB KeySETDowning
; PowTF=0; //电源标识开
; SOURCE LINE # 235
CLR PowTF
; if(!KeyTF) //KeyTF为1不允许执行下程序
; SOURCE LINE # 236
JB KeyTF,?C0049
; if(SetTF)
; SOURCE LINE # 237
JNB SetTF,?C0050
; {
; SOURCE LINE # 238
; SetTF=0; //是否是在温度设置状态标识位标识退出设定
; SOURCE LINE # 239
CLR SetTF
; InitDS1820();
; SOURCE LINE # 240
LCALL InitDS1820
; Write_Data(0xcc); //跳过ROM
; SOURCE LINE # 241
MOV R7,#0CCH
LCALL _Write_Data
; Write_Data(0x4e); //写温度上限指令
; SOURCE LINE # 242
MOV R7,#04EH
LCALL _Write_Data
; WriteDS1820(); //写温度上限到DS1820ROM
; SOURCE LINE # 243
LCALL WriteDS1820
; InitDS1820();
; SOURCE LINE # 244
LCALL InitDS1820
; Write_Data(0xcc); //跳过ROM匹配
; SOURCE LINE # 245
MOV R7,#0CCH
LCALL _Write_Data
; Write_Data(0x48); //温度上限值COPY回E2PRAM
; SOURCE LINE # 246
MOV R7,#048H
LCALL _Write_Data
; }
; SOURCE LINE # 247
SJMP ?C0049
?C0050:
; else SetTF=1; //为下一次没按SET时,按其他键作准备
; SOURCE LINE # 248
SETB SetTF
?C0049:
; if(!KeySETDown){KeySETDown=1;OPen=1;} //是否已按过SET键标识
; SOURCE LINE # 249
JB KeySETDown,?C0052
SETB KeySETDown
SETB P2_2
SJMP ?C0048
?C0052:
; else KSDNum+=1; //前一秒内有按SET则开始计数
; SOURCE LINE # 250
INC KSDNum
; }
; SOURCE LINE # 251
?C0048:
; /*---Key_UP和Key_DOWN的检测---*/
; if(SetTF) //在SET状态下
; SOURCE LINE # 253
JNB SetTF,?C0054
; {
; SOURCE LINE # 254
; if((KeyV==1)&&(!KeyTF))TMSetV+=1,OPen=0; //上调温度
; SOURCE LINE # 255
MOV A,KeyV
CJNE A,#01H,?C0055
JB KeyTF,?C0055
INC TMSetV
CLR P2_2
?C0055:
; if((KeyV==2)&&(!KeyTF))TMSetV-=1,OPen=0; //下调温度
; SOURCE LINE # 256
MOV A,KeyV
CJNE A,#02H,?C0056
JB KeyTF,?C0056
DEC TMSetV
CLR P2_2
?C0056:
; if(TMSetV<=-55)TMSetV=-55;
; SOURCE LINE # 257
SETB C
MOV A,TMSetV
XRL A,#080H
SUBB A,#049H
JNC ?C0057
MOV TMSetV,#0C9H
?C0057:
; if(TMSetV>=125)TMSetV=125;
; SOURCE LINE # 258
CLR C
MOV A,TMSetV
XRL A,#080H
SUBB A,#0FDH
JC ?C0054
MOV TMSetV,#07DH
; }
; SOURCE LINE # 259
?C0054:
; if((!KeyTF)&&(IntNum3==0))KeyTF=1; //判断键盘是否处于可用时
; SOURCE LINE # 260
JB KeyTF,?C0047
MOV A,IntNum3
JNZ ?C0047
SETB KeyTF
; }
; SOURCE LINE # 261
?C0047:
; /*---按键长按的处理---*/
; if(KeySETDown)IntNum+=1; //在2秒内按下了SET则计中断发生次数用于长按SET时计时用
; SOURCE LINE # 263
JNB KeySETDown,?C0060
INC IntNum
?C0060:
; if(IntNum>60)
; SOURCE LINE # 264
MOV A,IntNum
SETB C
SUBB A,#03CH
JC ?C0043
; {
; SOURCE LINE # 265
; IntNum=0;
; SOURCE LINE # 266
MOV IntNum,#00H
; KeySETDown=0;
; SOURCE LINE # 267
CLR KeySETDown
; /*--按长SET的处理--*/
; if(KSDNum>=60) //如一直长按了SET 3秒左右
; SOURCE LINE # 269
MOV A,KSDNum
SUBB A,#03CH
JC ?C0062
; {
; SOURCE LINE # 270
; RelayOutPort=1; //关闭控制对象
; SOURCE LINE # 271
SETB P2_1
; PowTF=1; //电源标识关
; SOURCE LINE # 272
SETB PowTF
; LED_Display(0,21,2,"--__OFF__-2007_6_23__--");
; SOURCE LINE # 273
CLR ?LED_Display?BIT
MOV ?LED_Display?BYTE,#015H
MOV ?LED_Display?BYTE+01H,#02H
MOV ?LED_Display?BYTE+02H,#0FFH
MOV ?LED_Display?BYTE+03H,#HIGH (?SC_0)
MOV ?LED_Display?BYTE+04H,#LOW (?SC_0)
LCALL LED_Display
; LEDPort=0xbf; //显示"--"
; SOURCE LINE # 274
MOV P0,#0BFH
; LEDOneC=0;
; SOURCE LINE # 275
CLR P2_7
; LEDTwoC=0;
; SOURCE LINE # 276
CLR P2_6
; LEDThreeC=0;
; SOURCE LINE # 277
CLR P2_5
; LED_C=0;
; SOURCE LINE # 278
CLR P2_4
; Delay_100ms(40); //延时4S
; SOURCE LINE # 279
MOV R7,#028H
LCALL _Delay_100ms
; LEDOneC=1; //关显示
; SOURCE LINE # 280
SETB P2_7
; LEDTwoC=1;
; SOURCE LINE # 281
SETB P2_6
; LEDThreeC=1;
; SOURCE LINE # 282
SETB P2_5
; IntNum=0;
; SOURCE LINE # 283
MOV IntNum,#00H
; IntNum2=0;
; SOURCE LINE # 284
MOV IntNum2,#00H
; IntNum3=0;
; SOURCE LINE # 285
MOV IntNum3,#00H
; IntNum4=0;
; SOURCE LINE # 286
MOV IntNum4,#00H
MOV IntNum4+01H,#00H
; Beep=1;
; SOURCE LINE # 287
SETB P2_0
; OPen=1;
; SOURCE LINE # 288
SETB P2_2
; LEDTF=0;
; SOURCE LINE # 289
CLR LEDTF
; }
; SOURCE LINE # 290
?C0062:
; KSDNum=0;
; SOURCE LINE # 291
MOV KSDNum,#00H
; }
; SOURCE LINE # 292
; }
; SOURCE LINE # 293
?C0043:
; KeyV=0; //清空变量准备下次键扫描
; SOURCE LINE # 294
MOV KeyV,#00H
; TempKeyV=0;
; SOURCE LINE # 295
MOV TempKeyV,#00H
; OPen=1;
; SOURCE LINE # 296
SETB P2_2
; /*----开电源程序----*/
; if(!PowTF)
; SOURCE LINE # 298
JNB PowTF,$ + 6H
LJMP ?KeyAndDis_Time0?InitEnd
; {
; SOURCE LINE # 299
; if(LEDTF==0)
; SOURCE LINE # 300
JB LEDTF,?C0064
; {
; SOURCE LINE # 301
; LED_Display(0,26,2,"--__OPEN__--_3408_YOUJJYY_--");
; SOURCE LINE # 302
CLR ?LED_Display?BIT
MOV ?LED_Display?BYTE,#01AH
MOV ?LED_Display?BYTE+01H,#02H
MOV ?LED_Display?BYTE+02H,#0FFH
MOV ?LED_Display?BYTE+03H,#HIGH (?SC_24)
MOV ?LED_Display?BYTE+04H,#LOW (?SC_24)
LCALL LED_Display
; if(DS1820ON==0)LED_Display(0,14,2,"--__NO-SENSOR__--");
; SOURCE LINE # 303
JB DS1820ON,?C0065
CLR ?LED_Display?BIT
MOV ?LED_Display?BYTE,#0EH
MOV ?LED_Display?BYTE+01H,#02H
MOV ?LED_Display?BYTE+02H,#0FFH
MOV ?LED_Display?BYTE+03H,#HIGH (?SC_53)
MOV ?LED_Display?BYTE+04H,#LOW (?SC_53)
LCALL LED_Display
?C0065:
; LEDTF=1;
; SOURCE LINE # 304
SETB LEDTF
; }
; SOURCE LINE # 305
?C0064:
; InitDS1820();
; SOURCE LINE # 306
LCALL InitDS1820
; if(DS1820ON==0)IntNum5+=1;
; SOURCE LINE # 307
JB DS1820ON,?C0066
INC IntNum5+01H
MOV A,IntNum5+01H
JNZ ?C0082
INC IntNum5
?C0082:
?C0066:
; if((DS1820ON==0)&&(IntNum5>400))
; SOURCE LINE # 308
JB DS1820ON,?C0067
SETB C
MOV A,IntNum5+01H
SUBB A,#090H
MOV A,IntNum5
SUBB A,#01H
JC ?C0067
; {LED_Display(0,14,2,"--__NO-SENSOR__--");IntNum5=0;IntNum4+=500;}
; SOURCE LINE # 309
CLR ?LED_Display?BIT
MOV ?LED_Display?BYTE,#0EH
MOV ?LED_Display?BYTE+01H,#02H
MOV ?LED_Display?BYTE+02H,#0FFH
MOV ?LED_Display?BYTE+03H,#HIGH (?SC_53)
MOV ?LED_Display?BYTE+04H,#LOW (?SC_53)
LCALL LED_Display
MOV IntNum5,#00H
MOV IntNum5+01H,#00H
MOV A,#0F4H
ADD A,IntNum4+01H
MOV IntNum4+01H,A
MOV A,#01H
ADDC A,IntNum4
MOV IntNum4,A
?C0067:
; Write_Data(0xcc);
; SOURCE LINE # 310
MOV R7,#0CCH
LCALL _Write_Data
; Write_Data(0x44);
; SOURCE LINE # 311
MOV R7,#044H
LCALL _Write_Data
; Delay_6n5_8us(152); //延时1000uS 等转换完成
; SOURCE LINE # 312
MOV R7,#098H
LCALL _Delay_6n5_8us
; InitDS1820();
; SOURCE LINE # 313
LCALL InitDS1820
; Write_Data(0xcc);
; SOURCE LINE # 314
MOV R7,#0CCH
LCALL _Write_Data
; Write_Data(0xbe); //读出温度指令
; SOURCE LINE # 315
MOV R7,#0BEH
LCALL _Write_Data
; ReadDS1820(); //读出温度值
; SOURCE LINE # 316
LCALL ReadDS1820
; V2ToV(); //转换显示值
; SOURCE LINE # 317
LCALL V2ToV
; if(TMV>TMSetV)RelayOutPort=0,Beep=0,IntNum4+=1; //根据采集的温度值控制对象
; SOURCE LINE # 318
SETB C
MOV A,TMSetV
XRL A,#080H
MOV R0,A
MOV A,TMV
XRL A,#080H
SUBB A,R0
JC ?C0068
CLR P2_1
CLR P2_0
INC IntNum4+01H
MOV A,IntNum4+01H
JNZ ?C0069
INC IntNum4
?C0083:
SJMP ?C0069
?C0068:
; else if(DS1820ON==1) RelayOutPort=1,Beep=1,IntNum4=0;
; SOURCE LINE # 319
JNB DS1820ON,?C0069
SETB P2_1
SETB P2_0
MOV IntNum4,#00H
MOV IntNum4+01H,#00H
?C0069:
; if(IntNum4>=2000)KSDNum=60,IntNum=60,KeySETDown=1,KeyV=4;
; SOURCE LINE # 320
CLR C
MOV A,IntNum4+01H
SUBB A,#0D0H
MOV A,IntNum4
SUBB A,#07H
JC ?C0071
MOV KSDNum,#03CH
MOV IntNum,#03CH
SETB KeySETDown
MOV KeyV,#04H
?C0071:
; if(SetTF)IntNum2+=1,OPen=1; //用于闪烁计数
; SOURCE LINE # 321
JNB SetTF,?C0072
INC IntNum2
SETB P2_2
?C0072:
; if(IntNum2>50)IntNum2=0,OPen=0;
; SOURCE LINE # 322
MOV A,IntNum2
SETB C
SUBB A,#032H
JC ?C0073
MOV IntNum2,#00H
CLR P2_2
?C0073:
; /*---连按Key_UP或Key_DOWN键时的采集次数--*/
; if(KeyTF)IntNum3+=1; //用于防止按键连按
; SOURCE LINE # 324
JNB KeyTF,?C0074
INC IntNum3
?C0074:
; if(IntNum3>15) //检测按键是否超过
; SOURCE LINE # 325
MOV A,IntNum3
SETB C
SUBB A,#0FH
JC ?C0075
; {
; SOURCE LINE # 326
; IntNum3=0;
; SOURCE LINE # 327
MOV IntNum3,#00H
; KeyTF=0;
; SOURCE LINE # 328
CLR KeyTF
; }
; SOURCE LINE # 329
?C0075:
; if((SetTF)&&(IntNum2<20))goto InitEnd; //使LED闪烁
; SOURCE LINE # 330
JNB SetTF,?C0076
MOV A,IntNum2
CLR C
SUBB A,#014H
JC ?KeyAndDis_Time0?InitEnd
?C0076:
; LEDPort=LED_One;
; SOURCE LINE # 331
MOV P0,LED_One
; LEDOneC=0;
; SOURCE LINE # 332
CLR P2_7
; Delay_1ms(1);
; SOURCE LINE # 333
MOV R7,#01H
LCALL _Delay_1ms
; LEDOneC=1; //显示百位数
; SOURCE LINE # 334
SETB P2_7
; LEDPort=LED_Two;
; SOURCE LINE # 335
MOV P0,LED_Two
; LEDTwoC=0;
; SOURCE LINE # 336
CLR P2_6
; Delay_1ms(1);
; SOURCE LINE # 337
MOV R7,#01H
LCALL _Delay_1ms
; LEDTwoC=1; //显示十位数
; SOURCE LINE # 338
SETB P2_6
; LEDPort=LED_Three;
; SOURCE LINE # 339
MOV P0,LED_Three
; LEDThreeC=0;
; SOURCE LINE # 340
CLR P2_5
; Delay_1ms(1);
; SOURCE LINE # 341
MOV R7,#01H
LCALL _Delay_1ms
; LEDThreeC=1; //显示个位数
; SOURCE LINE # 342
SETB P2_5
; }
; SOURCE LINE # 343
; InitEnd:
; SOURCE LINE # 344
?KeyAndDis_Time0?InitEnd:
; if(!PowTF){LEDPort=0x34;
; SOURCE LINE # 345
JB PowTF,?C0079
MOV P0,#034H
; LED_C=0;
; SOURCE LINE # 346
CLR P2_4
; Delay_1ms(1);
; SOURCE LINE # 347
MOV R7,#01H
LCALL _Delay_1ms
; LED_C=1;}
; SOURCE LINE # 348
SETB P2_4
; }
; SOURCE LINE # 349
?C0079:
POP PSW
POP DPL
POP DPH
POP B
POP ACC
RETI
; END OF KeyAndDis_Time0
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -