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

📄 display_dhtxx.s

📁 温湿度检测仪一套
💻 S
📖 第 1 页 / 共 2 页
字号:
	rjmp L71
	lds R2,_U8FLAG
	clr R3
	mov R24,R2
	subi R24,255    ; addi 1
	sts _U8FLAG,R24
	tst R2
	brne L68
L71:
	.dbline 245
; 	   	//超时则跳出for循环		  
; 	   	 if(U8FLAG==1)break;
	lds R24,_U8FLAG
	cpi R24,1
	brne L72
	.dbline 245
	rjmp L58
L72:
	.dbline 250
	lds R2,_U8comdata
	lsl R2
	sts _U8comdata,R2
	.dbline 251
	lds R2,_U8temp
	lds R3,_U8comdata
	or R3,R2
	sts _U8comdata,R3
	.dbline 252
L57:
	.dbline 227
	inc R20
L59:
	.dbline 227
	cpi R20,8
	brsh X8
	rjmp L56
X8:
L58:
	.dbline -2
L55:
	rcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r i 20 c
	.dbend
	.dbfunc e RH _RH fV
	.even
_RH::
	.dbline -1
	.dbline 270
; 	   	//判断数据位是0还是1	 
; 	   	   
; 		// 如果高电平高过预定0高电平值则数据位为 1 
; 	   	 
; 		   U8comdata<<=1;
; 	   	   U8comdata|=U8temp;        //0
; 	     }//rof
; 	   
; 	}
; 
; 	//--------------------------------
; 	//-----湿度读取子程序 ------------
; 	//--------------------------------
; 	//----以下变量均为全局变量--------
; 	//----温度高8位== U8T_data_H------
; 	//----温度低8位== U8T_data_L------
; 	//----湿度高8位== U8RH_data_H-----
; 	//----湿度低8位== U8RH_data_L-----
; 	//----校验 8位 == U8checkdata-----
; 	//----调用相关子程序如下----------
; 	//---- Delay();, Delay_10us();,COM(); 
; 	//--------------------------------
; 
; 	void RH(void)
; 	{
	.dbline 274
; 	 
; 	  //主机拉低18ms 
;     //P2_0=0;
;        COM_OUT;
	sbi 0x14,5
	.dbline 275
;        COM_CLR;
	cbi 0x15,5
	.dbline 277
; 	   //DelaymS(18);
; 	   DelaymS(5);
	ldi R16,5
	ldi R17,0
	rcall _DelaymS
	.dbline 278
; 	   Display();                                //总延时22ms
	rcall _Display
	.dbline 279
; 	   DelaymS(5);
	ldi R16,5
	ldi R17,0
	rcall _DelaymS
	.dbline 280
; 	   Display();      
	rcall _Display
	.dbline 282
; 	  //P2_0=1;
; 	   COM_IN;
	cbi 0x14,5
	.dbline 283
; 	   COM_SET;
	sbi 0x15,5
	.dbline 286
; 	  
; 	 //总线由上拉电阻拉高 主机延时20us
; 	   Delay_10us();
	rcall _Delay_10us
	.dbline 287
; 	   Delay_10us();
	rcall _Delay_10us
	.dbline 288
; 	   Delay_10us();
	rcall _Delay_10us
	.dbline 289
; 	   Delay_10us();
	rcall _Delay_10us
	.dbline 295
; 	 //主机设为输入 判断从机响应信号 
; 	 //P2_0=1;
; 	 
; 	 //判断从机是否有低电平响应信号 如不响应则跳出,响应则向下运行	  
; 	  // if(!P2_0)		 //T !	 
; 	   if(COM_R)U8FLAG=1;
	sbis 0x13,5
	rjmp L78
	.dbline 295
	ldi R24,1
	sts _U8FLAG,R24
	rjmp L78
L77:
	.dbline 297
; 	   while(!(COM_R))		 
; 	   {
	.dbline 298
; 	   U8FLAG=2;
	ldi R24,2
	sts _U8FLAG,R24
L80:
	.dbline 301
L81:
	.dbline 301
; 	 //判断从机是否发出 80us 的低电平响应信号是否结束	 
; 	   //while((!P2_0)&&U8FLAG++);
; 	   while((!(COM_R))&&U8FLAG++);
	sbic 0x13,5
	rjmp L83
	lds R2,_U8FLAG
	clr R3
	mov R24,R2
	subi R24,255    ; addi 1
	sts _U8FLAG,R24
	tst R2
	brne L80
L83:
	.dbline 302
; 	   if(U8FLAG==1)break;
	lds R24,_U8FLAG
	cpi R24,1
	brne L84
	.dbline 302
	rjmp L79
L84:
	.dbline 303
; 	   U8FLAG=2;
	ldi R24,2
	sts _U8FLAG,R24
L86:
	.dbline 306
L87:
	.dbline 306
; 	 //判断从机是否发出 80us 的高电平,如发出则进入数据接收状态
; 	 //while((P2_0)&&U8FLAG++);
; 	   while((COM_R)&&U8FLAG++);
	sbis 0x13,5
	rjmp L89
	lds R2,_U8FLAG
	clr R3
	mov R24,R2
	subi R24,255    ; addi 1
	sts _U8FLAG,R24
	tst R2
	brne L86
L89:
	.dbline 307
; 	   if(U8FLAG==1)break;
	lds R24,_U8FLAG
	cpi R24,1
	brne L90
	.dbline 307
	rjmp L79
L90:
	.dbline 309
; 	 //数据接收状态		 
; 	   COM();
	rcall _COM
	.dbline 310
; 	   if(U8FLAG==1)break;
	lds R24,_U8FLAG
	cpi R24,1
	brne L92
	.dbline 310
	rjmp L79
L92:
	.dbline 311
; 	   U8T_data_H_temp=U8comdata;
	lds R2,_U8comdata
	sts _U8T_data_H_temp,R2
	.dbline 312
; 	   COM();
	rcall _COM
	.dbline 313
; 	   if(U8FLAG==1)break;
	lds R24,_U8FLAG
	cpi R24,1
	brne L94
	.dbline 313
	rjmp L79
L94:
	.dbline 314
; 	   U8T_data_L_temp=U8comdata; 
	lds R2,_U8comdata
	sts _U8T_data_L_temp,R2
	.dbline 315
; 	   COM();
	rcall _COM
	.dbline 316
; 	   if(U8FLAG==1)break;
	lds R24,_U8FLAG
	cpi R24,1
	brne L96
	.dbline 316
	rjmp L79
L96:
	.dbline 317
; 	   U8RH_data_H_temp=U8comdata;
	lds R2,_U8comdata
	sts _U8RH_data_H_temp,R2
	.dbline 318
; 	   COM();
	rcall _COM
	.dbline 319
; 	   if(U8FLAG==1)break;
	lds R24,_U8FLAG
	cpi R24,1
	brne L98
	.dbline 319
	rjmp L79
L98:
	.dbline 320
; 	   U8RH_data_L_temp=U8comdata;
	lds R2,_U8comdata
	sts _U8RH_data_L_temp,R2
	.dbline 321
; 	   COM();
	rcall _COM
	.dbline 322
; 	   if(U8FLAG==1)break;
	lds R24,_U8FLAG
	cpi R24,1
	brne L100
	.dbline 322
	rjmp L79
L100:
	.dbline 323
	lds R2,_U8comdata
	sts _U8checkdata_temp,R2
	.dbline 324
	rjmp L79
L78:
	.dbline 296
	sbis 0x13,5
	rjmp L77
L79:
	.dbline 327
; 	   U8checkdata_temp=U8comdata;
; 	   break;
; 	    }//while
; 	   //P2_0=1;
; 	   COM_IN;
	cbi 0x14,5
	.dbline 328
; 	   COM_SET;
	sbi 0x15,5
	.dbline 331
; 	 //数据校验 
; 	 
; 	   U8temp=(U8T_data_H_temp+U8T_data_L_temp+U8RH_data_H_temp+U8RH_data_L_temp);
	lds R2,_U8T_data_L_temp
	lds R3,_U8T_data_H_temp
	add R3,R2
	lds R2,_U8RH_data_H_temp
	add R3,R2
	lds R2,_U8RH_data_L_temp
	add R3,R2
	sts _U8temp,R3
	.dbline 332
; 	   if(U8temp==U8checkdata_temp)
	lds R2,_U8checkdata_temp
	cp R3,R2
	brne L102
	.dbline 333
; 	   {
	.dbline 334
; 	   	  U8T_data_H=U8T_data_H_temp;
	lds R2,_U8T_data_H_temp
	sts _U8T_data_H,R2
	.dbline 335
; 	   	  U8T_data_L=U8T_data_L_temp;
	lds R2,_U8T_data_L_temp
	sts _U8T_data_L,R2
	.dbline 336
; 	   	  U8RH_data_H=U8RH_data_H_temp;
	lds R2,_U8RH_data_H_temp
	sts _U8RH_data_H,R2
	.dbline 337
; 	   	  U8RH_data_L=U8RH_data_L_temp;
	lds R2,_U8RH_data_L_temp
	sts _U8RH_data_L,R2
	.dbline 338
; 	   	  U8checkdata=U8checkdata_temp;
	lds R2,_U8checkdata_temp
	sts _U8checkdata,R2
	.dbline 339
; 	   }//fi
L102:
	.dbline 342
; 	  
; 	  
; 	   COM_IN;
	cbi 0x14,5
	.dbline 343
; 	   COM_SET;
	sbi 0x15,5
	.dbline -2
L74:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e Display_data _Display_data fV
	.even
_Display_data::
	.dbline -1
	.dbline 347
; 
; 	}
; 	void  Display_data(void) 
; 	{
	.dbline 348
; 		   if(U8FLAG==1)
	lds R24,_U8FLAG
	cpi R24,1
	brne L105
	.dbline 349
; 		   {
	.dbline 350
; 		         PLAY[0] = 12;
	ldi R24,12
	sts _PLAY,R24
	.dbline 351
; 				 PLAY[1] = 13;
	ldi R24,13
	sts _PLAY+1,R24
	.dbline 352
; 				 PLAY[2] = 13;
	sts _PLAY+2,R24
	.dbline 354
; 
; 				 PLAY[3] = 12;
	ldi R24,12
	sts _PLAY+3,R24
	.dbline 355
; 				 PLAY[4] = 13;
	ldi R24,13
	sts _PLAY+4,R24
	.dbline 356
; 				 PLAY[5] = 13;
	sts _PLAY+5,R24
	.dbline 357
; 		   }//fi
	rjmp L106
L105:
	.dbline 359
; 		else
; 		{
	.dbline 360
; 		    ReceiveHighByte=U8T_data_H;
	lds R2,_U8T_data_H
	clr R3
	sts _ReceiveHighByte+1,R3
	sts _ReceiveHighByte,R2
	.dbline 361
; 	       ReceiveHighByte<<=8;
	lds R2,_ReceiveHighByte
	lds R3,_ReceiveHighByte+1
	mov R3,R2
	clr R2
	sts _ReceiveHighByte+1,R3
	sts _ReceiveHighByte,R2
	.dbline 362
; 	       ReceiveHighByte|=U8T_data_L;
	lds R2,_U8T_data_L
	clr R3
	lds R4,_ReceiveHighByte
	lds R5,_ReceiveHighByte+1
	or R4,R2
	or R5,R3
	sts _ReceiveHighByte+1,R5
	sts _ReceiveHighByte,R4
	.dbline 363
; 	       ReceiveLowByte=U8RH_data_H;
	lds R2,_U8RH_data_H
	clr R3
	sts _ReceiveLowByte+1,R3
	sts _ReceiveLowByte,R2
	.dbline 364
; 	       ReceiveLowByte<<=8;
	lds R2,_ReceiveLowByte
	lds R3,_ReceiveLowByte+1
	mov R3,R2
	clr R2
	sts _ReceiveLowByte+1,R3
	sts _ReceiveLowByte,R2
	.dbline 365
; 	       ReceiveLowByte|=U8RH_data_L;
	lds R2,_U8RH_data_L
	clr R3
	lds R4,_ReceiveLowByte
	lds R5,_ReceiveLowByte+1
	or R4,R2
	or R5,R3
	sts _ReceiveLowByte+1,R5
	sts _ReceiveLowByte,R4
	.dbline 368
; 	     
; 	       
; 		 if(ReceiveHighByte&0x8000)
	lds R2,_ReceiveHighByte
	lds R3,_ReceiveHighByte+1
	sbrs R3,7
	rjmp L112
	.dbline 369
; 			   	{
	.dbline 370
; 			   	 ReceiveHighByte&=0x7fff;  //清负数标志
	movw R24,R2
	andi R25,127
	sts _ReceiveHighByte+1,R25
	sts _ReceiveHighByte,R24
	.dbline 371
; 			   	 if(ReceiveHighByte>=199)
	cpi R24,199
	ldi R30,0
	cpc R25,R30
	brlo L114
	.dbline 372
; 			   	 	{
	.dbline 373
; 			   PLAY[3] = 11;
	ldi R24,11
	sts _PLAY+3,R24
	.dbline 374
; 			   PLAY[4] = 9;
	ldi R24,9
	sts _PLAY+4,R24
	.dbline 375
; 			   PLAY[5] = 9;
	sts _PLAY+5,R24
	.dbline 376
; 			   	 	}//fi
	rjmp L113
L114:
	.dbline 377
; 			   	 else if(ReceiveHighByte>=100)
	lds R24,_ReceiveHighByte
	lds R25,_ReceiveHighByte+1
	cpi R24,100
	ldi R30,0
	cpc R25,R30
	brlo L119
	.dbline 378
; 			   	 	{ 
	.dbline 379
; 			   PLAY[3] = 11;
	ldi R24,11
	sts _PLAY+3,R24
	.dbline 380
; 			   PLAY[4] = ReceiveHighByte%100/10;
	ldi R18,100
	ldi R19,0
	lds R16,_ReceiveHighByte
	lds R17,_ReceiveHighByte+1
	rcall mod16u
	ldi R18,10
	ldi R19,0
	rcall div16u
	sts _PLAY+4,R16
	.dbline 381
; 			   PLAY[5] = ReceiveHighByte%10;
	ldi R18,10
	ldi R19,0
	lds R16,_ReceiveHighByte
	lds R17,_ReceiveHighByte+1
	rcall mod16u
	sts _PLAY+5,R16
	.dbline 382
; 			   	 	} //esle if
	rjmp L113
L119:
	.dbline 384
; 			   	 else  
; 			   	 	{
	.dbline 385
; 			   PLAY[3] = 10;
	ldi R24,10
	sts _PLAY+3,R24
	.dbline 386
; 			   PLAY[4] = ReceiveHighByte%100/10;
	ldi R18,100
	ldi R19,0
	lds R16,_ReceiveHighByte
	lds R17,_ReceiveHighByte+1
	rcall mod16u
	ldi R18,10
	ldi R19,0
	rcall div16u
	sts _PLAY+4,R16
	.dbline 387
; 			   PLAY[5] = ReceiveHighByte%10;
	ldi R18,10
	ldi R19,0
	lds R16,_ReceiveHighByte
	lds R17,_ReceiveHighByte+1
	rcall mod16u
	sts _PLAY+5,R16
	.dbline 388
; 			   	 	}  //esle
	.dbline 390
; 			   	 	
; 			   	} //fi
	rjmp L113
L112:
	.dbline 392
; 			   else
; 			   	{
	.dbline 393
; 			   PLAY[3] = ReceiveHighByte/100;
	ldi R18,100
	ldi R19,0
	lds R16,_ReceiveHighByte
	lds R17,_ReceiveHighByte+1
	rcall div16u
	sts _PLAY+3,R16
	.dbline 394
; 			   PLAY[4] = ReceiveHighByte%100/10;
	ldi R18,100
	ldi R19,0
	lds R16,_ReceiveHighByte
	lds R17,_ReceiveHighByte+1
	rcall mod16u
	ldi R18,10
	ldi R19,0
	rcall div16u
	sts _PLAY+4,R16
	.dbline 395
; 			   PLAY[5] = ReceiveHighByte%10;
	ldi R18,10
	ldi R19,0
	lds R16,_ReceiveHighByte
	lds R17,_ReceiveHighByte+1
	rcall mod16u
	sts _PLAY+5,R16
	.dbline 396
; 			     if(ReceiveHighByte<100)
	lds R24,_ReceiveHighByte
	lds R25,_ReceiveHighByte+1
	cpi R24,100
	ldi R30,0
	cpc R25,R30
	brsh L130
	.dbline 397
; 			   {
	.dbline 398
; 			   	PLAY[3]=14;
	ldi R24,14
	sts _PLAY+3,R24
	.dbline 399
; 			   }
L130:
	.dbline 400
; 			   	} //esle
L113:
	.dbline 402
; 			   	
; 			   PLAY[0] = ReceiveLowByte/100;           //湿度 
	ldi R18,100
	ldi R19,0
	lds R16,_ReceiveLowByte
	lds R17,_ReceiveLowByte+1
	rcall div16u
	sts _PLAY,R16
	.dbline 403
; 			   PLAY[1] = ReceiveLowByte%100/10;
	ldi R18,100
	ldi R19,0
	lds R16,_ReceiveLowByte
	lds R17,_ReceiveLowByte+1
	rcall mod16u
	ldi R18,10
	ldi R19,0
	rcall div16u
	sts _PLAY+1,R16
	.dbline 404
; 			   PLAY[2] = ReceiveLowByte%10;
	ldi R18,10
	ldi R19,0
	lds R16,_ReceiveLowByte
	lds R17,_ReceiveLowByte+1
	rcall mod16u
	sts _PLAY+2,R16
	.dbline 405
; 			   if(ReceiveLowByte<100)
	lds R24,_ReceiveLowByte
	lds R25,_ReceiveLowByte+1
	cpi R24,100
	ldi R30,0
	cpc R25,R30
	brsh L135
	.dbline 406
; 			   {
	.dbline 407
; 			   	PLAY[0]=14;
	ldi R24,14
	sts _PLAY,R24
	.dbline 408
; 			   }
L135:
	.dbline 410
L106:
	.dbline -2
L104:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e main _main fV
	.even
_main::
	.dbline -1
	.dbline 429
; 			   
; 			}//esle
; 		
; 	}
; 	
; /**************************************************************************
; 
; 
; 
;                             主函数
; 							
; 							
; 							
; 							
; **************************************************************************/
; 
; 
; 
; 
;  void main(void)
; {
	.dbline 431
; 
;  init_devices() ;
	rcall _init_devices
	.dbline 432
;  COM_IN;
	cbi 0x14,5
	.dbline 433
;  COM_SET;
	sbi 0x15,5
	rjmp L139
L138:
	.dbline 435
;  while(1)
;  {
	.dbline 437
;  
;   RH();
	rcall _RH
	.dbline 438
;   Display_data();
	rcall _Display_data
	.dbline 439
;   Display();       
	rcall _Display
	.dbline 442
;   //延时2S
;   
;   for(U8temp=0;U8temp<200;U8temp++)
	clr R2
	sts _U8temp,R2
	rjmp L144
L141:
	.dbline 443
	.dbline 444
	ldi R16,5
	ldi R17,0
	rcall _DelaymS
	.dbline 445
	rcall _Display
	.dbline 446
L142:
	.dbline 442
	lds R24,_U8temp
	subi R24,255    ; addi 1
	sts _U8temp,R24
L144:
	.dbline 442
	lds R24,_U8temp
	cpi R24,200
	brlo L141
	.dbline 448
L139:
	.dbline 434
	rjmp L138
X9:
	.dbline -2
L137:
	.dbline 0 ; func end
	ret
	.dbend
	.area bss(ram, con, rel)
	.dbfile C:\DOCUME~1\Owner\桌面\产品程序文件\DHT21\新显示程序\Display_DHTXX.c
_ReceiveLowByte::
	.blkb 2
	.dbsym e ReceiveLowByte _ReceiveLowByte i
_ReceiveHighByte::
	.blkb 2
	.dbsym e ReceiveHighByte _ReceiveHighByte i
_U8comdata::
	.blkb 1
	.dbsym e U8comdata _U8comdata c
_U8checkdata_temp::
	.blkb 1
	.dbsym e U8checkdata_temp _U8checkdata_temp c
_U8RH_data_L_temp::
	.blkb 1
	.dbsym e U8RH_data_L_temp _U8RH_data_L_temp c
_U8RH_data_H_temp::
	.blkb 1
	.dbsym e U8RH_data_H_temp _U8RH_data_H_temp c
_U8T_data_L_temp::
	.blkb 1
	.dbsym e U8T_data_L_temp _U8T_data_L_temp c
_U8T_data_H_temp::
	.blkb 1
	.dbsym e U8T_data_H_temp _U8T_data_H_temp c
_U8checkdata::
	.blkb 1
	.dbsym e U8checkdata _U8checkdata c
_U8RH_data_L::
	.blkb 1
	.dbsym e U8RH_data_L _U8RH_data_L c
_U8RH_data_H::
	.blkb 1
	.dbsym e U8RH_data_H _U8RH_data_H c
_U8T_data_L::
	.blkb 1
	.dbsym e U8T_data_L _U8T_data_L c
_U8T_data_H::
	.blkb 1
	.dbsym e U8T_data_H _U8T_data_H c
_U8temp::
	.blkb 1
	.dbsym e U8temp _U8temp c
_U8count::
	.blkb 1
	.dbsym e U8count _U8count c
_k::
	.blkb 1
	.dbsym e k _k c
_U8FLAG::
	.blkb 1
	.dbsym e U8FLAG _U8FLAG c
_i::
	.blkb 1
	.dbsym e i _i c

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -