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

📄 gb.s

📁 应8位机计算电网无功量并自动投切电容,横好用的
💻 S
📖 第 1 页 / 共 5 页
字号:
;   0X0280,0X023A,0X01F3,0X01AC,0X0164,0X011D,0X00D6,0X008E,0x0047,
;   0x0000
; };
; //#pragma end_abs_address
;   
;     
; #define zouqi     300
; #define xishu    4000
; #define outup     480
; #define outdown   120
; #define ovzq      120 
; #define errcount   5
; #define unetmax   700
; 
; unsigned char EEPROMread( int location)
; {
	.dbline 72
; 	EEAR = location;
	out 0x1f,R17
	out 0x1e,R16
	.dbline 74
;     
;     EECR |= 0x01;                       // Set READ strobe
	sbi 0x1c,0
	.dbline 76
;     
;     return (EEDR);                      // Return byte
	in R16,0x1d
	.dbline -2
L1:
	.dbline 0 ; func end
	ret
	.dbsym r location 16 I
	.dbend
	.dbfunc e EEPROMwrite _EEPROMwrite fI
;        oldSREG -> R20
;           byte -> R18
;       location -> R16,R17
	.even
_EEPROMwrite::
	xcall push_gset1
	.dbline -1
	.dbline 80
; }
; 
; int EEPROMwrite( int location, unsigned char byte)
; {
	.dbline 83
; 	unsigned char oldSREG;
; 
; 	  EEAR = location;
	out 0x1f,R17
	out 0x1e,R16
	.dbline 85
; 
;     EEDR = byte;
	out 0x1d,R18
	.dbline 87
; 
; 	  oldSREG = SREG;
	in R20,0x3f
	.dbline 88
; 	  SREG &= ~0x80;		// disable interrupt
	bclr 7
	.dbline 90
; 
;     EECR |= 0x04;                       // Set MASTER WRITE enable
	sbi 0x1c,2
	.dbline 91
;     EECR |= 0x02;                       // Set WRITE strobe
	sbi 0x1c,1
L3:
	.dbline 92
L4:
	.dbline 92
;     while (EECR & 0x02);                // Wait until write is done
	sbic 0x1c,1
	rjmp L3
	.dbline 94
; 
; 	  SREG = oldSREG;
	out 0x3f,R20
	.dbline 95
;     return 0;                           // return Success.
	clr R16
	clr R17
	.dbline -2
L2:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r oldSREG 20 c
	.dbsym r byte 18 c
	.dbsym r location 16 I
	.dbend
	.dbfunc e inkg _inkg fV
;              t -> R16
	.even
_inkg::
	.dbline -1
	.dbline 103
;                                         // Could be expanded so that
;                                         // the routine checks that the address
;                                         // is within the range of the chip.
; }                   
; 
; 
; void inkg(void)
; { 
	.dbline 105
;     char t;
;     MCUCR&=0X7F;
	in R24,0x35
	andi R24,127
	out 0x35,R24
	.dbline 106
;     PORTG &= 0XFD;//read switch no DL
	lds R24,101
	andi R24,253
	sts 101,R24
	.dbline 107
;     NOP( );
	nop
	.dbline 108
; 	  NOP( );
	nop
	.dbline 109
; 	  NOP( );
	nop
	.dbline 110
; 	  NOP( );
	nop
	.dbline 111
; 	  NOP( );
	nop
	.dbline 112
; 	  NOP( );
	nop
	.dbline 113
; 	  NOP( );
	nop
	.dbline 114
;     t = PINE;
	in R16,0x1
	.dbline 115
;     PORTG |= 0X1F;
	lds R24,101
	ori R24,31
	sts 101,R24
	.dbline 116
;     qs10=t&0x01;   
	mov R24,R16
	andi R24,1
	sts _qs10,R24
	.dbline 117
;     qs20=(t&0x02)>>1;
	mov R24,R16
	andi R24,2
	lsr R24
	sts _qs20,R24
	.dbline 118
; 	  qs30=(t&0x04)>>2;
	mov R24,R16
	andi R24,4
	lsr R24
	lsr R24
	sts _qs30,R24
	.dbline 119
; 	  qs40=(t&0x08)>>3;
	mov R24,R16
	andi R24,8
	lsr R24
	lsr R24
	lsr R24
	sts _qs40,R24
	.dbline 120
;     return ;
	.dbline -2
L6:
	.dbline 0 ; func end
	ret
	.dbsym r t 16 c
	.dbend
	.dbfunc e inDL _inDL fV
;              t -> R16
	.even
_inDL::
	.dbline -1
	.dbline 124
; }   
;     
; void inDL(void )
; { 
	.dbline 126
;    char t;
;    MCUCR&=0X7F;
	in R24,0x35
	andi R24,127
	out 0x35,R24
	.dbline 127
;    PORTG &= 0X0FB; //READ DL NO KG
	lds R24,101
	andi R24,251
	sts 101,R24
	.dbline 128
;    NOP( );
	nop
	.dbline 129
;    NOP();
	nop
	.dbline 130
;    NOP();
	nop
	.dbline 131
;    NOP();
	nop
	.dbline 132
;    NOP();
	nop
	.dbline 133
;    NOP();
	nop
	.dbline 134
;    NOP();
	nop
	.dbline 135
;    NOP();
	nop
	.dbline 136
;    t = PINE;
	in R16,0x1
	.dbline 137
;    PORTG |= 0X1F;
	lds R24,101
	ori R24,31
	sts 101,R24
	.dbline 138
;    be10=t&0x01;     
	mov R24,R16
	andi R24,1
	sts _be10,R24
	.dbline 139
;    be20=(t>>1)&0x01;
	mov R24,R16
	lsr R24
	andi R24,1
	sts _be20,R24
	.dbline 140
;    be30=(t>>2)&0x01;
	mov R24,R16
	lsr R24
	lsr R24
	andi R24,1
	sts _be30,R24
	.dbline 141
;    be40=(t>>3)&0x01;
	mov R24,R16
	lsr R24
	lsr R24
	lsr R24
	andi R24,1
	sts _be40,R24
	.dbline 142
;    ov10=(t>>4)&0x01;
	mov R24,R16
	swap R24
	andi R24,#0x0F
	andi R24,1
	sts _ov10,R24
	.dbline 143
;    ov20=(t&0x20)>>5;
	mov R24,R16
	andi R24,32
	lsr R24
	lsr R24
	lsr R24
	lsr R24
	lsr R24
	sts _ov20,R24
	.dbline 144
;    ov30=(t&0x40)>>6;
	mov R24,R16
	andi R24,64
	lsr R24
	lsr R24
	lsr R24
	lsr R24
	lsr R24
	lsr R24
	sts _ov30,R24
	.dbline 145
;    ov40=(t&0x80)>>7;
	mov R24,R16
	andi R24,128
	lsr R24
	lsr R24
	lsr R24
	lsr R24
	lsr R24
	lsr R24
	lsr R24
	sts _ov40,R24
	.dbline 146
;    return ;
	.dbline -2
L7:
	.dbline 0 ; func end
	ret
	.dbsym r t 16 c
	.dbend
	.dbfunc e checkyb _checkyb fc
;              k -> R16
	.even
_checkyb::
	.dbline -1
	.dbline 150
; } 
;  
; char checkyb(void )
; { 
	.dbline 152
;   char k;
;   k = (PINB & 0X10)>>4;
	in R16,0x16
	andi R16,16
	swap R16
	andi R16,#0x0F
	.dbline 153
;   return (k);
	.dbline -2
L8:
	.dbline 0 ; func end
	ret
	.dbsym r k 16 c
	.dbend
	.dbfunc e out _out fV
;              s -> R16
	.even
_out::
	xcall push_gset1
	.dbline -1
	.dbline 158
; }
; 
;  
; void out(char s)
;   {
	.dbline 159
;   if(( s>=1)&& (s <= 4 ))  
	cpi R16,1
	brlo L10
	ldi R24,4
	cp R24,R16
	brlo L10
	.dbline 160
;     { 
	.dbline 161
;      PORTB |=(1<<5);
	sbi 0x18,5
	.dbline 162
;      switch (s)
	mov R20,R16
	clr R21
	cpi R20,1
	ldi R30,0
	cpc R21,R30
	breq L15
	cpi R20,2
	ldi R30,0
	cpc R21,R30
	breq L16
	cpi R20,3
	ldi R30,0
	cpc R21,R30
	breq L17
	cpi R20,4
	ldi R30,0
	cpc R21,R30
	breq L18
	xjmp L12
X0:
	.dbline 163
; 	     {
L15:
	.dbline 165
;          case 1 : 
;                      PORTC |=0X01;
	sbi 0x15,0
	.dbline 167
; 					// pfcz[0].he=1;
;                      break;
	xjmp L13
L16:
	.dbline 170
;                     
;          case 2 : 
;                      PORTC |=0X02;
	sbi 0x15,1
	.dbline 172
; 					// pfcz[1].he=1;
;                      break;
	xjmp L13
L17:
	.dbline 175
;                     
;          case 3 : 
;                      PORTC |=0X04;
	sbi 0x15,2
	.dbline 177
; 					// pfcz[2].he=1;
;                      break;
	xjmp L13
L18:
	.dbline 180
;                     
;          case 4:   
;                     PORTC  |=0X08;
	sbi 0x15,3
	.dbline 182
; 				//	pfcz[3].he=1;
;                     break;
L12:
L13:
	.dbline 184
L10:
	.dbline -2
L9:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r s 16 c
	.dbend
	.dbfunc e clrout _clrout fV
;              k -> R20
;              j -> R22
;              s -> R16
	.even
_clrout::
	xcall push_gset2
	.dbline -1
	.dbline 188
;        }  
;     } 
;   }
;  
; void  clrout(char s) 
; {    
	.dbline 190
;   unsigned char k,j;
;   if (s &&(s<=4))
	tst R16
	brne X2
	xjmp L20
X2:
	ldi R24,4
	cp R24,R16
	brsh X3
	xjmp L20
X3:
	.dbline 191
;   { 
	.dbline 193
;  //fod out dowN
;     PORTB &= 0X0DF;
	in R24,0x18
	andi R24,223
	out 0x18,R24
	.dbline 194
;     switch (s)
	mov R20,R16
	clr R21
	cpi R20,1
	ldi R30,0
	cpc R21,R30
	breq L25
	cpi R20,2
	ldi R30,0
	cpc R21,R30
	breq L34
	cpi R20,3
	ldi R30,0
	cpc R21,R30
	breq L43
	cpi R20,4
	ldi R30,0
	cpc R21,R30
	breq L52
	xjmp L22
X1:
	.dbline 195
; 	{
L25:
	.dbline 197
; 	  case 1 : 
;               PORTC &=0X0FE;
	in R24,0x15
	andi R24,254
	out 0x15,R24
	.dbline 199
; 			 // pfcz[0].he=0;
;               for(k=65535;k>0;k--)
	ldi R20,255
	xjmp L29
L26:
	.dbline 200
;             	{ 
	.dbline 201
	ldi R22,24
	xjmp L33
L30:
	.dbline 201
L31:
	.dbline 201
	dec R22
L33:
	.dbline 201
	clr R2
	cp R2,R22
	brlo L30
	.dbline 202
L27:
	.dbline 199
	dec R20
L29:
	.dbline 199
	clr R2
	cp R2,R20
	brlo L26
	.dbline 203
; 				       for(j=280;j>0;j--);
; 				      } 	
; 			        PORTB |=(1<<5); //fod  rise
	sbi 0x18,5
	.dbline 204
;               break;
	xjmp L23
L34:
	.dbline 207
;                            
;       case 2  :
;                PORTC &=0X0FD;
	in R24,0x15
	andi R24,253
	out 0x15,R24
	.dbline 209
; 			 //  pfcz[1].he=0;
;                for(k=65535;k>0;k--)
	ldi R20,255
	xjmp L38
L35:
	.dbline 210
;             	 {
	.dbline 211
	ldi R22,24
	xjmp L42
L39:
	.dbline 211
L40:
	.dbline 211
	dec R22
L42:
	.dbline 211
	clr R2
	cp R2,R22
	brlo L39
	.dbline 212
L36:
	.dbline 209
	dec R20
L38:
	.dbline 209
	clr R2
	cp R2,R20
	brlo L35
	.dbline 213
; 				        for(j=280;j>0;j--);
; 				       }
; 			         PORTB |=(1<<5); //fod  rise
	sbi 0x18,5
	.dbline 214
;                break;
	xjmp L23
L43:
	.dbline 217
;                           
;       case 3  :
;                PORTC &=0XFB;
	in R24,0x15
	andi R24,251
	out 0x15,R24
	.dbline 219
; 			  // pfcz[2].he=0;
;                for(k=65535;k>0;k--)
	ldi R20,255
	xjmp L47
L44:
	.dbline 220
;             	 {
	.dbline 221
	ldi R22,194
	xjmp L51
L48:
	.dbline 221
L49:
	.dbline 221
	dec R22
L51:
	.dbline 221
	clr R2
	cp R2,R22
	brlo L48
	.dbline 222
L45:
	.dbline 219
	dec R20
L47:
	.dbline 219
	clr R2
	cp R2,R20
	brlo L44
	.dbline 223
; 				        for(j=450;j>0;j--);
; 				       }
; 			         PORTB |=(1<<5); //fod  rise
	sbi 0x18,5
	.dbline 224
;                break;
	xjmp L23
L52:
	.dbline 227
;                           
;       case 4  : 
;                PORTC &=0X0F7 ;
	in R24,0x15
	andi R24,247
	out 0x15,R24
	.dbline 229
; 			 //  pfcz[3].he=0;                             
;                for(k=65535;k>0;k--)
	ldi R20,255
	xjmp L56
L53:
	.dbline 230
;             	 {
	.dbline 231
	ldi R22,194
	xjmp L60
L57:
	.dbline 231
L58:
	.dbline 231
	dec R22
L60:
	.dbline 231
	clr R2
	cp R2,R22
	brlo L57
	.dbline 232
L54:
	.dbline 229
	dec R20
L56:
	.dbline 229
	clr R2
	cp R2,R20
	brlo L53
	.dbline 233
; 				       for(j=450;j>0;j--);
; 				       }
; 			         PORTB |=(1<<5); //fod  rise           
	sbi 0x18,5
	.dbline 234
;   }                       
L22:
L23:
	.dbline 236
L20:
	.dbline -2
L19:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r k 20 c
	.dbsym r j 22 c
	.dbsym r s 16 c
	.dbend
	.dbfunc e outled _outled fV
;        ledcode -> R16
	.even
_outled::
	.dbline -1
	.dbline 240
;    	
;   }                        
; }     
;    
; void outled(char ledcode )
;  {  
	.dbline 241
;   MCUCR&=0X7F;
	in R24,0x35
	andi R24,127
	out 0x35,R24
	.dbline 242
;   PORTA = ledcode;
	out 0x1b,R16
	.dbline -2
L61:
	.dbline 0 ; func end
	ret
	.dbsym r ledcode 16 c
	.dbend
	.dbfunc e port_init _port_init fV
	.even
_port_init::
	.dbline -1
	.dbline 247
;   }
; 
; 
; void port_init(void)
; {
	.dbline 248
;  PORTA = 0xff;
	ldi R24,255
	out 0x1b,R24
	.dbline 249
;  DDRA  = 0xff;
	out 0x1a,R24
	.dbline 250
;  PORTB = 0x10;
	ldi R24,16
	out 0x18,R24
	.dbline 251
;  DDRB  = 0xE0;
	ldi R24,224
	out 0x17,R24
	.dbline 252
;  PORTC = 0xf0; //74hc05    0x00=74hc07
	ldi R24,240
	out 0x15,R24
	.dbline 253
;  DDRC  = 0xff;
	ldi R24,255
	out 0x14,R24
	.dbline 254
;  PORTD = 0x00;
	clr R2
	out 0x12,R2
	.dbline 255
;  DDRD  = 0x00;
	out 0x11,R2
	.dbline 256
;  PORTE = 0x00;
	out 0x3,R2
	.dbline 257
;  DDRE  = 0x00;
	out 0x2,R2
	.dbline 258
;  PORTF = 0x00;
	sts 98,R2
	.dbline 259
;  DDRF  = 0x00;
	sts 97,R2
	.dbline 260
;  PORTG = 0x1F;
	ldi R24,31
	sts 101,R24
	.dbline 261
;  DDRG  = 0x1f;
	sts 100,R24
	.dbline -2
L62:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e watchdog_init _watchdog_init fV
	.even
_watchdog_init::
	.dbline -1
	.dbline 267
; }
; 
; //Watchdog initialize
; // prescale: 1024K
; void watchdog_init(void)
; {
	.dbline 268
;  WDR(); //this prevents a timout on enabling
	wdr
	.dbline 269
;  WDTCR = 0x0E; //WATCHDOG ENABLED - dont forget to issue WDRs

⌨️ 快捷键说明

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