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

📄 gb.s

📁 应8位机计算电网无功量并自动投切电容,横好用的
💻 S
📖 第 1 页 / 共 5 页
字号:
	inc R12
	.dbline 383
; 				clrout(1);
	ldi R16,1
	xcall _clrout
	.dbline 384
; 			    pfcz[0].zznum++; 
	lds R24,_pfcz+5
	subi R24,255    ; addi 1
	sts _pfcz+5,R24
	.dbline 385
; 			    if (be10) {zzcode=0x06f;pfcz[0].zzco=2;}
	lds R2,_be10
	tst R2
	breq L179
	.dbline 385
	.dbline 385
	ldi R24,111
	sts _zzcode,R24
	.dbline 385
	ldi R24,2
	sts _pfcz+6,R24
	.dbline 385
	xjmp L180
L179:
	.dbline 386
; 			    else      {zzcode=0x0Af;pfcz[0].zzco=3;}
	.dbline 386
	ldi R24,175
	sts _zzcode,R24
	.dbline 386
	ldi R24,3
	sts _pfcz+6,R24
	.dbline 386
L180:
	.dbline 387
; 		       }
	.dbline 388
; 			}   
L173:
	.dbline 391
; 		   
; 		   
; 		   if (be20&be21^pfcz[1].he) 
	lds R2,_be21
	lds R3,_be20
	and R3,R2
	lds R2,_pfcz+8+1
	eor R3,R2
	breq L183
	.dbline 392
; 		    {   
	.dbline 393
; 			  if ((t1!=2)&&(t1!=0)&&(t1<5)) 
	mov R24,R12
	cpi R24,2
	breq L187
	tst R24
	breq L187
	cpi R24,5
	brsh L187
	.dbline 394
; 			   { 
	.dbline 395
; 			      PORTC &=0X0F0;
	in R24,0x15
	andi R24,240
	out 0x15,R24
	.dbline 396
; 	              cutpulse=0;
	clr R2
	sts _cutpulse,R2
	.dbline 397
; 	              return ;
	xjmp L65
L187:
	.dbline 400
; 				}
; 			  else
; 			    {PORTB^=(1<<6); //DISP TO PLAT
	.dbline 400
	ldi R24,64
	in R2,0x18
	eor R2,R24
	out 0x18,R2
	.dbline 401
; 			     t1=2; 
	ldi R24,2
	mov R12,R24
	.dbline 402
; 				 clrout(2);                                    
	ldi R16,2
	xcall _clrout
	.dbline 403
; 			     pfcz[1].zznum++;                                     //1011 3ov                                                    //0111 4ov
	lds R24,_pfcz+8+5
	subi R24,255    ; addi 1
	sts _pfcz+8+5,R24
	.dbline 404
; 			     if(be20) {zzcode=0x5f;pfcz[1].zzco=2;}         //1110 1ov
	lds R2,_be20
	tst R2
	breq L191
	.dbline 404
	.dbline 404
	ldi R24,95
	sts _zzcode,R24
	.dbline 404
	ldi R24,2
	sts _pfcz+8+6,R24
	.dbline 404
	xjmp L192
L191:
	.dbline 405
; 		         else           {zzcode=0x9f;pfcz[1].zzco=3;}         //1101 2ov            
	.dbline 405
	ldi R24,159
	sts _zzcode,R24
	.dbline 405
	ldi R24,3
	sts _pfcz+8+6,R24
	.dbline 405
L192:
	.dbline 406
; 		        }
	.dbline 407
; 			 }
L183:
	.dbline 410
; 			
; 			                                                        //0110 be1 no pulse 
; 		   if (be30&be31^pfcz[2].he)                               //0101 be2 no pulse 
	lds R2,_be31
	lds R3,_be30
	and R3,R2
	lds R2,_pfcz+16+1
	eor R3,R2
	breq L197
	.dbline 411
; 		    {  
	.dbline 412
; 			   if ((t1!=3)&&(t1!=0)&&(t1<5)) 
	mov R24,R12
	cpi R24,3
	breq L201
	tst R24
	breq L201
	cpi R24,5
	brsh L201
	.dbline 413
; 			    {  PORTC &=0X0F0;
	.dbline 413
	in R24,0x15
	andi R24,240
	out 0x15,R24
	.dbline 414
; 	              cutpulse=0;
	clr R2
	sts _cutpulse,R2
	.dbline 415
; 	              return ;
	xjmp L65
L201:
	.dbline 418
; 				 }                                                     //0100 be3 no pulse
; 			   else
; 			   { PORTB^=(1<<6); //DISP TO PLAT
	.dbline 418
	ldi R24,64
	in R2,0x18
	eor R2,R24
	out 0x18,R2
	.dbline 419
; 			     t1=3;
	ldi R24,3
	mov R12,R24
	.dbline 420
; 			     pfcz[2].zznum++;
	lds R24,_pfcz+16+5
	subi R24,255    ; addi 1
	sts _pfcz+16+5,R24
	.dbline 421
; 			     clrout(3);                                                  //0000 be4 no pulse
	ldi R16,3
	xcall _clrout
	.dbline 422
;                  if(be30) {zzcode=0x04f;pfcz[2].zzco=2;}        //1010 pulse1 no be1
	lds R2,_be30
	tst R2
	breq L205
	.dbline 422
	.dbline 422
	ldi R24,79
	sts _zzcode,R24
	.dbline 422
	ldi R24,2
	sts _pfcz+16+6,R24
	.dbline 422
	xjmp L206
L205:
	.dbline 423
; 		         else    {zzcode=0x0Cf;pfcz[2].zzco=3;}               //1001 pulse2
	.dbline 423
	ldi R24,207
	sts _zzcode,R24
	.dbline 423
	ldi R24,3
	sts _pfcz+16+6,R24
	.dbline 423
L206:
	.dbline 424
; 		       } 	                                                    //1100 pulse3
	.dbline 425
; 		    }
L197:
	.dbline 429
; 			
; 			
; 			                                                        //1000 pulse4
; 		   if (be40&be41^pfcz[3].he) 
	lds R2,_be41
	lds R3,_be40
	and R3,R2
	lds R2,_pfcz+24+1
	eor R3,R2
	breq L211
	.dbline 430
; 		    {
	.dbline 431
; 			   if ((t1!=4)&&(t1!=0)&&(t1<5)) 
	mov R24,R12
	cpi R24,4
	breq L215
	tst R24
	breq L215
	cpi R24,5
	brsh L215
	.dbline 432
; 			   {  PORTC &=0X0F0;
	.dbline 432
	in R24,0x15
	andi R24,240
	out 0x15,R24
	.dbline 433
; 	             cutpulse=0;
	clr R2
	sts _cutpulse,R2
	.dbline 434
; 	              return ;
	xjmp L65
L215:
	.dbline 437
; 				}
; 		      else
; 			  {
	.dbline 438
; 			   PORTB^=(1<<6);	  // DISP TO PLAT
	ldi R24,64
	in R2,0x18
	eor R2,R24
	out 0x18,R2
	.dbline 439
; 			   clrout(4);
	ldi R16,4
	xcall _clrout
	.dbline 440
; 			   pfcz[3].zznum++;
	lds R24,_pfcz+24+5
	subi R24,255    ; addi 1
	sts _pfcz+24+5,R24
	.dbline 441
; 			   if(be40) {zzcode=0x0f;pfcz[3].zzco=2;}
	lds R2,_be40
	tst R2
	breq L219
	.dbline 441
	.dbline 441
	ldi R24,15
	sts _zzcode,R24
	.dbline 441
	ldi R24,2
	sts _pfcz+24+6,R24
	.dbline 441
	xjmp L220
L219:
	.dbline 442
; 		       else    {zzcode=0x8f;pfcz[3].zzco=3;}
	.dbline 442
	ldi R24,143
	sts _zzcode,R24
	.dbline 442
	ldi R24,3
	sts _pfcz+24+6,R24
	.dbline 442
L220:
	.dbline 443
; 		      }
	.dbline 444
;             }
L211:
	.dbline 449
; 	
;             
;   
;   
;   if(!yubei) 
	lds R2,_yubei
	tst R2
	brne L225
	.dbline 450
;   {  
	.dbline 451
;      PORTC &=0X0F0;
	in R24,0x15
	andi R24,240
	out 0x15,R24
	.dbline 452
; 	 for(k1=0;k1<=3;k1++)
	clr R10
	xjmp L230
L227:
	.dbline 453
	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
L228:
	.dbline 452
	inc R10
L230:
	.dbline 452
	ldi R24,3
	cp R24,R10
	brsh L227
	.dbline 454
; 	 pfcz[k1].he=0;
; 	 return ;
	xjmp L65
L225:
	.dbline 459
;   }
; 
;  
;  //if((zznum)&&(zznum<5)) PORTB|=(1<<6);
;     errzs=0;
	clr R12
	.dbline 460
;  for(i1=0;i1<=3;i1++)
	clr R14
	xjmp L235
L232:
	.dbline 461
;    {
	.dbline 462
;      if(pfcz[i1].zznum>errcount)
	ldi R24,8
	mul R24,R14
	movw R30,R0
	ldi R24,<_pfcz+5
	ldi R25,>_pfcz+5
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	ldi R24,5
	cp R24,R2
	brsh L236
	.dbline 463
; 	  { 
	.dbline 464
; 	    clrout(pfcz[i1].s); 
	ldi R24,8
	mul R24,R14
	movw R30,R0
	ldi R24,<_pfcz
	ldi R25,>_pfcz
	add R30,R24
	adc R31,R25
	ldd R16,z+0
	xcall _clrout
	.dbline 465
; 	    ++errzs;
	inc R12
	.dbline 466
; 		if(errzs>=2) {PORTC &=0X0F0; cutpulse=0;} 
	mov R24,R12
	cpi R24,2
	brsh X7
	xjmp L233
X7:
	.dbline 466
	.dbline 466
	in R24,0x15
	andi R24,240
	out 0x15,R24
	.dbline 466
	clr R2
	sts _cutpulse,R2
	.dbline 466
	.dbline 467
; 		continue;
	xjmp L233
L236:
	.dbline 470
; 	  }
; 	  
;      if(!(pfcz[i1].he)&&pfcz[i1].qs&&(pfcz[i1].zznum<errcount))
	ldi R24,8
	mul R24,R14
	ldi R24,<_pfcz+1
	ldi R25,>_pfcz+1
	movw R30,R0
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	tst R2
	brne L241
	ldi R24,<_pfcz+2
	ldi R25,>_pfcz+2
	movw R30,R0
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	tst R2
	breq L241
	ldi R24,<_pfcz+5
	ldi R25,>_pfcz+5
	movw R30,R0
	add R30,R24
	adc R31,R25
	ldd R24,z+0
	cpi R24,5
	brsh L241
	.dbline 471
; 	  {tounum=pfcz[i1].s;break;} 
	.dbline 471
	ldi R24,8
	mul R24,R14
	movw R30,R0
	ldi R24,<_pfcz
	ldi R25,>_pfcz
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	sts _tounum,R2
	.dbline 471
	xjmp L234
L241:
	.dbline 472
L233:
	.dbline 460
	inc R14
L235:
	.dbline 460
	ldi R24,3
	cp R24,R14
	brlo X8
	xjmp L232
X8:
L234:
	.dbline 475
;    }
;   
;   
;   for(i3=0;i3<=3;i3++)
	clr R10
	xjmp L249
L246:
	.dbline 476
;  { 
	.dbline 477
;   if(pfcz[i3].he) 
	ldi R24,8
	mul R24,R10
	movw R30,R0
	ldi R24,<_pfcz+1
	ldi R25,>_pfcz+1
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	tst R2
	breq L250
	.dbline 478
;   { qenum=pfcz[i3].s;
	.dbline 478
	ldi R24,8
	mul R24,R10
	movw R30,R0
	ldi R24,<_pfcz
	ldi R25,>_pfcz
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	sts _qenum,R2
	.dbline 479
;     break;
	xjmp L248
L250:
	.dbline 481
L247:
	.dbline 475
	inc R10
L249:
	.dbline 475
	ldi R24,3
	cp R24,R10
	brsh L246
L248:
	.dbline 485
;   }
;  }
;  
;  	 
;      	 
;  if (count==zouqi)
	ldi R20,44
	ldi R21,1
	ldi R22,0
	ldi R23,0
	lds R4,_count+2
	lds R5,_count+2+1
	lds R2,_count
	lds R3,_count+1
	cp R2,R20
	cpc R3,R21
	cpc R4,R22
	cpc R5,R23
	breq X9
	xjmp L253
X9:
	.dbline 486
;  {
	.dbline 487
;      count=0;
	ldi R20,0
	ldi R21,0
	ldi R22,0
	ldi R23,0
	sts _count+1,R21
	sts _count,R20
	sts _count+2+1,R23
	sts _count+2,R22
	.dbline 488
; 	 inkg();
	xcall _inkg
	.dbline 489
; 	 pfcz[0].qs=qs10;pfcz[1].qs=qs20;pfcz[2].qs=qs30;pfcz[3].qs=qs40;//test
	lds R2,_qs10
	sts _pfcz+2,R2
	.dbline 489
	lds R2,_qs20
	sts _pfcz+8+2,R2
	.dbline 489
	lds R2,_qs30
	sts _pfcz+16+2,R2
	.dbline 489
	lds R2,_qs40
	sts _pfcz+24+2,R2
	.dbline 494
; 	 
; 	// PORTA=be10|(be20<<1)|(be30<<2)|(be40<<3)|(qs10<<4)|(qs20<<5)|(qs30<<6)|(qs40<<7);//test
;     //count2++;//write realse
; 	
;    temppha=((phamax_1+phamax_2)>>1);
	lds R2,_phamax_2
	lds R3,_phamax_2+1
	lds R4,_phamax_1
	lds R5,_phamax_1+1
	add R4,R2
	adc R5,R3
	lsr R5
	ror R4
	movw R2,R4
	clr R4
	clr R5
	movw R30,R28
	std z+12,R2
	std z+13,R3
	std z+14,R4
	std z+15,R5
	.dbline 495
;    tphase=(unsigned char) ((temppha*37)>>11);//8M\8
	movw R30,R28
	ldd R2,z+12
	ldd R3,z+13
	ldd R4,z+14
	ldd R5,z+15
	ldi R20,37
	ldi R21,0
	ldi R22,0
	ldi R23,0
	st -y,R5
	st -y,R4
	st -y,R3
	st -y,R2
	movw R16,R20
	movw R18,R22
	xcall empy32u
	ldi R24,11
	ldi R25,0
	st -y,R24
	xcall lsr32
	mov R10,R16
	.dbline 499
;    //tphase=((temppha*320)>>10);//div 14.7456\256 to degree
;    //if(count2==5)
;    //EEPROMwrite(0x10,tphase);//when realse cut
;    tphase-=phaserr;//when realse
	lds R2,_phaserr
	sub R10,R2
	.dbline 503
;   //if(count2==7) 
;   //outled(EEPROMread(0x10));
;    
;    if (tphase>180) tphase=180;
	ldi R24,180
	cp R24,R10
	brsh L262
	.dbline 503
	mov R10,R24
L262:
	.dbline 504
;    tempi=((imax_1+imax_2)>>1);
	lds R2,_imax_2
	lds R3,_imax_2+1
	lds R4,_imax_1
	lds R5,_imax_1+1
	add R4,R2
	adc R5,R3
	lsr R5
	ror R4
	movw R2,R4
	clr R4
	clr R5
	movw R30,R28
	std z+8,R2
	std z+9,R3
	std z+10,R4
	std z+11,R5
	.dbline 505
;    tempu=((umax_1+umax_2)>>1);
	lds R2,_umax_2
	lds R3,_umax_2+1
	lds R4,_umax_1
	lds R5,_umax_1+1
	add R4,R2
	adc R5,R3
	lsr R5
	ror R4
	movw R2,R4
	clr R4
	clr R5
	movw R30,R28
	std z+4,R2
	std z+5,R3
	std z+6,R4
	std z+7,R5
	.dbline 506
;    tempui=(tempi*tempu)>>8;
	movw R30,R28
	ldd R2,z+4
	ldd R3,z+5
	ldd R4,z+6
	ldd R5,z+7
	movw R30,R28
	ldd R6,z+8
	ldd R7,z+9
	ldd R8,z+10
	ldd R9,z+11
	st -y,R5
	st -y,R4
	st -y,R3
	st -y,R2
	movw R16,R6
	movw R18,R8
	xcall empy32u
	ldi R24,8
	ldi R25,0
	st -y,R24
	xcall lsr32
	movw R30,R28
	std z+0,R16
	std z+1,R17
	std z+2,R18
	std z+3,R19
	.dbline 507
;    tempui=(tempui*xishu)>>8;
	movw R30,R28
	ldd R2,z+0
	ldd R3,z+1
	ldd R4,z+2
	ldd R5,z+3
	ldi R20,160
	ldi R21,15
	ldi R22,0
	ldi R23,0
	st -y,R5
	st -y,R4
	st -y,R3
	st -y,R2
	movw R16,R20
	movw R18,R22
	xcall empy32u
	ldi R24,8
	ldi R25,0
	st -y,R24
	xcall lsr32
	movw R30,R28
	std z+0,R16
	std z+1,R17
	std z+2,R18
	std z+3,R19
	.dbline 508
;    tempui=((tempui*sincode[tphase])>>13);
	ldi R24,2
	mul R24,R10
	movw R30,R0
	ldi R24,<_sincode
	ldi R25,>_sincode
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	ldd R3,z+1
	clr R4
	clr R5
	movw R30,R28
	ldd R6,z+0
	ldd R7,z+1
	ldd R8,z+2
	ldd R9,z+3
	st -y,R5
	st -y,R4
	st -y,R3
	st -y,R2
	movw R16,R6
	movw R18,R8
	xcall empy32u
	ldi R24,13
	ldi R25,0
	st -y,R24
	xcall lsr32
	movw R30,R28
	std z+0,R16
	std z+1,R17
	std z+2,R18
	std z+3,R19
L264:
	.dbline 511
;    
; //tj:if(( tempui>=outup) && yubei && cutpulse && (tempu<unetmax) )
; tj:if(( tempui>=outup) && yubei && cutpulse )
	ldi R20,224
	ldi R21,1
	ldi R22,0
	ldi R23,0
	movw R30,R28
	ldd R2,z+0
	ldd R3,z+1
	ldd R4,z+2
	ldd R5,z+3
	cp R2,R20
	cpc R3,R21
	cpc R4,R22
	cpc R5,R23
	brlo L265
	lds R2,_yubei
	tst R2
	breq L265
	lds R2,_cutpulse
	tst R2
	breq L265
	.dbline 512
;   { 
	.dbline 513
;    out(tounum);
	lds R16,_tounum
	xcall _out
	.dbline 514
;   }
L265:
	.dbline 516
;   
;   if( tempui<=outdown)
	ldi R20,120
	ldi R21,0
	ldi R22,0
	ldi R23,0
	movw R30,R28

⌨️ 快捷键说明

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