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

📄 alarm.lst

📁 cs5460a做功率表用 cs5460a做功率表用 cs5460a做功率表
💻 LST
📖 第 1 页 / 共 2 页
字号:
   1               		.file	"Alarm.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:
 101               	.global	SwitchOutDelay
 102               		.data
 105               	SwitchOutDelay:
 106 0000 00        		.byte	0
 107 0001 6400      		.word	100
 108               		.lcomm H_Alarm_step.0,1
 109               		.lcomm L_Alarm_step.1,1
 110               		.text
 112               	.global	WatchDataTask
 114               	WatchDataTask:
   1:task/Alarm.c  **** /**********************************************
   2:task/Alarm.c  **** 公司名称:
   3:task/Alarm.c  **** 文 件 名:Alarm.c
   4:task/Alarm.c  **** 版 本 号:
   5:task/Alarm.c  **** 程序设计:
   6:task/Alarm.c  **** 说    明:
   7:task/Alarm.c  **** 完成日期:
   8:task/Alarm.c  **** 修改日期:
   9:task/Alarm.c  **** 功能摘要:	
  10:task/Alarm.c  **** ***********************************************/
  11:task/Alarm.c  **** #define  _Alarm
  12:task/Alarm.c  **** #include "includes.h"
  13:task/Alarm.c  **** 
  14:task/Alarm.c  **** uint8	fH_Alarm;
  15:task/Alarm.c  **** uint8   fL_Alarm;
  16:task/Alarm.c  **** static  uint16	    LagVal; //报警回滞量:额定值的5%
  17:task/Alarm.c  **** 
  18:task/Alarm.c  **** WAIT_TIME_STRUCT	SwitchOutDelay = {0,_1S};
  19:task/Alarm.c  **** 
  20:task/Alarm.c  **** void  WatchDataTask(void);
  21:task/Alarm.c  **** void  CountLag(void);
  22:task/Alarm.c  **** 
  23:task/Alarm.c  **** 
  24:task/Alarm.c  **** void  WatchDataTask(void)
  25:task/Alarm.c  **** {
 116               	.LM1:
 117               	/* prologue: frame size=0 */
 118               	/* prologue end (size=0) */
  26:task/Alarm.c  ****   static uint8	H_Alarm_step = 0;
  27:task/Alarm.c  ****   static uint8	L_Alarm_step  = 0;
  28:task/Alarm.c  ****   uint16        Display_V = Ps/1000;		
 120               	.LM2:
 121 0000 8091 0000 		lds r24,Ps
 122 0004 9091 0000 		lds r25,(Ps)+1
 123 0008 A091 0000 		lds r26,(Ps)+2
 124 000c B091 0000 		lds r27,(Ps)+3
 125 0010 BC01      		movw r22,r24
 126 0012 CD01      		movw r24,r26
 127 0014 28EE      		ldi r18,lo8(1000)
 128 0016 33E0      		ldi r19,hi8(1000)
 129 0018 40E0      		ldi r20,hlo8(1000)
 130 001a 50E0      		ldi r21,hhi8(1000)
 131 001c 00D0      		rcall __udivmodsi4
 132 001e F901      		movw r30,r18
  29:task/Alarm.c  **** 		
  30:task/Alarm.c  ****   if ((Rest5460A_Time == 0) && (SwitchOutDelay.fGetTime)) 
 134               	.LM3:
 135 0020 3091 0000 		lds r19,Rest5460A_Time
 136 0024 3323      		tst r19
 137 0026 09F0      		breq .+2
 138 0028 D3C0      		rjmp .L1
 140               	.LM4:
 141 002a 8091 0000 		lds r24,SwitchOutDelay
 142 002e 8823      		tst r24
 143 0030 09F4      		brne .+2
 144 0032 CEC0      		rjmp .L1
  31:task/Alarm.c  ****    {
  32:task/Alarm.c  **** 	 SwitchOutDelay.fGetTime = 0;
 146               	.LM5:
 147 0034 3093 0000 		sts SwitchOutDelay,r19
  33:task/Alarm.c  **** 	 SwitchOutDelay.WaitTime = _1S;		
 149               	.LM6:
 150 0038 84E6      		ldi r24,lo8(100)
 151 003a 90E0      		ldi r25,hi8(100)
 152 003c 9093 0000 		sts (SwitchOutDelay+1)+1,r25
 153 0040 8093 0000 		sts SwitchOutDelay+1,r24
  34:task/Alarm.c  **** 	 if((H_Alarm<L_Alarm)||(AlarmSwitch & 0x01))
 155               	.LM7:
 156 0044 4091 0000 		lds r20,H_Alarm
 157 0048 5091 0000 		lds r21,(H_Alarm)+1
 158 004c 6091 0000 		lds r22,L_Alarm
 159 0050 7091 0000 		lds r23,(L_Alarm)+1
 160 0054 4617      		cp r20,r22
 161 0056 5707      		cpc r21,r23
 162 0058 20F0      		brlo .L4
 163 005a 8091 0000 		lds r24,AlarmSwitch
 164 005e 80FF      		sbrs r24,0
 165 0060 07C0      		rjmp .L3
 166               	.L4:
  35:task/Alarm.c  **** 	{
  36:task/Alarm.c  **** 	     IO_HighAlarm = ON;
 168               	.LM8:
 169 0062 939A      		sbi 50-0x20,3
  37:task/Alarm.c  **** 	     fH_Alarm = OFF;
 171               	.LM9:
 172 0064 3093 0000 		sts fH_Alarm,r19
  38:task/Alarm.c  **** 	     IO_LowAlarm = ON;
 174               	.LM10:
 175 0068 929A      		sbi 50-0x20,2
  39:task/Alarm.c  ****   	     fL_Alarm = OFF;
 177               	.LM11:
 178 006a 3093 0000 		sts fL_Alarm,r19
  40:task/Alarm.c  **** 		 return;
 180               	.LM12:
 181 006e 0895      		ret
 182               	.L3:
  41:task/Alarm.c  **** 	 }	
  42:task/Alarm.c  **** 	
  43:task/Alarm.c  **** 
  44:task/Alarm.c  **** 	     switch(H_Alarm_step) 
 184               	.LM13:
 185 0070 2091 0000 		lds r18,H_Alarm_step.0
 186 0074 822F      		mov r24,r18
 187 0076 9927      		clr r25
 188 0078 8230      		cpi r24,2
 189 007a 9105      		cpc r25,__zero_reg__
 190 007c C9F0      		breq .L11
 191 007e 8330      		cpi r24,3
 192 0080 9105      		cpc r25,__zero_reg__
 193 0082 2CF4      		brge .L23
 194 0084 0097      		sbiw r24,0
 195 0086 61F0      		breq .L6
 196 0088 0197      		sbiw r24,1
 197 008a 71F0      		breq .L8
 198 008c 48C0      		rjmp .L5
 199               	.L23:
 200 008e 8430      		cpi r24,4
 201 0090 9105      		cpc r25,__zero_reg__
 202 0092 31F1      		breq .L16
 203 0094 8430      		cpi r24,4
 204 0096 9105      		cpc r25,__zero_reg__
 205 0098 CCF0      		brlt .L14
 206 009a 0597      		sbiw r24,5
 207 009c 71F1      		breq .L19
 208 009e 3FC0      		rjmp .L5
 209               	.L6:
  45:task/Alarm.c  **** 		   {
  46:task/Alarm.c  **** 			  case 0:
  47:task/Alarm.c  **** 				 if (Display_V > H_Alarm)
 211               	.LM14:
 212 00a0 4E17      		cp r20,r30
 213 00a2 5F07      		cpc r21,r31
 214 00a4 E0F5      		brsh .L5
 215 00a6 25C0      		rjmp .L43
 216               	.L8:
  48:task/Alarm.c  **** 				 	{	H_Alarm_step++; }
  49:task/Alarm.c  **** 					break;
  50:task/Alarm.c  **** 					
  51:task/Alarm.c  **** 			  case 1:
  52:task/Alarm.c  **** 				 if (Display_V  > H_Alarm)	
 218               	.LM15:
 219 00a8 4E17      		cp r20,r30
 220 00aa 5F07      		cpc r21,r31
 221 00ac 10F1      		brlo .L43
 222 00ae 0BC0      		rjmp .L12
 223               	.L11:
  53:task/Alarm.c  **** 					 {  H_Alarm_step++;	} 			
  54:task/Alarm.c  **** 				 else 
  55:task/Alarm.c  **** 				     {	H_Alarm_step = 0;	}
  56:task/Alarm.c  **** 					 break;
  57:task/Alarm.c  **** 					
  58:task/Alarm.c  **** 			  case 2:
  59:task/Alarm.c  **** 				 if (Display_V  > H_Alarm)
 225               	.LM16:
 226 00b0 4E17      		cp r20,r30
 227 00b2 5F07      		cpc r21,r31
 228 00b4 40F4      		brsh .L12
  60:task/Alarm.c  **** 				     {	
  61:task/Alarm.c  **** 						H_Alarm_step++;
 230               	.LM17:
 231 00b6 2F5F      		subi r18,lo8(-(1))
 232 00b8 2093 0000 		sts H_Alarm_step.0,r18
  62:task/Alarm.c  **** 						IO_HighAlarm = OFF;
 234               	.LM18:
 235 00bc 9398      		cbi 50-0x20,3
  63:task/Alarm.c  **** 						fH_Alarm = ON;		//报警
 237               	.LM19:
 238 00be 81E0      		ldi r24,lo8(1)
 239 00c0 8093 0000 		sts fH_Alarm,r24
 240 00c4 2CC0      		rjmp .L5
 241               	.L12:
  64:task/Alarm.c  **** 					 } 
  65:task/Alarm.c  **** 				  else 
  66:task/Alarm.c  **** 				     {  H_Alarm_step = 0;}
 243               	.LM20:
 244 00c6 3093 0000 		sts H_Alarm_step.0,r19
  67:task/Alarm.c  **** 				 	 break;
 246               	.LM21:
 247 00ca 29C0      		rjmp .L5
 248               	.L14:
  68:task/Alarm.c  **** 				 	
  69:task/Alarm.c  **** 			  case 3:
  70:task/Alarm.c  **** 				 if ((Display_V +LagVal) < H_Alarm ) 	  //此处存在问题,数值设置太小时会出错
 250               	.LM22:
 251 00cc 8091 0000 		lds r24,LagVal
 252 00d0 9091 0000 		lds r25,(LagVal)+1
 253 00d4 8E0F      		add r24,r30
 254 00d6 9F1F      		adc r25,r31
 255 00d8 8417      		cp r24,r20
 256 00da 9507      		cpc r25,r21
 257 00dc 00F5      		brsh .L5
 258 00de 09C0      		rjmp .L43
 259               	.L16:
  71:task/Alarm.c  **** 				    {	H_Alarm_step++;   }
  72:task/Alarm.c  **** 				 	break;
  73:task/Alarm.c  **** 				 	
  74:task/Alarm.c  **** 			  case 4:
  75:task/Alarm.c  **** 				 if ((Display_V +LagVal) < H_Alarm )
 261               	.LM23:
 262 00e0 8091 0000 		lds r24,LagVal
 263 00e4 9091 0000 		lds r25,(LagVal)+1
 264 00e8 8E0F      		add r24,r30
 265 00ea 9F1F      		adc r25,r31
 266 00ec 8417      		cp r24,r20
 267 00ee 9507      		cpc r25,r21
 268 00f0 98F4      		brsh .L20
 269               	.L43:
  76:task/Alarm.c  **** 				    {	H_Alarm_step++;   }				
 271               	.LM24:
 272 00f2 2F5F      		subi r18,lo8(-(1))
 273 00f4 2093 0000 		sts H_Alarm_step.0,r18
 274 00f8 12C0      		rjmp .L5
 275               	.L19:
  77:task/Alarm.c  **** 				 else 
  78:task/Alarm.c  **** 				    {   H_Alarm_step = 3; }	
  79:task/Alarm.c  **** 				 	break;
  80:task/Alarm.c  **** 				 	
  81:task/Alarm.c  **** 			  case 5:
  82:task/Alarm.c  **** 				 if ((Display_V +LagVal) < H_Alarm )
 277               	.LM25:
 278 00fa 8091 0000 		lds r24,LagVal
 279 00fe 9091 0000 		lds r25,(LagVal)+1
 280 0102 8E0F      		add r24,r30
 281 0104 9F1F      		adc r25,r31
 282 0106 8417      		cp r24,r20
 283 0108 9507      		cpc r25,r21
 284 010a 30F4      		brsh .L20
  83:task/Alarm.c  **** 				    {
  84:task/Alarm.c  **** 						H_Alarm_step = 0;	
 286               	.LM26:
 287 010c 3093 0000 		sts H_Alarm_step.0,r19
  85:task/Alarm.c  **** 						IO_HighAlarm = ON;
 289               	.LM27:
 290 0110 939A      		sbi 50-0x20,3

⌨️ 快捷键说明

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