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

📄 display.s

📁 LED显示面板
💻 S
📖 第 1 页 / 共 3 页
字号:
	.dbline 148
; 	  else                                             //有闭锁则不输出
; 	  {
	.dbline 149
; 	    d&= ~(1<<i);                                   
	ldi R16,1
	mov R17,R12
	xcall lsl8
	mov R2,R16
	com R2
	and R10,R2
	.dbline 150
;         dd&= ~(1<<i); 
	ldi R16,1
	mov R17,R12
	xcall lsl8
	mov R2,R16
	com R2
	and R22,R2
	.dbline 151
; 	  }
	.dbline 152
;    }
	xjmp L89
L88:
	.dbline 153
;   else if(pannel_led[j*8+i].state==normal)             //正常显示
	ldi R24,8
	mul R24,R20
	mov R17,R0
	add R17,R12
	ldi R16,20
	muls R16,R17
	movw R30,R0
	ldi R24,<_pannel_led+13
	ldi R25,>_pannel_led+13
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	tst R2
	brne L94
	.dbline 154
;   {
	.dbline 155
;     d&= ~(1<<i);                                   
	ldi R16,1
	mov R17,R12
	xcall lsl8
	mov R2,R16
	com R2
	and R10,R2
	.dbline 156
;    dd&= ~(1<<i); 
	ldi R16,1
	mov R17,R12
	xcall lsl8
	mov R2,R16
	com R2
	and R22,R2
	.dbline 157
;    }
	xjmp L95
L94:
	.dbline 158
;   else if(pannel_led[j*8+i].state==acked)              //应答显示
	ldi R24,8
	mul R24,R20
	mov R17,R0
	add R17,R12
	ldi R16,20
	muls R16,R17
	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
	brne L97
	.dbline 159
;   {
	.dbline 161
;   
;     if(pannel_led[j*8+i].cut_off==off)  
	ldi R24,8
	mul R24,R20
	mov R17,R0
	add R17,R12
	muls R16,R17
	movw R30,R0
	ldi R24,<_pannel_led+16
	ldi R25,>_pannel_led+16
	add R30,R24
	adc R31,R25
	ldd R24,z+0
	cpi R24,165
	brne L100
	.dbline 162
;      {
	.dbline 163
; 	  d|=(1<<i);  
	ldi R16,1
	mov R17,R12
	xcall lsl8
	or R10,R16
	.dbline 164
;       dd|= (1<<i); 
	ldi R16,1
	mov R17,R12
	xcall lsl8
	or R22,R16
	.dbline 165
; 	  }
	xjmp L98
L100:
	.dbline 167
; 	 else
; 	 {
	.dbline 168
; 	    d&= ~(1<<i);                                   
	ldi R16,1
	mov R17,R12
	xcall lsl8
	mov R2,R16
	com R2
	and R10,R2
	.dbline 169
;         dd&= ~(1<<i); 
	ldi R16,1
	mov R17,R12
	xcall lsl8
	mov R2,R16
	com R2
	and R22,R2
	.dbline 170
; 	 } 
	.dbline 171
;   }
	xjmp L98
L97:
	.dbline 172
;   else if(pannel_led[j*8+i].state==fault)              //故障显示
	ldi R24,8
	mul R24,R20
	mov R17,R0
	add R17,R12
	ldi R16,20
	muls R16,R17
	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,3
	brne L103
	.dbline 173
;   {
	.dbline 174
;   if(pannel_led[j*8+i].cut_off==off)
	ldi R24,8
	mul R24,R20
	mov R17,R0
	add R17,R12
	muls R16,R17
	movw R30,R0
	ldi R24,<_pannel_led+16
	ldi R25,>_pannel_led+16
	add R30,R24
	adc R31,R25
	ldd R24,z+0
	cpi R24,165
	brne L106
	.dbline 175
;   {
	.dbline 176
;     d|=(1<<i);
	ldi R16,1
	mov R17,R12
	xcall lsl8
	or R10,R16
	.dbline 177
;     dd&= ~(1<<i);
	ldi R16,1
	mov R17,R12
	xcall lsl8
	mov R2,R16
	com R2
	and R22,R2
	.dbline 178
;    }
	xjmp L107
L106:
	.dbline 180
;    else
;    {
	.dbline 181
;      d&= ~(1<<i);                                   
	ldi R16,1
	mov R17,R12
	xcall lsl8
	mov R2,R16
	com R2
	and R10,R2
	.dbline 182
;      dd&= ~(1<<i); 
	ldi R16,1
	mov R17,R12
	xcall lsl8
	mov R2,R16
	com R2
	and R22,R2
	.dbline 183
;    }
L107:
	.dbline 184
;   }
L103:
L98:
L95:
L89:
	.dbline 185
L85:
	.dbline 138
	inc R12
L87:
	.dbline 138
	mov R24,R12
	cpi R24,8
	brsh X2
	xjmp L84
X2:
	.dbline 186
	wdr
	.dbline 187
	lds R2,_T1
	std y+2,R2
	std y+0,R22
	mov R18,R10
	mov R16,R20
	xcall _led_on
	.dbline 189
L81:
	.dbline 134
	inc R20
L83:
	.dbline 134
	cpi R20,6
	brsh X3
	xjmp L80
X3:
	.dbline -2
L79:
	adiw R28,3
	xcall pop_gset4
	.dbline 0 ; func end
	ret
	.dbsym r dd 22 c
	.dbsym r d 10 c
	.dbsym r j 20 c
	.dbsym r i 12 c
	.dbend
	.dbfunc e turn_display _turn_display fV
;             t4 -> R22
;             t3 -> R12
;             t5 -> R20,R21
;             t2 -> R10
;             t1 -> R14
;           data -> y+17
;     point_flag -> y+15
;        channel -> y+13
	.even
_turn_display::
	xcall push_arg4
	xcall push_gset5
	sbiw R28,3
	.dbline -1
	.dbline 195
;  }
;  WDR();
;  led_on(j,d,dd,T1);
;  
; }
; }
; 
; 
; 
; void turn_display(unsigned char channel,unsigned char point_flag,unsigned int data)
; {
	.dbline 198
; unsigned char t1,t2,t3,t4;
; unsigned int t5;
; if( pannel_led[channel].alarm_type==above)
	ldi R24,20
	ldd R0,y+13
	mul R24,R0
	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 X4
	xjmp L110
X4:
	.dbline 199
; {
	.dbline 200
;  if( (pannel_led[channel].state==noack)||(pannel_led[channel].state==acked))    //上限报警指示
	ldi R24,20
	ldd R0,y+13
	mul R24,R0
	ldi R24,<_pannel_led+13
	ldi R25,>_pannel_led+13
	movw R30,R0
	add R30,R24
	adc R31,R25
	ldd R24,z+0
	cpi R24,1
	breq L117
	ldi R24,<_pannel_led+13
	ldi R25,>_pannel_led+13
	movw R30,R0
	add R30,R24
	adc R31,R25
	ldd R24,z+0
	cpi R24,2
	brne L113
L117:
	.dbline 201
;    {
	.dbline 202
;    PORTD |= 0x01;
	sbi 0xb,0
	.dbline 203
;    PORTD &= 0x7f;
	in R24,0xb
	andi R24,127
	out 0xb,R24
	.dbline 204
;    }
	xjmp L111
L113:
	.dbline 205
;   else if(pannel_led[channel].state==normal)                                   //通道正常指示
	ldi R24,20
	ldd R0,y+13
	mul R24,R0
	movw R30,R0
	ldi R24,<_pannel_led+13
	ldi R25,>_pannel_led+13
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	tst R2
	brne L118
	.dbline 206
;   {
	.dbline 207
;   PORTD&=0x7e;
	in R24,0xb
	andi R24,126
	out 0xb,R24
	.dbline 208
;     }
	xjmp L111
L118:
	.dbline 209
;   else if(pannel_led[channel].state==fault)                                   //传感器故障指示
	ldi R24,20
	ldd R0,y+13
	mul R24,R0
	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,3
	breq X5
	xjmp L111
X5:
	.dbline 210
;  {
	.dbline 211
;  PORTD |= 0x03;
	in R24,0xb
	ori R24,3
	out 0xb,R24
	.dbline 212
;  PORTD &= 0x7f;
	in R24,0xb
	andi R24,127
	out 0xb,R24
	.dbline 213
;    }	
	.dbline 214
;   }
	xjmp L111
L110:
	.dbline 215
;  else if(pannel_led[channel].alarm_type==below)                              //下限报警指示
	ldi R24,20
	ldd R0,y+13
	mul R24,R0
	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 X6
	xjmp L124
X6:
	.dbline 216
;  {
	.dbline 217
;    if((pannel_led[channel].state==noack)||(pannel_led[channel].state==acked))
	ldi R24,20
	ldd R0,y+13
	mul R24,R0
	ldi R24,<_pannel_led+13
	ldi R25,>_pannel_led+13
	movw R30,R0
	add R30,R24
	adc R31,R25
	ldd R24,z+0
	cpi R24,1
	breq L131
	ldi R24,<_pannel_led+13
	ldi R25,>_pannel_led+13
	movw R30,R0
	add R30,R24
	adc R31,R25
	ldd R24,z+0
	cpi R24,2
	brne L127
L131:
	.dbline 218
;    {
	.dbline 219
;    PORTD |= 0x02;
	sbi 0xb,1
	.dbline 220
;     PORTD &= 0x7f;
	in R24,0xb
	andi R24,127
	out 0xb,R24
	.dbline 221
;    }
	xjmp L128
L127:
	.dbline 222
;   else if(pannel_led[channel].state==normal)                                //正常指示
	ldi R24,20
	ldd R0,y+13
	mul R24,R0
	movw R30,R0
	ldi R24,<_pannel_led+13
	ldi R25,>_pannel_led+13
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	tst R2
	brne L132
	.dbline 223
;   {
	.dbline 224
;   PORTD&=0xfd;
	in R24,0xb
	andi R24,253
	out 0xb,R24
	.dbline 225
;     }
	xjmp L133
L132:
	.dbline 226
;   else if(pannel_led[channel].state==fault)                                 //传感器指示
	ldi R24,20
	ldd R0,y+13
	mul R24,R0
	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,3
	brne L135
	.dbline 227
;  {
	.dbline 228
;   PORTD |= 0x03;
	in R24,0xb
	ori R24,3
	out 0xb,R24
	.dbline 229
;   PORTD &= 0x7f;
	in R24,0xb
	andi R24,127
	out 0xb,R24
	.dbline 230
;  }	
L135:
L133:
L128:
	.dbline 231
;   }
L124:
L111:
	.dbline 234
;  
; 
; t1 = channel/10;                                                          //通道号显示
	ldi R17,10
	ldd R16,y+13
	xcall div8u
	mov R14,R16
	.dbline 235
; t2 = channel%10;
	ldi R17,10
	ldd R16,y+13
	xcall mod8u
	mov R10,R16
	.dbline 236
; if(!t1)
	tst R14
	brne L138
	.dbline 237
; led7_display(12,0,0,1);
	ldi R24,1
	std y+2,R24
	clr R2
	std y+0,R2
	clr R18
	ldi R16,12
	xcall _led7_display
	xjmp L139
L138:
	.dbline 239
; else
; led7_display(t1,0,0,1);
	ldi R24,1
	std y+2,R24
	clr R2
	std y+0,R2
	clr R18
	mov R16,R14
	xcall _led7_display
L139:
	.dbline 241
; 
; led7_display(t2,1,0,1);
	ldi R24,1
	std y+2,R24
	clr R2
	std y+0,R2
	ldi R18,1
	mov R16,R10
	xcall _led7_display
	.dbline 242
; if(pannel_led[channel].state!=fault)
	ldi R24,20
	ldd R0,y+13
	mul R24,R0
	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,3
	brne X7
	xjmp L140
X7:
	.dbline 243
; {
	.dbline 244
;   WDR();
	wdr
	.dbline 245
;   if(pannel_led[channel].sen_typed!=sw)                               //模拟量数值显示
	ldi R24,20
	ldd R0,y+13
	mul R24,R0
	movw R30,R0
	ldi R24,<_pannel_led
	ldi R25,>_pannel_led
	add R30,R24
	adc R31,R25
	ldd R24,z+0
	cpi R24,3
	brne X8
	xjmp L143
X8:
	.dbline 246
;   {    
	.dbline 247
;     if(point_flag == 1)
	ldd R24,y+15
	cpi R24,1
	breq X9
	xjmp L145
X9:
	.dbline 248
;     {
	.dbline 249
;       CLI();
	cli
	.dbline 250
; 	  WDR();
	wdr
	.dbline 251
;       t5 = data;
	ldd R20,y+17
	ldd R21,y+18
	.dbline 252
;       t1 = t5/1000;
	ldi R18,1000
	ldi R19,3
	movw R16,R20
	xcall div16u
	mov R14,R16
	.dbline 253
;       t2 = (t5%1000)/100;
	ldi R18,1000
	ldi R19,3
	movw R16,R20
	xcall mod16u
	ldi R18,100
	ldi R19,0
	xcall div16u
	mov R10,R16
	.dbline 254
;       t3 = ((t5%1000)%100)/10;
	ldi R18,1000
	ldi R19,3
	movw R16,R20
	xcall mod16u
	ldi R18,100
	ldi R19,0
	xcall mod16u
	ldi R18,10
	ldi R19,0
	xcall div16u
	mov R12,R16
	.dbline 255
;       t4 = ((t5%1000)%100)%10;
	ldi R18,1000
	ldi R19,3
	movw R16,R20
	xcall mod16u
	ldi R18,100
	ldi R19,0
	xcall mod16u
	ldi R18,10
	ldi R19,0
	xcall mod16u
	mov R22,R16
	.dbline 256
;       if(t1)
	tst R14
	breq L147
	.dbline 257
; 	  {
	.dbline 258
;   	    led7_display(t1,2,0,1);
	ldi R24,1
	std y+2,R24
	clr R2
	std y+0,R2
	ldi R18,2
	mov R16,R14
	xcall _led7_display
	.dbline 259
;   	    led7_display(t2,3,0,1);
	ldi R24,1
	std y+2,R24
	clr R2
	std y+0,R2
	ldi R18,3
	mov R16,R10
	xcall _led7_display
	.dbline 260
;    		led7_display(t3,4,1,1);
	ldi R24,1
	std y+2,R24
	std y+0,R24
	ldi R18,4
	mov R16,R12
	xcall _led7_display
	.dbline 261
;    		led7_display(t4,5,0,1);
	ldi R24,1
	std y+2,R24
	clr R2
	std y+0,R2
	ldi R18,5
	mov R16,R22
	xcall _led7_display
	.dbline 262
;  				 }
	xjmp L148
L147:

⌨️ 快捷键说明

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