📄 温湿度.lis
字号:
02D4 10C0 xjmp L58
02D6 L72:
02D6 .dbline 141
02D6 ; //判断数据位是0还是1
02D6 ;
02D6 ; // 如果高电平高过预定0高电平值则数据位为 1
02D6 ;
02D6 ; U8comdata<<=1;
02D6 20900400 lds R2,_U8comdata
02DA 220C lsl R2
02DC 20920400 sts _U8comdata,R2
02E0 .dbline 142
02E0 ; U8comdata|=U8temp; //0
02E0 20900F00 lds R2,_U8temp
02E4 30900400 lds R3,_U8comdata
02E8 3228 or R3,R2
02EA 30920400 sts _U8comdata,R3
02EE .dbline 143
02EE ; }//rof
02EE L57:
02EE .dbline 121
02EE 4395 inc R20
02F0 L59:
02F0 .dbline 121
02F0 4830 cpi R20,8
02F2 08F4 brsh X22
02F4 BECF xjmp L56
02F6 X22:
02F6 X21:
02F6 L58:
02F6 .dbline -2
02F6 L55:
02F6 .dbline 0 ; func end
02F6 4991 ld R20,y+
02F8 0895 ret
02FA .dbsym r i 20 c
02FA .dbend
02FA .dbfunc e RH _RH fV
.even
02FA _RH::
02FA .dbline -1
02FA .dbline 161
02FA ;
02FA ; }
02FA ;
02FA ; //--------------------------------
02FA ; //-----湿度读取子程序 ------------
02FA ; //--------------------------------
02FA ; //----以下变量均为全局变量--------
02FA ; //----温度高8位== U8T_data_H------
02FA ; //----温度低8位== U8T_data_L------
02FA ; //----湿度高8位== U8RH_data_H-----
02FA ; //----湿度低8位== U8RH_data_L-----
02FA ; //----校验 8位 == U8checkdata-----
02FA ; //----调用相关子程序如下----------
02FA ; //---- Delay();, Delay_10us();,COM();
02FA ; //--------------------------------
02FA ;
02FA ; void RH(void)
02FA ; {
02FA .dbline 164
02FA ;
02FA ; //主机拉低18ms
02FA ; COM_OUT;
02FA A49A sbi 0x14,4
02FC .dbline 165
02FC ; COM_CLR;
02FC AC98 cbi 0x15,4
02FE .dbline 166
02FE ; DelaymS(1);
02FE 01E0 ldi R16,1
0300 10E0 ldi R17,0
0302 58DF xcall _DelaymS
0304 .dbline 167
0304 ; COM_IN;
0304 A498 cbi 0x14,4
0306 .dbline 168
0306 ; COM_SET;
0306 AC9A sbi 0x15,4
0308 .dbline 171
0308 ;
0308 ; //总线由上拉电阻拉高 主机延时20us
0308 ; Delay_10us();
0308 6ADF xcall _Delay_10us
030A .dbline 172
030A ; Delay_10us();
030A 69DF xcall _Delay_10us
030C .dbline 173
030C ; Delay_10us();
030C 68DF xcall _Delay_10us
030E .dbline 174
030E ; Delay_10us();
030E 67DF xcall _Delay_10us
0310 .dbline 180
0310 ; //主机设为输入 判断从机响应信号
0310 ; //P2_0=1;
0310 ;
0310 ; //判断从机是否有低电平响应信号 如不响应则跳出,响应则向下运行
0310 ; // if(!P2_0) //T !
0310 ; if(COM_R)U8FLAG=1;
0310 9C9B sbis 0x13,4
0312 5DC0 rjmp L78
0314 X23:
0314 .dbline 180
0314 81E0 ldi R24,1
0316 80931200 sts _U8FLAG,R24
031A 59C0 xjmp L78
031C L77:
031C .dbline 182
031C ; while(!(COM_R))
031C ; {
031C .dbline 183
031C ; U8FLAG=2;
031C 82E0 ldi R24,2
031E 80931200 sts _U8FLAG,R24
0322 L80:
0322 .dbline 186
0322 ; //判断从机是否发出 80us 的低电平响应信号是否结束
0322 ; //while((!P2_0)&&U8FLAG++);
0322 ; while((!(COM_R))&&U8FLAG++);
0322 L81:
0322 .dbline 186
0322 9C99 sbic 0x13,4
0324 09C0 rjmp L83
0326 X24:
0326 20901200 lds R2,_U8FLAG
032A 3324 clr R3
032C 822D mov R24,R2
032E 8F5F subi R24,255 ; addi 1
0330 80931200 sts _U8FLAG,R24
0334 2220 tst R2
0336 A9F7 brne L80
0338 X25:
0338 L83:
0338 .dbline 187
0338 ; if(U8FLAG==1)break;
0338 80911200 lds R24,_U8FLAG
033C 8130 cpi R24,1
033E 09F4 brne L84
0340 X26:
0340 .dbline 187
0340 48C0 xjmp L79
0342 L84:
0342 .dbline 188
0342 ; U8FLAG=2;
0342 82E0 ldi R24,2
0344 80931200 sts _U8FLAG,R24
0348 L86:
0348 .dbline 191
0348 ; //判断从机是否发出 80us 的高电平,如发出则进入数据接收状态
0348 ; //while((P2_0)&&U8FLAG++);
0348 ; while((COM_R)&&U8FLAG++);
0348 L87:
0348 .dbline 191
0348 9C9B sbis 0x13,4
034A 09C0 rjmp L89
034C X27:
034C 20901200 lds R2,_U8FLAG
0350 3324 clr R3
0352 822D mov R24,R2
0354 8F5F subi R24,255 ; addi 1
0356 80931200 sts _U8FLAG,R24
035A 2220 tst R2
035C A9F7 brne L86
035E X28:
035E L89:
035E .dbline 192
035E ; if(U8FLAG==1)break;
035E 80911200 lds R24,_U8FLAG
0362 8130 cpi R24,1
0364 09F4 brne L90
0366 X29:
0366 .dbline 192
0366 35C0 xjmp L79
0368 L90:
0368 .dbline 194
0368 ; //数据接收状态
0368 ; COM();
0368 81DF xcall _COM
036A .dbline 195
036A ; if(U8FLAG==1)break;
036A 80911200 lds R24,_U8FLAG
036E 8130 cpi R24,1
0370 09F4 brne L92
0372 X30:
0372 .dbline 195
0372 2FC0 xjmp L79
0374 L92:
0374 .dbline 196
0374 ; U8T_data_H_temp=U8comdata;
0374 20900400 lds R2,_U8comdata
0378 20920900 sts _U8T_data_H_temp,R2
037C .dbline 197
037C ; COM();
037C 77DF xcall _COM
037E .dbline 198
037E ; if(U8FLAG==1)break;
037E 80911200 lds R24,_U8FLAG
0382 8130 cpi R24,1
0384 09F4 brne L94
0386 X31:
0386 .dbline 198
0386 25C0 xjmp L79
0388 L94:
0388 .dbline 199
0388 ; U8T_data_L_temp=U8comdata;
0388 20900400 lds R2,_U8comdata
038C 20920800 sts _U8T_data_L_temp,R2
0390 .dbline 200
0390 ; COM();
0390 6DDF xcall _COM
0392 .dbline 201
0392 ; if(U8FLAG==1)break;
0392 80911200 lds R24,_U8FLAG
0396 8130 cpi R24,1
0398 09F4 brne L96
039A X32:
039A .dbline 201
039A 1BC0 xjmp L79
039C L96:
039C .dbline 202
039C ; U8RH_data_H_temp=U8comdata;
039C 20900400 lds R2,_U8comdata
03A0 20920700 sts _U8RH_data_H_temp,R2
03A4 .dbline 203
03A4 ; COM();
03A4 63DF xcall _COM
03A6 .dbline 204
03A6 ; if(U8FLAG==1)break;
03A6 80911200 lds R24,_U8FLAG
03AA 8130 cpi R24,1
03AC 09F4 brne L98
03AE X33:
03AE .dbline 204
03AE 11C0 xjmp L79
03B0 L98:
03B0 .dbline 205
03B0 ; U8RH_data_L_temp=U8comdata;
03B0 20900400 lds R2,_U8comdata
03B4 20920600 sts _U8RH_data_L_temp,R2
03B8 .dbline 206
03B8 ; COM();
03B8 59DF xcall _COM
03BA .dbline 207
03BA ; if(U8FLAG==1)break;
03BA 80911200 lds R24,_U8FLAG
03BE 8130 cpi R24,1
03C0 09F4 brne L100
03C2 X34:
03C2 .dbline 207
03C2 07C0 xjmp L79
03C4 L100:
03C4 .dbline 208
03C4 ; U8checkdata_temp=U8comdata;
03C4 20900400 lds R2,_U8comdata
03C8 20920500 sts _U8checkdata_temp,R2
03CC .dbline 209
03CC ; break;
03CC 02C0 xjmp L79
03CE L78:
03CE .dbline 181
03CE 9C9B sbis 0x13,4
03D0 A5CF rjmp L77
03D2 X35:
03D2 L79:
03D2 .dbline 212
03D2 ; }//while
03D2 ; //P2_0=1;
03D2 ; COM_IN;
03D2 A498 cbi 0x14,4
03D4 .dbline 213
03D4 ; COM_SET;
03D4 AC9A sbi 0x15,4
03D6 .dbline 216
03D6 ; //数据校验
03D6 ;
03D6 ; U8temp=(U8T_data_H_temp+U8T_data_L_temp+U8RH_data_H_temp+U8RH_data_L_temp);
03D6 20900800 lds R2,_U8T_data_L_temp
03DA 30900900 lds R3,_U8T_data_H_temp
03DE 320C add R3,R2
03E0 20900700 lds R2,_U8RH_data_H_temp
03E4 320C add R3,R2
03E6 20900600 lds R2,_U8RH_data_L_temp
03EA 320C add R3,R2
03EC 30920F00 sts _U8temp,R3
03F0 .dbline 217
03F0 ; if(U8temp==U8checkdata_temp)
03F0 20900500 lds R2,_U8checkdata_temp
03F4 3214 cp R3,R2
03F6 A1F4 brne L102
03F8 X36:
03F8 .dbline 218
03F8 ; {
03F8 .dbline 219
03F8 ; U8RH_data_H=U8T_data_H_temp;
03F8 20900900 lds R2,_U8T_data_H_temp
03FC 20920C00 sts _U8RH_data_H,R2
0400 .dbline 220
0400 ; U8RH_data_L=U8T_data_L_temp;
0400 20900800 lds R2,_U8T_data_L_temp
0404 20920B00 sts _U8RH_data_L,R2
0408 .dbline 221
0408 ; U8T_data_H=U8RH_data_H_temp;
0408 20900700 lds R2,_U8RH_data_H_temp
040C 20920E00 sts _U8T_data_H,R2
0410 .dbline 222
0410 ; U8T_data_L=U8RH_data_L_temp;
0410 20900600 lds R2,_U8RH_data_L_temp
0414 20920D00 sts _U8T_data_L,R2
0418 .dbline 223
0418 ; U8checkdata=U8checkdata_temp;
0418 20900500 lds R2,_U8checkdata_temp
041C 20920A00 sts _U8checkdata,R2
0420 .dbline 224
0420 ; }//fi
0420 L102:
0420 .dbline 227
0420 ;
0420 ;
0420 ; COM_IN;
0420 A498 cbi 0x14,4
0422 .dbline 228
0422 ; COM_SET;
0422 AC9A sbi 0x15,4
0424 .dbline -2
0424 L74:
0424 .dbline 0 ; func end
0424 0895 ret
0426 .dbend
0426 .dbfunc e Uart_Init _Uart_Init fV
.even
0426 _Uart_Init::
0426 .dbline -1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -