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

📄 alarmprocess.s

📁 LED显示面板
💻 S
📖 第 1 页 / 共 2 页
字号:
	mul R24,R10
	ldi R24,<_pannel_led+6
	ldi R25,>_pannel_led+6
	movw R30,R0
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	ldd R3,z+1
	ldi R24,<_pannel_led+4
	ldi R25,>_pannel_led+4
	movw R30,R0
	add R30,R24
	adc R31,R25
	ldd R4,z+0
	ldd R5,z+1
	add R4,R2
	adc R5,R3
	ldi R24,<_pannel_led+18
	ldi R25,>_pannel_led+18
	movw R30,R0
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	ldd R3,z+1
	cp R4,R2
	cpc R5,R3
	brlo X5
	xjmp L37
X5:
	.dbline 129
; 		      {
	.dbline 130
; 			   pannel_led[i].current_state = normal;                   //正常
	ldi R24,20
	mul R24,R10
	movw R30,R0
	ldi R24,<_pannel_led+14
	ldi R25,>_pannel_led+14
	add R30,R24
	adc R31,R25
	clr R2
	std z+0,R2
	.dbline 131
; 			  }
	.dbline 132
; 	       }
	.dbline 133
;        }
	.dbline 134
;     }
	xjmp L37
L36:
	.dbline 135
;   else if((pannel_led[i].sen_typed==mv)||(pannel_led[i].sen_typed==rtd))
	ldi R24,20
	mul R24,R10
	movw R30,R0
	ldi R24,<_pannel_led
	ldi R25,>_pannel_led
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	clr R3
	mov R24,R2
	cpi R24,1
	breq L89
	cpi R24,2
	breq X6
	xjmp L87
X6:
L89:
	.dbline 136
;   {  WDR();
	.dbline 136
	wdr
	.dbline 137
;      temp1 = rece_data[pannel_led[i].ID].Data[2*pannel_led[i].channel];                      //高位
	ldi R24,20
	mul R24,R10
	movw R2,R0
	ldi R24,<_pannel_led+1
	ldi R25,>_pannel_led+1
	movw R30,R2
	add R30,R24
	adc R31,R25
	ldd R4,z+0
	ldi R24,12
	mul R24,R4
	movw R4,R0
	ldi R24,<_rece_data+4
	ldi R25,>_rece_data+4
	add R4,R24
	adc R5,R25
	ldi R24,<_pannel_led+2
	ldi R25,>_pannel_led+2
	movw R30,R2
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	ldi R24,2
	mul R24,R2
	movw R30,R0
	add R30,R4
	adc R31,R5
	ldd R22,z+0
	clr R23
	.dbline 138
;      temp2 = rece_data[pannel_led[i].ID].Data[2*pannel_led[i].channel+1];                    //低位
	ldi R24,20
	mul R24,R10
	movw R2,R0
	ldi R24,<_pannel_led+1
	ldi R25,>_pannel_led+1
	movw R30,R2
	add R30,R24
	adc R31,R25
	ldd R4,z+0
	ldi R24,12
	mul R24,R4
	movw R4,R0
	ldi R24,<_rece_data+4
	ldi R25,>_rece_data+4
	add R4,R24
	adc R5,R25
	ldi R24,<_pannel_led+2
	ldi R25,>_pannel_led+2
	movw R30,R2
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	ldi R24,2
	mul R24,R2
	movw R30,R0
	adiw R30,1
	add R30,R4
	adc R31,R5
	ldd R20,z+0
	clr R21
	.dbline 139
;      temp1 = temp1*256;
	ldi R16,256
	ldi R17,1
	movw R18,R22
	xcall empy16s
	movw R22,R16
	.dbline 140
;      temp1 = temp1+temp2;
	add R22,R20
	adc R23,R21
	.dbline 141
;      pannel_led[i].displaydata = temp1;
	ldi R24,20
	mul R24,R10
	movw R30,R0
	ldi R24,<_pannel_led+18
	ldi R25,>_pannel_led+18
	add R30,R24
	adc R31,R25
	std z+1,R23
	std z+0,R22
	.dbline 142
; 	 temp1 = temp1/10;
	ldi R18,10
	ldi R19,0
	movw R16,R22
	xcall div16u
	movw R22,R16
	.dbline 143
; 	 pannel_led[i].data=temp1;
	ldi R24,20
	mul R24,R10
	movw R30,R0
	ldi R24,<_pannel_led+11
	ldi R25,>_pannel_led+11
	add R30,R24
	adc R31,R25
	std z+1,R23
	std z+0,R22
	.dbline 145
; 	 
; 	 if(pannel_led[i].data<2)
	ldi R24,20
	mul R24,R10
	movw R30,R0
	ldi R24,<_pannel_led+11
	ldi R25,>_pannel_led+11
	add R30,R24
	adc R31,R25
	ldd R24,z+0
	ldd R25,z+1
	cpi R24,2
	ldi R30,0
	cpc R25,R30
	brsh L98
	.dbline 146
; 	 {
	.dbline 147
; 	 pannel_led[i].current_state = fault;                                            //传感器故障
	ldi R24,20
	mul R24,R10
	movw R30,R0
	ldi R24,<_pannel_led+14
	ldi R25,>_pannel_led+14
	add R30,R24
	adc R31,R25
	ldi R24,3
	std z+0,R24
	.dbline 148
; 	    }
	xjmp L88
L98:
	.dbline 150
;       else
; 	  {
	.dbline 152
; 	     
; 	     if(pannel_led[i].alarm_type==above)                                //上限报警处理
	ldi R24,20
	mul R24,R10
	movw R30,R0
	ldi R24,<_pannel_led+3
	ldi R25,>_pannel_led+3
	add R30,R24
	adc R31,R25
	ldd R24,z+0
	cpi R24,90
	breq X7
	xjmp L102
X7:
	.dbline 153
;          {
	.dbline 154
; 	         if(pannel_led[i].data>pannel_led[i].limit+pannel_led[i].zone)
	ldi R24,20
	mul R24,R10
	ldi R24,<_pannel_led+6
	ldi R25,>_pannel_led+6
	movw R30,R0
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	ldd R3,z+1
	ldi R24,<_pannel_led+4
	ldi R25,>_pannel_led+4
	movw R30,R0
	add R30,R24
	adc R31,R25
	ldd R4,z+0
	ldd R5,z+1
	add R4,R2
	adc R5,R3
	ldi R24,<_pannel_led+11
	ldi R25,>_pannel_led+11
	movw R30,R0
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	ldd R3,z+1
	cp R4,R2
	cpc R5,R3
	brsh L105
	.dbline 155
; 	        {
	.dbline 156
; 		       if(pannel_led[i].state!=acked)                            //未应答
	ldi R24,20
	mul R24,R10
	movw R30,R0
	ldi R24,<_pannel_led+13
	ldi R25,>_pannel_led+13
	add R30,R24
	adc R31,R25
	ldd R24,z+0
	cpi R24,2
	breq L110
	.dbline 157
; 		       {
	.dbline 158
; 		        pannel_led[i].current_state = noack;
	ldi R24,20
	mul R24,R10
	movw R30,R0
	ldi R24,<_pannel_led+14
	ldi R25,>_pannel_led+14
	add R30,R24
	adc R31,R25
	ldi R24,1
	std z+0,R24
	.dbline 159
; 		        }
	xjmp L88
L110:
	.dbline 161
; 		       else
; 		       {
	.dbline 162
; 		       pannel_led[i].current_state = acked;                          //已应答
	ldi R24,20
	mul R24,R10
	movw R30,R0
	ldi R24,<_pannel_led+14
	ldi R25,>_pannel_led+14
	add R30,R24
	adc R31,R25
	ldi R24,2
	std z+0,R24
	.dbline 163
; 		        }
	.dbline 164
; 		    }
	xjmp L88
L105:
	.dbline 165
; 		    else if(pannel_led[i].data<pannel_led[i].limit-pannel_led[i].zone)
	ldi R24,20
	mul R24,R10
	ldi R24,<_pannel_led+6
	ldi R25,>_pannel_led+6
	movw R30,R0
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	ldd R3,z+1
	ldi R24,<_pannel_led+4
	ldi R25,>_pannel_led+4
	movw R30,R0
	add R30,R24
	adc R31,R25
	ldd R4,z+0
	ldd R5,z+1
	sub R4,R2
	sbc R5,R3
	ldi R24,<_pannel_led+11
	ldi R25,>_pannel_led+11
	movw R30,R0
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	ldd R3,z+1
	cp R2,R4
	cpc R3,R5
	brlo X8
	xjmp L88
X8:
	.dbline 166
; 		        {
	.dbline 167
; 			      pannel_led[i].current_state = normal;                      //正常
	ldi R24,20
	mul R24,R10
	movw R30,R0
	ldi R24,<_pannel_led+14
	ldi R25,>_pannel_led+14
	add R30,R24
	adc R31,R25
	clr R2
	std z+0,R2
	.dbline 168
; 			    }
	.dbline 169
;          }
	xjmp L88
L102:
	.dbline 171
; 		 else
; 		 {
	.dbline 172
; 		     if(pannel_led[i].data<pannel_led[i].limit-pannel_led[i].zone)
	ldi R24,20
	mul R24,R10
	ldi R24,<_pannel_led+6
	ldi R25,>_pannel_led+6
	movw R30,R0
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	ldd R3,z+1
	ldi R24,<_pannel_led+4
	ldi R25,>_pannel_led+4
	movw R30,R0
	add R30,R24
	adc R31,R25
	ldd R4,z+0
	ldd R5,z+1
	sub R4,R2
	sbc R5,R3
	ldi R24,<_pannel_led+11
	ldi R25,>_pannel_led+11
	movw R30,R0
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	ldd R3,z+1
	cp R2,R4
	cpc R3,R5
	brsh L121
	.dbline 173
; 	        {
	.dbline 174
; 		       if(pannel_led[i].state!=acked)                            //未应答
	ldi R24,20
	mul R24,R10
	movw R30,R0
	ldi R24,<_pannel_led+13
	ldi R25,>_pannel_led+13
	add R30,R24
	adc R31,R25
	ldd R24,z+0
	cpi R24,2
	breq L126
	.dbline 175
; 		       {
	.dbline 176
; 		        pannel_led[i].current_state = noack;
	ldi R24,20
	mul R24,R10
	movw R30,R0
	ldi R24,<_pannel_led+14
	ldi R25,>_pannel_led+14
	add R30,R24
	adc R31,R25
	ldi R24,1
	std z+0,R24
	.dbline 177
; 		        }
	xjmp L88
L126:
	.dbline 179
; 		       else
; 		       {
	.dbline 180
; 		       pannel_led[i].current_state = acked;                          //已应答
	ldi R24,20
	mul R24,R10
	movw R30,R0
	ldi R24,<_pannel_led+14
	ldi R25,>_pannel_led+14
	add R30,R24
	adc R31,R25
	ldi R24,2
	std z+0,R24
	.dbline 181
; 		        }
	.dbline 182
; 		    }
	xjmp L88
L121:
	.dbline 183
; 		    else if(pannel_led[i].data>pannel_led[i].limit+pannel_led[i].zone)
	ldi R24,20
	mul R24,R10
	ldi R24,<_pannel_led+6
	ldi R25,>_pannel_led+6
	movw R30,R0
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	ldd R3,z+1
	ldi R24,<_pannel_led+4
	ldi R25,>_pannel_led+4
	movw R30,R0
	add R30,R24
	adc R31,R25
	ldd R4,z+0
	ldd R5,z+1
	add R4,R2
	adc R5,R3
	ldi R24,<_pannel_led+11
	ldi R25,>_pannel_led+11
	movw R30,R0
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	ldd R3,z+1
	cp R4,R2
	cpc R5,R3
	brlo X9
	xjmp L88
X9:
	.dbline 184
; 		        {
	.dbline 185
; 			      pannel_led[i].current_state = normal;                      //正常
	ldi R24,20
	mul R24,R10
	movw R30,R0
	ldi R24,<_pannel_led+14
	ldi R25,>_pannel_led+14
	add R30,R24
	adc R31,R25
	clr R2
	std z+0,R2
	.dbline 186
; 			    }
	.dbline 187
; 		 }
	.dbline 188
; 	   }  
	.dbline 189
;   }	
	xjmp L88
L87:
	.dbline 191
;  
;    else if(pannel_led[i].sen_typed==sw)
	ldi R24,20
	mul R24,R10
	movw R30,R0
	ldi R24,<_pannel_led
	ldi R25,>_pannel_led
	add R30,R24
	adc R31,R25
	ldd R24,z+0
	cpi R24,3
	breq X10
	xjmp L137
X10:
	.dbline 192
;    {  WDR();
	.dbline 192
	wdr
	.dbline 193
;       pannel_led[i].data = rece_data[pannel_led[i].ID].Data[pannel_led[i].channel];  
	ldi R24,20
	mul R24,R10
	movw R2,R0
	ldi R24,<_pannel_led+1
	ldi R25,>_pannel_led+1
	movw R30,R2
	add R30,R24
	adc R31,R25
	ldd R4,z+0
	ldi R24,12
	mul R24,R4
	movw R4,R0
	ldi R24,<_rece_data+4
	ldi R25,>_rece_data+4
	add R4,R24
	adc R5,R25
	ldi R24,<_pannel_led+2
	ldi R25,>_pannel_led+2
	movw R30,R2
	add R30,R24
	adc R31,R25
	ldd R30,z+0
	clr R31
	add R30,R4
	adc R31,R5
	ldd R4,z+0
	clr R5
	ldi R24,<_pannel_led+11
	ldi R25,>_pannel_led+11
	movw R30,R2
	add R30,R24
	adc R31,R25
	std z+1,R5
	std z+0,R4
	.dbline 195
;       
; 	  if(pannel_led[i].data==0)
	ldi R24,20
	mul R24,R10
	movw R30,R0
	ldi R24,<_pannel_led+11
	ldi R25,>_pannel_led+11
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	ldd R3,z+1
	tst R2
	brne L143
	tst R3
	brne L143
X1:
	.dbline 197
; 	  
; 	    pannel_led[i].current_state = fault;
	ldi R24,20
	mul R24,R10
	movw R30,R0
	ldi R24,<_pannel_led+14
	ldi R25,>_pannel_led+14
	add R30,R24
	adc R31,R25
	ldi R24,3
	std z+0,R24
	xjmp L144
L143:
	.dbline 200
; 		
; 	   else
; 	   {	
	.dbline 201
; 	         if(pannel_led[i].alarm_type==below)                                //闭合报警
	ldi R24,20
	mul R24,R10
	movw R30,R0
	ldi R24,<_pannel_led+3
	ldi R25,>_pannel_led+3
	add R30,R24
	adc R31,R25
	ldd R24,z+0
	cpi R24,165
	breq X11
	xjmp L147
X11:
	.dbline 202
; 	         {
	.dbline 203
; 	              if(pannel_led[i].data ==on)
	ldi R24,20
	mul R24,R10
	movw R30,R0
	ldi R24,<_pannel_led+11
	ldi R25,>_pannel_led+11
	add R30,R24
	adc R31,R25
	ldd R24,z+0
	ldd R25,z+1
	cpi R24,90
	ldi R30,0
	cpc R25,R30
	brne L150
	.dbline 204
; 			      {
	.dbline 205
; 			          if(pannel_led[i].state!=acked)                            //未应答
	ldi R24,20
	mul R24,R10
	movw R30,R0
	ldi R24,<_pannel_led+13
	ldi R25,>_pannel_led+13
	add R30,R24
	adc R31,R25
	ldd R24,z+0
	cpi R24,2
	breq L153
	.dbline 206
; 		              {
	.dbline 207
; 		              pannel_led[i].current_state = noack;
	ldi R24,20
	mul R24,R10
	movw R30,R0
	ldi R24,<_pannel_led+14
	ldi R25,>_pannel_led+14
	add R30,R24
	adc R31,R25
	ldi R24,1
	std z+0,R24
	.dbline 208
; 		              }
	xjmp L148
L153:
	.dbline 210
; 		              else
; 		              {
	.dbline 211
; 		              pannel_led[i].current_state = acked;                          //已应答
	ldi R24,20
	mul R24,R10
	movw R30,R0
	ldi R24,<_pannel_led+14
	ldi R25,>_pannel_led+14
	add R30,R24
	adc R31,R25
	ldi R24,2
	std z+0,R24
	.dbline 212
; 		              }
	.dbline 213
; 			      }
	xjmp L148
L150:
	.dbline 214
; 				  else if(pannel_led[i].data == off)
	ldi R24,20
	mul R24,R10
	movw R30,R0
	ldi R24,<_pannel_led+11
	ldi R25,>_pannel_led+11
	add R30,R24
	adc R31,R25
	ldd R24,z+0
	ldd R25,z+1
	cpi R24,165
	ldi R30,0
	cpc R25,R30
	breq X12
	xjmp L148
X12:
	.dbline 215
; 				  {
	.dbline 216
; 				      pannel_led[i].current_state = normal;                      //正常
	ldi R24,20
	mul R24,R10
	movw R30,R0
	ldi R24,<_pannel_led+14
	ldi R25,>_pannel_led+14
	add R30,R24
	adc R31,R25
	clr R2
	std z+0,R2
	.dbline 217
; 				  }
	.dbline 218
; 	         }
	xjmp L148
L147:
	.dbline 220
; 	         else                                                               //断开报警
; 	         {
	.dbline 221
; 	              if(pannel_led[i].data ==off)
	ldi R24,20
	mul R24,R10
	movw R30,R0
	ldi R24,<_pannel_led+11
	ldi R25,>_pannel_led+11
	add R30,R24
	adc R31,R25
	ldd R24,z+0
	ldd R25,z+1
	cpi R24,165
	ldi R30,0
	cpc R25,R30
	brne L162
	.dbline 222
; 			      {
	.dbline 223
; 			          if(pannel_led[i].state!=acked)                            //未应答
	ldi R24,20
	mul R24,R10
	movw R30,R0
	ldi R24,<_pannel_led+13
	ldi R25,>_pannel_led+13
	add R30,R24
	adc R31,R25
	ldd R24,z+0
	cpi R24,2
	breq L165
	.dbline 224
; 		              {
	.dbline 225
; 		              pannel_led[i].current_state = noack;
	ldi R24,20
	mul R24,R10
	movw R30,R0
	ldi R24,<_pannel_led+14
	ldi R25,>_pannel_led+14
	add R30,R24
	adc R31,R25
	ldi R24,1
	std z+0,R24
	.dbline 226
; 		              }
	xjmp L163
L165:
	.dbline 228
; 		              else
; 		              {
	.dbline 229
; 		              pannel_led[i].current_state = acked;                          //已应答
	ldi R24,20
	mul R24,R10
	movw R30,R0
	ldi R24,<_pannel_led+14
	ldi R25,>_pannel_led+14
	add R30,R24
	adc R31,R25
	ldi R24,2
	std z+0,R24
	.dbline 230
; 		              }
	.dbline 231
; 			      }
	xjmp L163
L162:
	.dbline 232
; 				  else if(pannel_led[i].data == on)
	ldi R24,20
	mul R24,R10
	movw R30,R0
	ldi R24,<_pannel_led+11
	ldi R25,>_pannel_led+11
	add R30,R24
	adc R31,R25
	ldd R24,z+0
	ldd R25,z+1
	cpi R24,90
	ldi R30,0
	cpc R25,R30
	brne L170
	.dbline 233
; 				  {
	.dbline 234
; 				      pannel_led[i].current_state = normal;                      //正常
	ldi R24,20
	mul R24,R10
	movw R30,R0
	ldi R24,<_pannel_led+14
	ldi R25,>_pannel_led+14
	add R30,R24
	adc R31,R25
	clr R2
	std z+0,R2
	.dbline 235
; 				  }
L170:
L163:
	.dbline 236
; 	        }
L148:
	.dbline 237
;         }
L144:
	.dbline 238
;    }  
L137:
L88:
L37:
	.dbline 240
L33:
	.dbline 75
	inc R10
L35:
	.dbline 75
	mov R24,R10
	cpi R24,48
	brsh X13
	xjmp L32
X13:
	.dbline 241
;    
;    }
;    WDR();
	wdr
	.dbline -2
L31:
	xcall pop_gset3
	.dbline 0 ; func end
	ret
	.dbsym r temp2 20 i
	.dbsym r temp1 22 i
	.dbsym r i 10 c
	.dbend
	.area lit(rom, con, rel)
L9:
	.word 0x0,0x4700
L6:
	.word 0x0,0x4080
L5:
	.word 0x0,0x4180
L4:
	.word 0x0,0x42c8
L3:
	.word 0x0,0x4000

⌨️ 快捷键说明

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