📄 display_dhtxx.lis
字号:
01BA 1040 sbci R17,0
01BC 2220 tst R2
01BE C1F7 brne L51
01C0 3320 tst R3
01C2 B1F7 brne L51
01C4 X7:
01C4 .dbline -2
01C4 L50:
01C4 .dbline 0 ; func end
01C4 0895 ret
01C6 .dbsym r Dcount 16 i
01C6 .dbend
01C6 .dbfunc e Delay_10us _Delay_10us fV
01C6 ; i -> R16
.even
01C6 _Delay_10us::
01C6 .dbline -1
01C6 .dbline 205
01C6 ; {
01C6 ; NOP();
01C6 ; NOP();
01C6 ; NOP();
01C6 ; }
01C6 ; }
01C6 ;
01C6 ; void Delay_10us(void)
01C6 ; {
01C6 .dbline 207
01C6 ; U8 i; //2M时延时为 10us
01C6 ; i--;
01C6 0A95 dec R16
01C8 .dbline 208
01C8 ; i--;
01C8 0A95 dec R16
01CA .dbline 209
01CA ; i--;
01CA 0A95 dec R16
01CC .dbline 210
01CC ; i--;
01CC 0A95 dec R16
01CE .dbline 211
01CE ; i--;
01CE 0A95 dec R16
01D0 .dbline 212
01D0 ; i--;
01D0 0A95 dec R16
01D2 .dbline 213
01D2 ; i--;
01D2 0A95 dec R16
01D4 .dbline 214
01D4 ; i--;
01D4 0A95 dec R16
01D6 .dbline 215
01D6 ; i--;
01D6 0A95 dec R16
01D8 .dbline 216
01D8 ; i--;
01D8 0A95 dec R16
01DA .dbline 217
01DA ; i--;
01DA 0A95 dec R16
01DC .dbline 218
01DC ; i--;
01DC 0A95 dec R16
01DE .dbline 219
01DE ; i--;
01DE 0A95 dec R16
01E0 .dbline -2
01E0 L54:
01E0 .dbline 0 ; func end
01E0 0895 ret
01E2 .dbsym r i 16 c
01E2 .dbend
01E2 .dbfunc e COM _COM fV
01E2 ; i -> R20
.even
01E2 _COM::
01E2 00D0 rcall push_gset1
01E4 .dbline -1
01E4 .dbline 224
01E4 ;
01E4 ; }
01E4 ;
01E4 ; void COM(void)
01E4 ; {
01E4 .dbline 227
01E4 ;
01E4 ; U8 i;
01E4 ; for(i=0;i<8;i++)
01E4 4427 clr R20
01E6 3EC0 rjmp L59
01E8 L56:
01E8 .dbline 228
01E8 ; {
01E8 .dbline 230
01E8 ;
01E8 ; U8FLAG=2;
01E8 82E0 ldi R24,2
01EA 80931200 sts _U8FLAG,R24
01EE L60:
01EE .dbline 233
01EE L61:
01EE .dbline 233
01EE ;
01EE ; //while((!P2_0)&&U8FLAG++);
01EE ; while((!(COM_R))&&U8FLAG++);
01EE 9D99 sbic 0x13,5
01F0 09C0 rjmp L63
01F2 20901200 lds R2,_U8FLAG
01F6 3324 clr R3
01F8 822D mov R24,R2
01FA 8F5F subi R24,255 ; addi 1
01FC 80931200 sts _U8FLAG,R24
0200 2220 tst R2
0202 A9F7 brne L60
0204 L63:
0204 .dbline 234
0204 ; if(U8FLAG==1)break;
0204 80911200 lds R24,_U8FLAG
0208 8130 cpi R24,1
020A 09F4 brne L64
020C .dbline 234
020C 2EC0 rjmp L58
020E L64:
020E .dbline 235
020E ; Delay_10us();
020E DBDF rcall _Delay_10us
0210 .dbline 236
0210 ; Delay_10us();
0210 DADF rcall _Delay_10us
0212 .dbline 237
0212 ; Delay_10us();
0212 D9DF rcall _Delay_10us
0214 .dbline 238
0214 ; U8temp=0;
0214 2224 clr R2
0216 20920F00 sts _U8temp,R2
021A .dbline 240
021A ; //if(P2_0)U8temp=1;
021A ; if(COM_R)U8temp=1;
021A 9D9B sbis 0x13,5
021C 03C0 rjmp L66
021E .dbline 240
021E 81E0 ldi R24,1
0220 80930F00 sts _U8temp,R24
0224 L66:
0224 .dbline 241
0224 ; U8FLAG=2;
0224 82E0 ldi R24,2
0226 80931200 sts _U8FLAG,R24
022A L68:
022A .dbline 243
022A L69:
022A .dbline 243
022A ; //while((P2_0)&&U8FLAG++);
022A ; while((COM_R)&&U8FLAG++);
022A 9D9B sbis 0x13,5
022C 09C0 rjmp L71
022E 20901200 lds R2,_U8FLAG
0232 3324 clr R3
0234 822D mov R24,R2
0236 8F5F subi R24,255 ; addi 1
0238 80931200 sts _U8FLAG,R24
023C 2220 tst R2
023E A9F7 brne L68
0240 L71:
0240 .dbline 245
0240 ; //超时则跳出for循环
0240 ; if(U8FLAG==1)break;
0240 80911200 lds R24,_U8FLAG
0244 8130 cpi R24,1
0246 09F4 brne L72
0248 .dbline 245
0248 10C0 rjmp L58
024A L72:
024A .dbline 250
024A 20900400 lds R2,_U8comdata
024E 220C lsl R2
0250 20920400 sts _U8comdata,R2
0254 .dbline 251
0254 20900F00 lds R2,_U8temp
0258 30900400 lds R3,_U8comdata
025C 3228 or R3,R2
025E 30920400 sts _U8comdata,R3
0262 .dbline 252
0262 L57:
0262 .dbline 227
0262 4395 inc R20
0264 L59:
0264 .dbline 227
0264 4830 cpi R20,8
0266 08F4 brsh X8
0268 BFCF rjmp L56
026A X8:
026A L58:
026A .dbline -2
026A L55:
026A 00D0 rcall pop_gset1
026C .dbline 0 ; func end
026C 0895 ret
026E .dbsym r i 20 c
026E .dbend
026E .dbfunc e RH _RH fV
.even
026E _RH::
026E .dbline -1
026E .dbline 270
026E ; //判断数据位是0还是1
026E ;
026E ; // 如果高电平高过预定0高电平值则数据位为 1
026E ;
026E ; U8comdata<<=1;
026E ; U8comdata|=U8temp; //0
026E ; }//rof
026E ;
026E ; }
026E ;
026E ; //--------------------------------
026E ; //-----湿度读取子程序 ------------
026E ; //--------------------------------
026E ; //----以下变量均为全局变量--------
026E ; //----温度高8位== U8T_data_H------
026E ; //----温度低8位== U8T_data_L------
026E ; //----湿度高8位== U8RH_data_H-----
026E ; //----湿度低8位== U8RH_data_L-----
026E ; //----校验 8位 == U8checkdata-----
026E ; //----调用相关子程序如下----------
026E ; //---- Delay();, Delay_10us();,COM();
026E ; //--------------------------------
026E ;
026E ; void RH(void)
026E ; {
026E .dbline 274
026E ;
026E ; //主机拉低18ms
026E ; //P2_0=0;
026E ; COM_OUT;
026E A59A sbi 0x14,5
0270 .dbline 275
0270 ; COM_CLR;
0270 AD98 cbi 0x15,5
0272 .dbline 277
0272 ; //DelaymS(18);
0272 ; DelaymS(5);
0272 05E0 ldi R16,5
0274 10E0 ldi R17,0
0276 F6DE rcall _DelaymS
0278 .dbline 278
0278 ; Display(); //总延时22ms
0278 08DF rcall _Display
027A .dbline 279
027A ; DelaymS(5);
027A 05E0 ldi R16,5
027C 10E0 ldi R17,0
027E F2DE rcall _DelaymS
0280 .dbline 280
0280 ; Display();
0280 04DF rcall _Display
0282 .dbline 282
0282 ; //P2_0=1;
0282 ; COM_IN;
0282 A598 cbi 0x14,5
0284 .dbline 283
0284 ; COM_SET;
0284 AD9A sbi 0x15,5
0286 .dbline 286
0286 ;
0286 ; //总线由上拉电阻拉高 主机延时20us
0286 ; Delay_10us();
0286 9FDF rcall _Delay_10us
0288 .dbline 287
0288 ; Delay_10us();
0288 9EDF rcall _Delay_10us
028A .dbline 288
028A ; Delay_10us();
028A 9DDF rcall _Delay_10us
028C .dbline 289
028C ; Delay_10us();
028C 9CDF rcall _Delay_10us
028E .dbline 295
028E ; //主机设为输入 判断从机响应信号
028E ; //P2_0=1;
028E ;
028E ; //判断从机是否有低电平响应信号 如不响应则跳出,响应则向下运行
028E ; // if(!P2_0) //T !
028E ; if(COM_R)U8FLAG=1;
028E 9D9B sbis 0x13,5
0290 5DC0 rjmp L78
0292 .dbline 295
0292 81E0 ldi R24,1
0294 80931200 sts _U8FLAG,R24
0298 59C0 rjmp L78
029A L77:
029A .dbline 297
029A ; while(!(COM_R))
029A ; {
029A .dbline 298
029A ; U8FLAG=2;
029A 82E0 ldi R24,2
029C 80931200 sts _U8FLAG,R24
02A0 L80:
02A0 .dbline 301
02A0 L81:
02A0 .dbline 301
02A0 ; //判断从机是否发出 80us 的低电平响应信号是否结束
02A0 ; //while((!P2_0)&&U8FLAG++);
02A0 ; while((!(COM_R))&&U8FLAG++);
02A0 9D99 sbic 0x13,5
02A2 09C0 rjmp L83
02A4 20901200 lds R2,_U8FLAG
02A8 3324 clr R3
02AA 822D mov R24,R2
02AC 8F5F subi R24,255 ; addi 1
02AE 80931200 sts _U8FLAG,R24
02B2 2220 tst R2
02B4 A9F7 brne L80
02B6 L83:
02B6 .dbline 302
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -