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

📄 gb.s

📁 应8位机计算电网无功量并自动投切电容,横好用的
💻 S
📖 第 1 页 / 共 5 页
字号:
	ldi R24,14
	out 0x21,R24
	.dbline -2
L63:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e timer2_init _timer2_init fV
	.even
_timer2_init::
	.dbline -1
	.dbline 277
; }
; 
; //TIMER2 initialize - prescale:1024
; // WGM: Normal
; // desired value: 30mSec
; // actual value: 29.952mSec (0.2%)
; void timer2_init(void)
; {
	.dbline 278
;  TCCR2 = 0x00; //stop
	clr R2
	out 0x25,R2
	.dbline 279
;  TCNT2 = 0x16; //setup
	ldi R24,22
	out 0x24,R24
	.dbline 280
;  OCR2  = 0xEA;
	ldi R24,234
	out 0x23,R24
	.dbline 281
;  TCCR2 = 0x05; //start
	ldi R24,5
	out 0x25,R24
	.dbline -2
L64:
	.dbline 0 ; func end
	ret
	.dbend
	.area vector(rom, abs)
	.org 40
	jmp _timer2_ovf_isr
	.area text(rom, con, rel)
	.dbfile C:\硬件ddb\功补\allinone\GB.C
	.dbfunc e timer2_ovf_isr _timer2_ovf_isr fV
;             k3 -> <dead>
;             k2 -> <dead>
;          zznum -> <dead>
;             i2 -> <dead>
;        temppha -> y+12
;         tphase -> R10
;          tempi -> y+8
;          tempu -> y+4
;         tempui -> y+0
;             t1 -> R12
;          errzs -> R12
;             k1 -> R10
;             i3 -> R10
;             i1 -> R14
	.even
_timer2_ovf_isr::
	xcall push_lset
	xcall push_gset5
	sbiw R28,16
	.dbline -1
	.dbline 286
; }
; 
; #pragma interrupt_handler timer2_ovf_isr:11
; void timer2_ovf_isr(void)
; {
	.dbline 290
; 
;  unsigned char i1,i2,i3,zznum,tphase,k1,k2,k3,t1,errzs;
;  unsigned long int temppha,tempui,tempu,tempi;
;  tempi=tempu=0;
	ldi R20,0
	ldi R21,0
	ldi R22,0
	ldi R23,0
	movw R30,R28
	std z+4,R20
	std z+5,R21
	std z+6,R22
	std z+7,R23
	ldi R20,0
	ldi R21,0
	ldi R22,0
	ldi R23,0
	movw R30,R28
	std z+8,R20
	std z+9,R21
	std z+10,R22
	std z+11,R23
	.dbline 291
;  temppha=tempui=0;
	ldi R20,0
	ldi R21,0
	ldi R22,0
	ldi R23,0
	movw R30,R28
	std z+0,R20
	std z+1,R21
	std z+2,R22
	std z+3,R23
	ldi R20,0
	ldi R21,0
	ldi R22,0
	ldi R23,0
	movw R30,R28
	std z+12,R20
	std z+13,R21
	std z+14,R22
	std z+15,R23
	.dbline 293
; 
;  TCNT2 = 0x16; //reload counter value
	ldi R24,22
	out 0x24,R24
	.dbline 295
;  //WDR();
;  count++;
	ldi R20,1
	ldi R21,0
	ldi R22,0
	ldi R23,0
	lds R4,_count+2
	lds R5,_count+2+1
	lds R2,_count
	lds R3,_count+1
	add R2,R20
	adc R3,R21
	adc R4,R22
	adc R5,R23
	sts _count+1,R3
	sts _count,R2
	sts _count+2+1,R5
	sts _count+2,R4
	.dbline 296
;  inDL();
	xcall _inDL
	.dbline 298
;  
;  be11=be10;be21=be20;be31=be30;be41=be40;
	lds R2,_be10
	sts _be11,R2
	.dbline 298
	lds R2,_be20
	sts _be21,R2
	.dbline 298
	lds R2,_be30
	sts _be31,R2
	.dbline 298
	lds R2,_be40
	sts _be41,R2
	.dbline 300
;  
;  if((count&0x01)==1)
	ldi R20,1
	ldi R21,0
	ldi R22,0
	ldi R23,0
	lds R4,_count+2
	lds R5,_count+2+1
	lds R2,_count
	lds R3,_count+1
	and R2,R20
	and R3,R21
	and R4,R22
	and R5,R23
	ldi R20,1
	ldi R21,0
	ldi R22,0
	ldi R23,0
	cp R2,R20
	cpc R3,R21
	cpc R4,R22
	cpc R5,R23
	brne L66
	.dbline 301
;  { 
	.dbline 302
;   PORTB^=(1<<7);
	ldi R24,128
	ldi R25,0
	in R2,0x18
	clr R3
	eor R2,R24
	eor R3,R25
	out 0x18,R2
	.dbline 303
;   yubei0=checkyb();
	xcall _checkyb
	sts _yubei0,R16
	.dbline 304
;  }
	xjmp L67
L66:
	.dbline 306
;  else
;  {
	.dbline 307
;   yubei=yubei0&checkyb();
	xcall _checkyb
	lds R2,_yubei0
	and R2,R16
	sts _yubei,R2
	.dbline 308
;  }
L67:
	.dbline 310
;   
;  pfcz[0].he=PORTC&0X01;       pfcz[1].he=(PORTC&0X02)>>1;
	in R24,0x15
	andi R24,1
	sts _pfcz+1,R24
	.dbline 310
	in R24,0x15
	andi R24,2
	lsr R24
	sts _pfcz+8+1,R24
	.dbline 311
;  pfcz[2].he=(PORTC&0X04)>>2;  pfcz[3].he=(PORTC&0X08)>>3;
	in R24,0x15
	andi R24,4
	lsr R24
	lsr R24
	sts _pfcz+16+1,R24
	.dbline 311
	in R24,0x15
	andi R24,8
	lsr R24
	lsr R24
	lsr R24
	sts _pfcz+24+1,R24
	.dbline 313
;  
;  ovclk++;
	lds R24,_ovclk
	lds R25,_ovclk+1
	adiw R24,1
	sts _ovclk+1,R25
	sts _ovclk,R24
	.dbline 314
;  if( ov10+ov20+ov30+ov40)
	lds R2,_ov20
	lds R3,_ov10
	add R3,R2
	lds R2,_ov30
	add R3,R2
	lds R2,_ov40
	add R3,R2
	brne X4
	xjmp L75
X4:
	.dbline 315
;    {
	.dbline 316
; 	 ovky++;
	lds R24,_ovky
	subi R24,255    ; addi 1
	sts _ovky,R24
	.dbline 317
; 	 if(ov10) ov1count++;
	lds R2,_ov10
	tst R2
	breq L77
	.dbline 317
	lds R24,_ov1count
	lds R25,_ov1count+1
	adiw R24,1
	sts _ov1count+1,R25
	sts _ov1count,R24
L77:
	.dbline 318
; 	 if(ov20) ov2count++;
	lds R2,_ov20
	tst R2
	breq L79
	.dbline 318
	lds R24,_ov2count
	lds R25,_ov2count+1
	adiw R24,1
	sts _ov2count+1,R25
	sts _ov2count,R24
L79:
	.dbline 319
; 	 if(ov30) ov3count++;
	lds R2,_ov30
	tst R2
	breq L81
	.dbline 319
	lds R24,_ov3count
	lds R25,_ov3count+1
	adiw R24,1
	sts _ov3count+1,R25
	sts _ov3count,R24
L81:
	.dbline 320
; 	 if(ov40) ov4count++;
	lds R2,_ov40
	tst R2
	breq L83
	.dbline 320
	lds R24,_ov4count
	lds R25,_ov4count+1
	adiw R24,1
	sts _ov4count+1,R25
	sts _ov4count,R24
L83:
	.dbline 321
; 	 if((ov10+ov20+ov30+ov40)<4)
	lds R2,_ov20
	lds R24,_ov10
	add R24,R2
	lds R2,_ov30
	add R24,R2
	lds R2,_ov40
	add R24,R2
	cpi R24,4
	brsh L85
	.dbline 322
; 	    { 
	.dbline 323
; 	     ovky=1;
	ldi R24,1
	sts _ovky,R24
	.dbline 324
; 	     ovclk=1;
	clr R25
	sts _ovclk+1,R25
	sts _ovclk,R24
	.dbline 325
; 	    }
L85:
	.dbline 326
; 	 }
L75:
	.dbline 329
; 	
; 
; if((ovclk==ovzq)&&(ovky>1))
	lds R24,_ovclk
	lds R25,_ovclk+1
	cpi R24,120
	ldi R30,0
	cpc R25,R30
	breq X5
	xjmp L87
X5:
	ldi R24,1
	lds R2,_ovky
	cp R24,R2
	brlo X6
	xjmp L87
X6:
	.dbline 330
; {
	.dbline 331
	lds R2,_ov10
	tst R2
	breq L89
	lds R2,_ovclk
	lds R3,_ovclk+1
	lsr R3
	ror R2
	lds R4,_ov1count
	lds R5,_ov1count+1
	cp R2,R4
	cpc R3,R5
	brsh L89
	.dbline 331
	.dbline 331
	sts _pfcz+4,R24
	.dbline 331
	sts _ovky2,R24
	.dbline 331
	clr R25
	sts _ovclk2+1,R25
	sts _ovclk2,R24
	.dbline 331
	xjmp L90
L89:
	.dbline 331
;  if((ov10)&&(ov1count>(ovclk>>1))) {pfcz[0].ov=1;ovky2=1;ovclk2=1;} else pfcz[0].ov=0;
	clr R2
	sts _pfcz+4,R2
L90:
	.dbline 332
	lds R2,_ov20
	tst R2
	breq L93
	lds R2,_ovclk
	lds R3,_ovclk+1
	lsr R3
	ror R2
	lds R4,_ov2count
	lds R5,_ov2count+1
	cp R2,R4
	cpc R3,R5
	brsh L93
	.dbline 332
	.dbline 332
	ldi R24,1
	sts _pfcz+8+4,R24
	.dbline 332
	sts _ovky2,R24
	.dbline 332
	clr R25
	sts _ovclk2+1,R25
	sts _ovclk2,R24
	.dbline 332
	xjmp L94
L93:
	.dbline 332
;  if((ov20)&&(ov2count>(ovclk>>1))) {pfcz[1].ov=1;ovky2=1;ovclk2=1;} else pfcz[1].ov=0;
	clr R2
	sts _pfcz+8+4,R2
L94:
	.dbline 333
	lds R2,_ov30
	tst R2
	breq L99
	lds R2,_ovclk
	lds R3,_ovclk+1
	lsr R3
	ror R2
	lds R4,_ov3count
	lds R5,_ov3count+1
	cp R2,R4
	cpc R3,R5
	brsh L99
	.dbline 333
	.dbline 333
	ldi R24,1
	sts _pfcz+16+4,R24
	.dbline 333
	sts _ovky2,R24
	.dbline 333
	clr R25
	sts _ovclk2+1,R25
	sts _ovclk2,R24
	.dbline 333
	xjmp L100
L99:
	.dbline 333
;  if((ov30)&&(ov3count>(ovclk>>1))) {pfcz[2].ov=1;ovky2=1;ovclk2=1;} else pfcz[2].ov=0;
	clr R2
	sts _pfcz+16+4,R2
L100:
	.dbline 334
	lds R2,_ov40
	tst R2
	breq L105
	lds R2,_ovclk
	lds R3,_ovclk+1
	lsr R3
	ror R2
	lds R4,_ov4count
	lds R5,_ov4count+1
	cp R2,R4
	cpc R3,R5
	brsh L105
	.dbline 334
	.dbline 334
	ldi R24,1
	sts _pfcz+24+4,R24
	.dbline 334
	sts _ovky2,R24
	.dbline 334
	clr R25
	sts _ovclk2+1,R25
	sts _ovclk2,R24
	.dbline 334
	xjmp L106
L105:
	.dbline 334
;  if((ov40)&&(ov4count>(ovclk>>1))) {pfcz[3].ov=1;ovky2=1;ovclk2=1;} else pfcz[3].ov=0;
	clr R2
	sts _pfcz+24+4,R2
L106:
	.dbline 335
;  ov1count=ov2count=ov3count=ov4count=0;
	clr R2
	clr R3
	sts _ov4count+1,R3
	sts _ov4count,R2
	sts _ov3count+1,R3
	sts _ov3count,R2
	sts _ov2count+1,R3
	sts _ov2count,R2
	sts _ov1count+1,R3
	sts _ov1count,R2
	.dbline 336
;  ovclk=0; ovky=0;
	sts _ovclk+1,R3
	sts _ovclk,R2
	.dbline 336
	sts _ovky,R2
	.dbline 337
;  } 
L87:
	.dbline 339
;  
;  if(ovky2==1) ovclk2++;
	lds R24,_ovky2
	cpi R24,1
	brne L111
	.dbline 339
	lds R24,_ovclk2
	lds R25,_ovclk2+1
	adiw R24,1
	sts _ovclk2+1,R25
	sts _ovclk2,R24
L111:
	.dbline 340
;  if((ovclk2==ovzq)&&(ovky2==1))
	lds R24,_ovclk2
	lds R25,_ovclk2+1
	cpi R24,120
	ldi R30,0
	cpc R25,R30
	brne L113
	lds R24,_ovky2
	cpi R24,1
	brne L113
	.dbline 341
;  {
	.dbline 342
;   ovky2=0;
	clr R2
	sts _ovky2,R2
	.dbline 343
;   ovclk2=0;
	clr R3
	sts _ovclk2+1,R3
	sts _ovclk2,R2
	.dbline 344
;   if(ov10==0)   pfcz[0].ov=0;
	lds R2,_ov10
	tst R2
	brne L115
	.dbline 344
	clr R2
	sts _pfcz+4,R2
L115:
	.dbline 345
;   if(ov20==0)   pfcz[1].ov=0;
	lds R2,_ov20
	tst R2
	brne L118
	.dbline 345
	clr R2
	sts _pfcz+8+4,R2
L118:
	.dbline 346
;   if(ov30==0)   pfcz[2].ov=0;
	lds R2,_ov30
	tst R2
	brne L122
	.dbline 346
	clr R2
	sts _pfcz+16+4,R2
L122:
	.dbline 347
;   if(ov40==0)   pfcz[3].ov=0;
	lds R2,_ov40
	tst R2
	brne L126
	.dbline 347
	clr R2
	sts _pfcz+24+4,R2
L126:
	.dbline 348
;  }
L113:
	.dbline 352
; 	 
; 		    
; 		   
;   if(pfcz[0].ov+pfcz[1].ov+pfcz[2].ov+pfcz[3].ov>=2)
	lds R2,_pfcz+8+4
	lds R24,_pfcz+4
	add R24,R2
	lds R2,_pfcz+16+4
	add R24,R2
	lds R2,_pfcz+24+4
	add R24,R2
	cpi R24,2
	brlo L130
	.dbline 353
;      { 
	.dbline 354
; 	   cutpulse=0; 
	clr R2
	sts _cutpulse,R2
	.dbline 355
; 	   PORTC &=0X0F0;
	in R24,0x15
	andi R24,240
	out 0x15,R24
	.dbline 356
; 	   for(k1=0;k1<=3;k1++)
	clr R10
	xjmp L142
L139:
	.dbline 357
	ldi R24,8
	mul R24,R10
	movw R30,R0
	ldi R24,<_pfcz+1
	ldi R25,>_pfcz+1
	add R30,R24
	adc R31,R25
	clr R2
	std z+0,R2
L140:
	.dbline 356
	inc R10
L142:
	.dbline 356
	ldi R24,3
	cp R24,R10
	brsh L139
	.dbline 358
; 	   pfcz[k1].he=0;
; 	   return ;
	xjmp L65
L130:
	.dbline 362
; 	}
;    
;    	      
; 		   if(pfcz[0].ov==1)
	lds R24,_pfcz+4
	cpi R24,1
	brne L144
	.dbline 363
; 		     {zzcode=0xEf;pfcz[0].zznum++;pfcz[0].zzco=1;t1=1;clrout(1); PORTB|=(1<<6);} 
	.dbline 363
	ldi R24,239
	sts _zzcode,R24
	.dbline 363
	lds R24,_pfcz+5
	subi R24,255    ; addi 1
	sts _pfcz+5,R24
	.dbline 363
	ldi R24,1
	sts _pfcz+6,R24
	.dbline 363
	clr R12
	inc R12
	.dbline 363
	ldi R16,1
	xcall _clrout
	.dbline 363
	sbi 0x18,6
	.dbline 363
L144:
	.dbline 364
; 		   if(pfcz[1].ov==1)
	lds R24,_pfcz+8+4
	cpi R24,1
	brne L149
	.dbline 365
; 		     {zzcode=0x0Df;pfcz[1].zznum++;pfcz[1].zzco=1;t1=2;clrout(2);PORTB|=(1<<6);}
	.dbline 365
	ldi R24,223
	sts _zzcode,R24
	.dbline 365
	lds R24,_pfcz+8+5
	subi R24,255    ; addi 1
	sts _pfcz+8+5,R24
	.dbline 365
	ldi R24,1
	sts _pfcz+8+6,R24
	.dbline 365
	ldi R24,2
	mov R12,R24
	.dbline 365
	ldi R16,2
	xcall _clrout
	.dbline 365
	sbi 0x18,6
	.dbline 365
L149:
	.dbline 366
; 		   if(pfcz[2].ov==1)
	lds R24,_pfcz+16+4
	cpi R24,1
	brne L157
	.dbline 367
; 		     {zzcode=0x0Bf;pfcz[2].zznum++;pfcz[2].zzco=1;t1=3;clrout(3);PORTB|=(1<<6);}
	.dbline 367
	ldi R24,191
	sts _zzcode,R24
	.dbline 367
	lds R24,_pfcz+16+5
	subi R24,255    ; addi 1
	sts _pfcz+16+5,R24
	.dbline 367
	ldi R24,1
	sts _pfcz+16+6,R24
	.dbline 367
	ldi R24,3
	mov R12,R24
	.dbline 367
	ldi R16,3
	xcall _clrout
	.dbline 367
	sbi 0x18,6
	.dbline 367
L157:
	.dbline 368
; 		   if(pfcz[3].ov==1)
	lds R24,_pfcz+24+4
	cpi R24,1
	brne L165
	.dbline 369
; 		     {zzcode=0x07f;pfcz[3].zznum++;pfcz[3].zzco=1;t1=4;clrout(4);PORTB|=(1<<6);}
	.dbline 369
	ldi R24,127
	sts _zzcode,R24
	.dbline 369
	lds R24,_pfcz+24+5
	subi R24,255    ; addi 1
	sts _pfcz+24+5,R24
	.dbline 369
	ldi R24,1
	sts _pfcz+24+6,R24
	.dbline 369
	ldi R24,4
	mov R12,R24
	.dbline 369
	ldi R16,4
	xcall _clrout
	.dbline 369
	sbi 0x18,6
	.dbline 369
L165:
	.dbline 372
; 	
; 	
; 		 inDL();
	xcall _inDL
	.dbline 373
; 		   if (be10&be11^pfcz[0].he)
	lds R2,_be11
	lds R3,_be10
	and R3,R2
	lds R2,_pfcz+1
	eor R3,R2
	breq L173
	.dbline 374
; 		    { 
	.dbline 375
; 			  if ((t1!=1)&&(t1!=0)&&(t1<5)) 
	mov R24,R12
	cpi R24,1
	breq L176
	tst R24
	breq L176
	cpi R24,5
	brsh L176
	.dbline 376
; 			   {  PORTC &=0X0F0;
	.dbline 376
	in R24,0x15
	andi R24,240
	out 0x15,R24
	.dbline 377
; 	              cutpulse=0;
	clr R2
	sts _cutpulse,R2
	.dbline 378
; 	              return ;
	xjmp L65
L176:
	.dbline 381
; 				}
; 			   else
; 			   {PORTB^=(1<<6);//DISP TO PLAT	  
	.dbline 381
	ldi R24,64
	in R2,0x18
	eor R2,R24
	out 0x18,R2
	.dbline 382
; 			    t1=1;
	clr R12

⌨️ 快捷键说明

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