⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 display_dhtxx.lis

📁 温湿度检测仪一套
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 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 + -