?? gb.s
字號:
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 + -