📄 tcmain.src
字号:
; if ((!KeyTF) && (IntNum3 == 0)) KeyTF = 1; //当键盘处于可用时,锁定
; SOURCE LINE # 161
JB KeyTF,?C0011
MOV A,IntNum3
JNZ ?C0011
SETB KeyTF
; }
; SOURCE LINE # 162
?C0011:
;
; if (KeySETDown) //在2秒内按下了SET则计中断发生次数用于长按SET时计时用
; SOURCE LINE # 164
JNB KeySETDown,?C0024
; IntNum = IntNum + 1;
; SOURCE LINE # 165
INC IntNum
?C0024:
; if (IntNum > 55) //中断发生了55次时(大约1.2秒)75为1.5秒左右
; SOURCE LINE # 166
MOV A,IntNum
SETB C
SUBB A,#037H
JC ?C0007
; {
; SOURCE LINE # 167
; IntNum = 0;
; SOURCE LINE # 168
MOV IntNum,#00H
; KeySETDown = 0;
; SOURCE LINE # 169
CLR KeySETDown
; if (KSDNum == 55) //如一直长按了SET1.2秒左右
; SOURCE LINE # 170
MOV A,KSDNum
XRL A,#037H
JNZ ?C0026
; {
; SOURCE LINE # 171
; RelayOutPort = 1; //关闭继电器输出
; SOURCE LINE # 172
SETB P3_5
; PowTF = 1; //电源标识关
; SOURCE LINE # 173
SETB PowTF
; LEDOneC = 0;
; SOURCE LINE # 174
CLR P3_2
; LEDTwoC = 0;
; SOURCE LINE # 175
CLR P3_3
; LEDThreeC = 0;
; SOURCE LINE # 176
CLR P3_4
; LEDPort = 0xBF; //显示"--"
; SOURCE LINE # 177
MOV P1,#0BFH
; Delay_4s(); //延时
; SOURCE LINE # 178
ACALL Delay_4s
; LEDOneC = 1;
; SOURCE LINE # 179
SETB P3_2
; LEDTwoC = 1; //关显示
; SOURCE LINE # 180
SETB P3_3
; LEDThreeC = 1;
; SOURCE LINE # 181
SETB P3_4
; Delay_4s();
; SOURCE LINE # 182
ACALL Delay_4s
; IntNum = 0;
; SOURCE LINE # 183
MOV IntNum,#00H
; IntNum2 = 0;
; SOURCE LINE # 184
MOV IntNum2,#00H
; IntNum3 = 0;
; SOURCE LINE # 185
MOV IntNum3,#00H
; }
; SOURCE LINE # 186
?C0026:
; KSDNum = 0;
; SOURCE LINE # 187
MOV KSDNum,#00H
; }
; SOURCE LINE # 188
; }
; SOURCE LINE # 189
?C0007:
; KeyV = 0;
; SOURCE LINE # 190
MOV KeyV,#00H
; TempKeyV = 0; //清空变量准备下次键扫描
; SOURCE LINE # 191
MOV TempKeyV,#00H
;
; if (!PowTF)
; SOURCE LINE # 193
JB PowTF,?C0036
; {
; SOURCE LINE # 194
; InitDS1820(); //初始化
; SOURCE LINE # 195
ACALL InitDS1820
; ROMDS1820(); //跳过ROM
; SOURCE LINE # 196
ACALL ROMDS1820
; TMVDS1820(); //温度转换指令
; SOURCE LINE # 197
ACALL TMVDS1820
;
; Delay_510();
; SOURCE LINE # 199
ACALL Delay_510
; Delay_510(); //延时等待转换完成
; SOURCE LINE # 200
ACALL Delay_510
;
; InitDS1820(); //初始化
; SOURCE LINE # 202
ACALL InitDS1820
; ROMDS1820(); //跳过ROM
; SOURCE LINE # 203
ACALL ROMDS1820
; TMRDS1820(); //读出温度指令
; SOURCE LINE # 204
ACALL TMRDS1820
; ReadDS1820(); //读出温度值
; SOURCE LINE # 205
ACALL ReadDS1820
;
; V2ToV(); //转换显示值
; SOURCE LINE # 207
ACALL V2ToV
; if (TMV > TMSetV) //根据采集到的温度值控制继电器
; SOURCE LINE # 208
SETB C
MOV A,TMSetV
XRL A,#080H
MOV R0,A
MOV A,TMV
XRL A,#080H
SUBB A,R0
JC ?C0028
; {
; SOURCE LINE # 209
; RelayOutPort = 0;
; SOURCE LINE # 210
CLR P3_5
; }
; SOURCE LINE # 211
SJMP ?C0029
?C0028:
; else
; {
; SOURCE LINE # 213
; RelayOutPort = 1;
; SOURCE LINE # 214
SETB P3_5
; }
; SOURCE LINE # 215
?C0029:
;
; if (SetTF) IntNum2 = IntNum2 + 1; //用于闪烁计数
; SOURCE LINE # 217
JNB SetTF,?C0030
INC IntNum2
?C0030:
; if (IntNum2 > 50 ) IntNum2 = 0;
; SOURCE LINE # 218
MOV A,IntNum2
SETB C
SUBB A,#032H
JC ?C0031
MOV IntNum2,#00H
?C0031:
; if (KeyTF) IntNum3 = IntNum3 + 1; //用于防止按键连按
; SOURCE LINE # 219
JNB KeyTF,?C0032
INC IntNum3
?C0032:
; if (IntNum3 > 25)
; SOURCE LINE # 220
MOV A,IntNum3
SETB C
SUBB A,#019H
JC ?C0033
; {
; SOURCE LINE # 221
; IntNum3 = 0;
; SOURCE LINE # 222
MOV IntNum3,#00H
; KeyTF = 0;
; SOURCE LINE # 223
CLR KeyTF
; }
; SOURCE LINE # 224
?C0033:
;
; if ((SetTF) && (IntNum2 < 25)) goto InitEnd; //计数在后半段时显示
; SOURCE LINE # 226
JNB SetTF,?C0034
MOV A,IntNum2
CLR C
SUBB A,#019H
JC ?C0036
?C0034:
; LEDPort = LED_One;
; SOURCE LINE # 227
MOV P1,LED_One
; LEDOneC = 0;
; SOURCE LINE # 228
CLR P3_2
; Delay_510();
; SOURCE LINE # 229
ACALL Delay_510
; LEDOneC = 1; //显示百位数
; SOURCE LINE # 230
SETB P3_2
; LEDPort = LED_Two;
; SOURCE LINE # 231
MOV P1,LED_Two
; LEDTwoC = 0;
; SOURCE LINE # 232
CLR P3_3
; Delay_510();
; SOURCE LINE # 233
ACALL Delay_510
; LEDTwoC = 1; //显示十位数
; SOURCE LINE # 234
SETB P3_3
; LEDPort = LED_Three;
; SOURCE LINE # 235
MOV P1,LED_Three
; LEDThreeC = 0;
; SOURCE LINE # 236
CLR P3_4
; Delay_510();
; SOURCE LINE # 237
ACALL Delay_510
; LEDThreeC = 1; //显示个位数
; SOURCE LINE # 238
SETB P3_4
; }
; SOURCE LINE # 239
; InitEnd:;
; SOURCE LINE # 240
?KeyAndDis_Time0?InitEnd:
; }
; SOURCE LINE # 241
?C0036:
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 # 243
; {
; SOURCE LINE # 244
; TLV = TLV >> 4;
; SOURCE LINE # 245
MOV A,TLV
SWAP A
ANL A,#0FH
MOV TLV,A
; THV = THV << 4; //读出的高低位数值移位
; SOURCE LINE # 246
MOV A,THV
SWAP A
ANL A,#0F0H
MOV THV,A
; TMV = TLV | THV; //合并高低位放入TM为实际温度值
; SOURCE LINE # 247
ORL A,TLV
MOV TMV,A
; Sign = 0;
; SOURCE LINE # 248
CLR A
MOV Sign,A
; if (SetTF || !Key_SET)
; SOURCE LINE # 249
JB SetTF,?C0038
JB P1_7,?C0037
?C0038:
; Sign = TMSetV >> 7; //取符号
; SOURCE LINE # 250
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 # 252
MOV A,TMV
MOV R0,#07H
?C0073:
MOV C,ACC.7
RRC A
DJNZ R0,?C0073
MOV Sign,A
?C0039:
;
; if (Sign)
; SOURCE LINE # 254
MOV A,Sign
JZ ?C0040
; {
; SOURCE LINE # 255
; if (SetTF || !Key_SET)
; SOURCE LINE # 256
JB SetTF,?C0042
JB P1_7,?C0041
?C0042:
; {
; SOURCE LINE # 257
; LED_One = (~(TMSetV-1)) / 100; //SET状态下显示设定值
; SOURCE LINE # 258
MOV A,TMSetV
; LED_Two = ((~(TMSetV-1)) - LED_One * 100)/10;
; SOURCE LINE # 259
; LED_Three = (~(TMSetV-1)) - LED_One * 100 - LED_Two * 10;
; SOURCE LINE # 260
; }
; SOURCE LINE # 261
SJMP ?C0074
?C0041:
; else
; {
; SOURCE LINE # 263
; LED_One = (~(TMV-1)) / 100; //转换百位值
; SOURCE LINE # 264
MOV A,TMV
?C0074:
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 # 265
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 # 266
; }
; SOURCE LINE # 267
; }
; SOURCE LINE # 268
SJMP ?C0076
?C0040:
; else
; {
; SOURCE LINE # 270
; if (SetTF || !Key_SET)
; SOURCE LINE # 271
JB SetTF,?C0046
JB P1_7,?C0045
?C0046:
; {
; SOURCE LINE # 272
; LED_One = (TMSetV) / 100; //SET状态下显示设定值
; SOURCE LINE # 273
MOV A,TMSetV
MOV B,#064H
ACALL ?C?SCDIV
MOV LED_One,A
; LED_Two = (TMSetV - LED_One * 100)/10;
; SOURCE LINE # 274
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 # 275
; }
; SOURCE LINE # 276
SJMP ?C0076
?C0045:
; else
; {
; SOURCE LINE # 278
; LED_One = (TMV) / 100; //转换百位值
; SOURCE LINE # 279
MOV A,TMV
MOV B,#064H
ACALL ?C?SCDIV
MOV LED_One,A
; LED_Two = (TMV - LED_One * 100)/10;
; SOURCE LINE # 280
MOV B,#064H
MUL AB
MOV R7,A
CLR C
MOV A,TMV
SUBB A,R7
?C0076:
MOV R7,A
MOV B,#0AH
ACALL ?C?SCDIV
MOV LED_Two,A
; LED_Three = TMV - LED_One * 100 - LED_Two * 10;
; SOURCE LINE # 281
MOV B,#0AH
MUL AB
MOV R6,A
CLR C
MOV A,R7
SUBB A,R6
MOV LED_Three,A
; }
; SOURCE LINE # 282
; }
; SOURCE LINE # 283
?C0044:
;
; //转LED字段
; if (LED_One) //超过百时十位的处理
; SOURCE LINE # 286
MOV A,LED_One
JZ ?C0048
; LED_Two = LEDDis[LED_Two];
; SOURCE LINE # 287
SJMP ?C0077
?C0048:
; else
; {
; SOURCE LINE # 289
; if (LED_Two == 0)
; SOURCE LINE # 290
MOV A,LED_Two
JNZ ?C0050
; LED_Two = LEDDis[10];
; SOURCE LINE # 291
MOV DPTR,#LEDDis+0AH
SJMP ?C0078
?C0050:
; else
; LED_Two = LEDDis[LED_Two];
; SOURCE LINE # 293
?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 # 294
?C0049:
; if (Sign)
; SOURCE LINE # 295
MOV A,Sign
JZ ?C0052
; LED_One = LEDDis[11];
; SOURCE LINE # 296
MOV DPTR,#LEDDis+0BH
SJMP ?C0079
?C0052:
; else
; {
; SOURCE LINE # 298
; if (LED_One == 0)
; SOURCE LINE # 299
MOV A,LED_One
JNZ ?C0054
; LED_One = LEDDis[10];
; SOURCE LINE # 300
MOV DPTR,#LEDDis+0AH
SJMP ?C0080
?C0054:
; else
; LED_One = LEDDis[LED_One];
; SOURCE LINE # 302
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 # 303
?C0053:
; LED_Three = LEDDis[LED_Three];
; SOURCE LINE # 304
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
CLR A
MOVC A,@A+DPTR
MOV LED_Three,A
; }
; SOURCE LINE # 305
RET
; END OF V2ToV
;
; void InitDS1820(void) //初始化DS1820
RSEG ?PR?InitDS1820?TCMAIN
InitDS1820:
USING 0
; SOURCE LINE # 307
; {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -