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

📄 relay.lst

📁 一款电力行业使用的温湿度控制器源代码 湿度传感器采用HF3223 温度采用DS18B20 单片机采用mega8 编程采用winavr2007
💻 LST
📖 第 1 页 / 共 2 页
字号:
   1               		.file	"relay.c"
   2               		.arch atmega8
   3               	__SREG__ = 0x3f
   4               	__SP_H__ = 0x3e
   5               	__SP_L__ = 0x3d
   6               	__tmp_reg__ = 0
   7               	__zero_reg__ = 1
   8               		.global __do_copy_data
   9               		.global __do_clear_bss
  11               		.text
  12               	.Ltext0:
 127               	.global	CompareTem
 129               	CompareTem:
   1:drive/relay.c **** #include"inc/config.h"
   2:drive/relay.c **** 
   3:drive/relay.c **** 
   4:drive/relay.c **** u08 CompareTem(    int16   tem , u08 statenow )
   5:drive/relay.c **** {
 131               	.LM1:
 132               	/* prologue: frame size=0 */
 133               	/* prologue end (size=0) */
 134 0000 9C01      		movw r18,r24
   6:drive/relay.c **** 	
   7:drive/relay.c **** 	if( statenow == NO_ALARM)/////////////////当前状态为非报警状态
 136               	.LM2:
 137 0002 6623      		tst r22
 138 0004 79F4      		brne .L2
   8:drive/relay.c **** 	{
   9:drive/relay.c **** 		if (tem <= TL )             //低温报警
 140               	.LM3:
 141 0006 8091 0000 		lds r24,TL
 142 000a 9091 0000 		lds r25,(TL)+1
 143 000e 8217      		cp r24,r18
 144 0010 9307      		cpc r25,r19
 145 0012 34F5      		brge .L18
  10:drive/relay.c **** 		{
  11:drive/relay.c ****             statenow= TL_ALARM;
  12:drive/relay.c ****         }
  13:drive/relay.c ****         else if (tem >= TH )      	//高温报警
 147               	.LM4:
 148 0014 8091 0000 		lds r24,TH
 149 0018 9091 0000 		lds r25,(TH)+1
 150 001c 2817      		cp r18,r24
 151 001e 3907      		cpc r19,r25
 152 0020 5CF1      		brlt .L6
 153 0022 09C0      		rjmp .L17
 154               	.L2:
  14:drive/relay.c ****         {
  15:drive/relay.c ****             statenow= TH_ALARM;
  16:drive/relay.c ****         }
  17:drive/relay.c **** 
  18:drive/relay.c ****     }
  19:drive/relay.c **** 
  20:drive/relay.c **** 
  21:drive/relay.c **** 
  22:drive/relay.c **** 	else if( statenow ==TL_ALARM ) 			//已经低温报警,看是否停止
 156               	.LM5:
 157 0024 6230      		cpi r22,lo8(2)
 158 0026 99F4      		brne .L7
  23:drive/relay.c **** 	{
  24:drive/relay.c **** 	    if (tem >= TH)
 160               	.LM6:
 161 0028 8091 0000 		lds r24,TH
 162 002c 9091 0000 		lds r25,(TH)+1
 163 0030 2817      		cp r18,r24
 164 0032 3907      		cpc r19,r25
 165 0034 14F0      		brlt .L8
 166               	.L17:
  25:drive/relay.c **** 		{
  26:drive/relay.c ****             statenow= TH_ALARM;		
 168               	.LM7:
 169 0036 61E0      		ldi r22,lo8(1)
 170 0038 1FC0      		rjmp .L6
 171               	.L8:
  27:drive/relay.c **** 		
  28:drive/relay.c **** 		}
  29:drive/relay.c **** 		else
  30:drive/relay.c ****         if (tem >= (TL+100) ) 
 173               	.LM8:
 174 003a 8091 0000 		lds r24,TL
 175 003e 9091 0000 		lds r25,(TL)+1
 176 0042 8C59      		subi r24,lo8(-(100))
 177 0044 9F4F      		sbci r25,hi8(-(100))
 178 0046 2817      		cp r18,r24
 179 0048 3907      		cpc r19,r25
 180 004a B4F0      		brlt .L6
 181 004c 14C0      		rjmp .L16
 182               	.L7:
  31:drive/relay.c **** 		{
  32:drive/relay.c ****             statenow= NO_ALARM;
  33:drive/relay.c **** 			
  34:drive/relay.c **** 		}
  35:drive/relay.c **** 	}
  36:drive/relay.c **** 
  37:drive/relay.c **** 
  38:drive/relay.c **** 	else if( statenow ==TH_ALARM ) 			//已经高温报警,看是否停止
 184               	.LM9:
 185 004e 6130      		cpi r22,lo8(1)
 186 0050 99F4      		brne .L6
  39:drive/relay.c **** 	{
  40:drive/relay.c **** 	    if( tem <=TL)
 188               	.LM10:
 189 0052 8091 0000 		lds r24,TL
 190 0056 9091 0000 		lds r25,(TL)+1
 191 005a 8217      		cp r24,r18
 192 005c 9307      		cpc r25,r19
 193 005e 14F0      		brlt .L13
 194               	.L18:
  41:drive/relay.c **** 		{
  42:drive/relay.c ****             statenow= TL_ALARM;		
 196               	.LM11:
 197 0060 62E0      		ldi r22,lo8(2)
 198 0062 0AC0      		rjmp .L6
 199               	.L13:
  43:drive/relay.c **** 		
  44:drive/relay.c **** 		}
  45:drive/relay.c ****         else if (tem <= (TH-100) ) 
 201               	.LM12:
 202 0064 8091 0000 		lds r24,TH
 203 0068 9091 0000 		lds r25,(TH)+1
 204 006c 8456      		subi r24,lo8(-(-100))
 205 006e 9040      		sbci r25,hi8(-(-100))
 206 0070 8217      		cp r24,r18
 207 0072 9307      		cpc r25,r19
 208 0074 0CF0      		brlt .L6
 209               	.L16:
  46:drive/relay.c **** 		{
  47:drive/relay.c ****             statenow= NO_ALARM;
 211               	.LM13:
 212 0076 60E0      		ldi r22,lo8(0)
 213               	.L6:
  48:drive/relay.c **** 		}
  49:drive/relay.c **** 	}
  50:drive/relay.c ****  
  51:drive/relay.c ****     return statenow;  						//返回判断结果				
  52:drive/relay.c **** 
  53:drive/relay.c **** }
 215               	.LM14:
 216 0078 862F      		mov r24,r22
 217 007a 9927      		clr r25
 218               	/* epilogue: frame size=0 */
 219 007c 0895      		ret
 220               	/* epilogue end (size=1) */
 221               	/* function CompareTem size 63 (62) */
 223               	.Lscope0:
 227               	.global	CompareHum
 229               	CompareHum:
  54:drive/relay.c **** 
  55:drive/relay.c **** 
  56:drive/relay.c **** 
  57:drive/relay.c **** /************************************************************************************
  58:drive/relay.c **** ** 函数功能:	湿度比较函数
  59:drive/relay.c **** ** 传入参数:	最新湿度,通道号,当前状态
  60:drive/relay.c **** ** 输出:	  	重新判断后的报警状态
  61:drive/relay.c **** ************************************************************************************/
  62:drive/relay.c **** u08 CompareHum( u08 Hum , u08 statenow )
  63:drive/relay.c **** {
 231               	.LM15:
 232               	/* prologue: frame size=0 */
 233               	/* prologue end (size=0) */
 234 007e 282F      		mov r18,r24
 235 0080 8091 0000 		lds r24,HH
  64:drive/relay.c **** 	if( statenow == NO_ALARM)	//没有报警
 237               	.LM16:
 238 0084 6623      		tst r22
 239 0086 21F4      		brne .L20
  65:drive/relay.c **** 	{
  66:drive/relay.c **** 	     if (Hum >= HH )        //高湿报警
 241               	.LM17:
 242 0088 2817      		cp r18,r24
 243 008a 48F0      		brlo .L22
  67:drive/relay.c **** 	    {
  68:drive/relay.c **** 	        statenow = HH_ALARM;
 245               	.LM18:
 246 008c 61E0      		ldi r22,lo8(1)
 247 008e 07C0      		rjmp .L22
 248               	.L20:
  69:drive/relay.c **** 	    }
  70:drive/relay.c **** 	}
  71:drive/relay.c **** 	else						//已经高湿
  72:drive/relay.c **** 	{
  73:drive/relay.c **** 	    if (Hum <= (HH-10  ))   //复位报警 ,否则保持原状态  
 250               	.LM19:
 251 0090 3327      		clr r19
 252 0092 9927      		clr r25
 253 0094 0A97      		sbiw r24,10
 254 0096 8217      		cp r24,r18
 255 0098 9307      		cpc r25,r19
 256 009a 0CF0      		brlt .L22
  74:drive/relay.c **** 	    {
  75:drive/relay.c **** 	        statenow = NO_ALARM;
 258               	.LM20:
 259 009c 60E0      		ldi r22,lo8(0)
 260               	.L22:
  76:drive/relay.c **** 	    }
  77:drive/relay.c **** 	}
  78:drive/relay.c **** 	return statenow;
  79:drive/relay.c **** }
 262               	.LM21:
 263 009e 862F      		mov r24,r22
 264 00a0 9927      		clr r25
 265               	/* epilogue: frame size=0 */
 266 00a2 0895      		ret
 267               	/* epilogue end (size=1) */
 268               	/* function CompareHum size 19 (18) */
 270               	.Lscope1:
 273               	.global	heat
 275               	heat:
  80:drive/relay.c **** 
  81:drive/relay.c **** /**------------------------------------------------------------------**/
  82:drive/relay.c **** void RelayJudge( u08 Tstate ,u08  Hstate)
  83:drive/relay.c **** {
  84:drive/relay.c **** 	//湿度继电1器判断
  85:drive/relay.c ****     if( Hstate==HH_ALARM && Tstate!=TH_ALARM)
  86:drive/relay.c ****     {

⌨️ 快捷键说明

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