📄 ax88796.s
字号:
xcall _ax88796Write
.dbline 488
.dbline 488
.dbline 488
ldi R16,20
xcall _ax88796Read
mov R18,R16
andi R18,247
ldi R16,20
xcall _ax88796Write
.dbline 488
ldi R16,20
xcall _ax88796Read
mov R18,R16
ori R18,1
ldi R16,20
xcall _ax88796Write
.dbline 488
.dbline 488
ldi R16,20
xcall _ax88796Read
mov R18,R16
andi R18,254
ldi R16,20
xcall _ax88796Write
.dbline 488
.dbline 488
.dbline 488
ldi R16,20
xcall _ax88796Read
mov R18,R16
ori R18,8
ldi R16,20
xcall _ax88796Write
.dbline 488
ldi R16,20
xcall _ax88796Read
mov R18,R16
ori R18,1
ldi R16,20
xcall _ax88796Write
.dbline 488
.dbline 488
ldi R16,20
xcall _ax88796Read
mov R18,R16
andi R18,254
ldi R16,20
xcall _ax88796Write
.dbline 488
.dbline 488
.dbline 488
.dbline 490
;
; mask8 = 0x10;
ldi R22,16
.dbline 491
; for(i=0;i<5;++i)
clr R10
clr R11
xjmp L89
L86:
.dbline 492
; {
.dbline 493
; if(mask8 & phyad)
mov R2,R22
ldd R0,y+10
and R2,R0
breq L90
.dbline 494
; set_mdo;
ldi R16,20
xcall _ax88796Read
mov R18,R16
ori R18,8
ldi R16,20
xcall _ax88796Write
xjmp L91
L90:
.dbline 496
; else
; clr_mdo;
ldi R16,20
xcall _ax88796Read
mov R18,R16
andi R18,247
ldi R16,20
xcall _ax88796Write
L91:
.dbline 497
ldi R16,20
xcall _ax88796Read
mov R18,R16
ori R18,1
ldi R16,20
xcall _ax88796Write
.dbline 497
.dbline 497
ldi R16,20
xcall _ax88796Read
mov R18,R16
andi R18,254
ldi R16,20
xcall _ax88796Write
.dbline 497
.dbline 497
.dbline 498
lsr R22
.dbline 499
L87:
.dbline 491
movw R24,R10
adiw R24,1
movw R10,R24
L89:
.dbline 491
movw R24,R10
cpi R24,5
ldi R30,0
cpc R25,R30
brlo L86
.dbline 500
; mii_clk;
; mask8 >>= 1;
; }
; mask8 = 0x10;
ldi R22,16
.dbline 501
; for(i=0;i<5;++i)
clr R10
clr R11
xjmp L95
L92:
.dbline 502
; {
.dbline 503
; if(mask8 & regad)
mov R2,R22
and R2,R14
breq L96
.dbline 504
; set_mdo;
ldi R16,20
xcall _ax88796Read
mov R18,R16
ori R18,8
ldi R16,20
xcall _ax88796Write
xjmp L97
L96:
.dbline 506
; else
; clr_mdo;
ldi R16,20
xcall _ax88796Read
mov R18,R16
andi R18,247
ldi R16,20
xcall _ax88796Write
L97:
.dbline 507
ldi R16,20
xcall _ax88796Read
mov R18,R16
ori R18,1
ldi R16,20
xcall _ax88796Write
.dbline 507
.dbline 507
ldi R16,20
xcall _ax88796Read
mov R18,R16
andi R18,254
ldi R16,20
xcall _ax88796Write
.dbline 507
.dbline 507
.dbline 508
lsr R22
.dbline 509
L93:
.dbline 501
movw R24,R10
adiw R24,1
movw R10,R24
L95:
.dbline 501
movw R24,R10
cpi R24,5
ldi R30,0
cpc R25,R30
brlo L92
.dbline 510
; mii_clk;
; mask8 >>= 1;
; }
; mii_w_ta;
ldi R16,20
xcall _ax88796Read
mov R18,R16
ori R18,8
ldi R16,20
xcall _ax88796Write
.dbline 510
ldi R16,20
xcall _ax88796Read
mov R18,R16
ori R18,1
ldi R16,20
xcall _ax88796Write
.dbline 510
.dbline 510
ldi R16,20
xcall _ax88796Read
mov R18,R16
andi R18,254
ldi R16,20
xcall _ax88796Write
.dbline 510
.dbline 510
.dbline 510
ldi R16,20
xcall _ax88796Read
mov R18,R16
andi R18,247
ldi R16,20
xcall _ax88796Write
.dbline 510
ldi R16,20
xcall _ax88796Read
mov R18,R16
ori R18,1
ldi R16,20
xcall _ax88796Write
.dbline 510
.dbline 510
ldi R16,20
xcall _ax88796Read
mov R18,R16
andi R18,254
ldi R16,20
xcall _ax88796Write
.dbline 510
.dbline 510
.dbline 510
.dbline 512
;
; mask16 = 0x8000;
ldi R20,32768
ldi R21,128
.dbline 513
; for(i=0;i<16;++i)
clr R10
clr R11
xjmp L101
L98:
.dbline 514
; {
.dbline 515
; if(mask16 & mii_data)
movw R2,R20
and R2,R12
and R3,R13
tst R2
brne X0
tst R3
breq L102
X0:
.dbline 516
; set_mdo;
ldi R16,20
xcall _ax88796Read
mov R18,R16
ori R18,8
ldi R16,20
xcall _ax88796Write
xjmp L103
L102:
.dbline 518
; else
; clr_mdo;
ldi R16,20
xcall _ax88796Read
mov R18,R16
andi R18,247
ldi R16,20
xcall _ax88796Write
L103:
.dbline 519
ldi R16,20
xcall _ax88796Read
mov R18,R16
ori R18,1
ldi R16,20
xcall _ax88796Write
.dbline 519
.dbline 519
ldi R16,20
xcall _ax88796Read
mov R18,R16
andi R18,254
ldi R16,20
xcall _ax88796Write
.dbline 519
.dbline 519
.dbline 520
lsr R21
ror R20
.dbline 521
L99:
.dbline 513
movw R24,R10
adiw R24,1
movw R10,R24
L101:
.dbline 513
movw R24,R10
cpi R24,16
ldi R30,0
cpc R25,R30
brlo L98
.dbline -2
L85:
xcall pop_gset5
adiw R28,4
.dbline 0 ; func end
ret
.dbsym r mask16 20 i
.dbsym r mask8 22 c
.dbsym r i 10 i
.dbsym r mii_data 12 i
.dbsym r regad 14 c
.dbsym l phyad 10 c
.dbend
.dbfunc e ax88796ReadMii _ax88796ReadMii fi
; result16 -> R20,R21
; mask16 -> R14,R15
; mask8 -> R22
; i -> R10
; regad -> R12
; phyad -> y+10
.even
_ax88796ReadMii::
xcall push_arg4
xcall push_gset5
mov R12,R18
.dbline -1
.dbline 525
; mii_clk;
; mask16 >>= 1;
; }
; }
;
; unsigned int ax88796ReadMii(unsigned char phyad,unsigned char regad)
; {
.dbline 529
; unsigned char mask8,i;
; unsigned int mask16,result16;
;
; mii_read;
ldi R16,20
xcall _ax88796Read
mov R18,R16
andi R18,247
ldi R16,20
xcall _ax88796Write
.dbline 529
ldi R16,20
xcall _ax88796Read
mov R18,R16
ori R18,1
ldi R16,20
xcall _ax88796Write
.dbline 529
.dbline 529
ldi R16,20
xcall _ax88796Read
mov R18,R16
andi R18,254
ldi R16,20
xcall _ax88796Write
.dbline 529
.dbline 529
.dbline 529
ldi R16,20
xcall _ax88796Read
mov R18,R16
ori R18,8
ldi R16,20
xcall _ax88796Write
.dbline 529
ldi R16,20
xcall _ax88796Read
mov R18,R16
ori R18,1
ldi R16,20
xcall _ax88796Write
.dbline 529
.dbline 529
ldi R16,20
xcall _ax88796Read
mov R18,R16
andi R18,254
ldi R16,20
xcall _ax88796Write
.dbline 529
.dbline 529
.dbline 529
ldi R16,20
xcall _ax88796Read
mov R18,R16
ori R18,8
ldi R16,20
xcall _ax88796Write
.dbline 529
ldi R16,20
xcall _ax88796Read
mov R18,R16
ori R18,1
ldi R16,20
xcall _ax88796Write
.dbline 529
.dbline 529
ldi R16,20
xcall _ax88796Read
mov R18,R16
andi R18,254
ldi R16,20
xcall _ax88796Write
.dbline 529
.dbline 529
.dbline 529
ldi R16,20
xcall _ax88796Read
mov R18,R16
andi R18,247
ldi R16,20
xcall _ax88796Write
.dbline 529
ldi R16,20
xcall _ax88796Read
mov R18,R16
ori R18,1
ldi R16,20
xcall _ax88796Write
.dbline 529
.dbline 529
ldi R16,20
xcall _ax88796Read
mov R18,R16
andi R18,254
ldi R16,20
xcall _ax88796Write
.dbline 529
.dbline 529
.dbline 529
.dbline 531
;
; mask8 = 0x10;
ldi R22,16
.dbline 532
; for(i=0;i<5;++i)
clr R10
xjmp L108
L105:
.dbline 533
; {
.dbline 534
; if(mask8 & phyad)
mov R2,R22
ldd R0,y+10
and R2,R0
breq L109
.dbline 535
; set_mdo;
ldi R16,20
xcall _ax88796Read
mov R18,R16
ori R18,8
ldi R16,20
xcall _ax88796Write
xjmp L110
L109:
.dbline 537
; else
; clr_mdo;
ldi R16,20
xcall _ax88796Read
mov R18,R16
andi R18,247
ldi R16,20
xcall _ax88796Write
L110:
.dbline 538
ldi R16,20
xcall _ax88796Read
mov R18,R16
ori R18,1
ldi R16,20
xcall _ax88796Write
.dbline 538
.dbline 538
ldi R16,20
xcall _ax88796Read
mov R18,R16
andi R18,254
ldi R16,20
xcall _ax88796Write
.dbline 538
.dbline 538
.dbline 539
lsr R22
.dbline 540
L106:
.dbline 532
inc R10
L108:
.dbline 532
mov R24,R10
cpi R24,5
brlo L105
.dbline 541
; mii_clk;
; mask8 >>= 1;
; }
; mask8 = 0x10;
ldi R22,16
.dbline 542
; for(i=0;i<5;++i)
clr R10
xjmp L114
L111:
.dbline 543
; {
.dbline 544
; if(mask8 & regad)
mov R2,R22
and R2,R12
breq L115
.dbline 545
; set_mdo;
ldi R16,20
xcall _ax88796Read
mov R18,R16
ori R18,8
ldi R16,20
xcall _ax88796Write
xjmp L116
L115:
.dbline 547
; else
; clr_mdo;
ldi R16,20
xcall _ax88796Read
mov R18,R16
andi R18,247
ldi R16,20
xcall _ax88796Write
L116:
.dbline 548
ldi R16,20
xcall _ax88796Read
mov R18,R16
ori R18,1
ldi R16,20
xcall _ax88796Write
.dbline 548
.dbline 548
ldi R16,20
xcall _ax88796Read
mov R18,R16
andi R18,254
ldi R16,20
xcall _ax88796Write
.dbline 548
.dbline 548
.dbline 549
lsr R22
.dbline 550
L112:
.dbline 542
inc R10
L114:
.dbline 542
mov R24,R10
cpi R24,5
brlo L111
.dbline 552
; mii_clk;
; mask8 >>= 1;
; }
;
; mii_r_ta;
ldi R16,20
xcall _ax88796Read
mov R18,R16
ori R18,1
ldi R16,20
xcall _ax88796Write
.dbline 552
.dbline 552
ldi R16,20
xcall _ax88796Read
mov R18,R16
andi R18,254
ldi R16,20
xcall _ax88796Write
.dbline 552
.dbline 552
.dbline 552
.dbline 554
;
; mask16 = 0x8000;
ldi R24,32768
ldi R25,128
movw R14,R24
.dbline 555
; result16 = 0x0000;
clr R20
clr R21
.dbline 556
; for(i=0;i<16;++i)
clr R10
xjmp L120
L117:
.dbline 557
; {
.dbline 558
; mii_clk;
ldi R16,20
xcall _ax88796Read
mov R18,R16
ori R18,1
ldi R16,20
xcall _ax88796Write
.dbline 558
.dbline 558
ldi R16,20
xcall _ax88796Read
mov R18,R16
andi R18,254
ldi R16,20
xcall _ax88796Write
.dbline 558
.dbline 558
.dbline 559
; if(ax88796Read(MEMR) & 0x04)
ldi R16,20
xcall _ax88796Read
sbrs R16,2
rjmp L121
.dbline 560
; {
.dbline 561
; result16 |= mask16;
or R20,R14
or R21,R15
.dbline 562
; }
xjmp L122
L121:
.dbline 564
; else
; {
.dbline 565
; nop();
nop
.dbline 566
; break;
xjmp L119
L122:
.dbline 568
lsr R15
ror R14
.dbline 569
L118:
.dbline 556
inc R10
L120:
.dbline 556
mov R24,R10
cpi R24,16
brlo L117
L119:
.dbline 570
; }
; mask16 >>= 1;
; }
; return result16;
movw R16,R20
.dbline -2
L104:
xcall pop_gset5
adiw R28,4
.dbline 0 ; func end
ret
.dbsym r result16 20 i
.dbsym r mask16 14 i
.dbsym r mask8 22 c
.dbsym r i 10 c
.dbsym r regad 12 c
.dbsym l phyad 10 c
.dbend
.dbfunc e ax88796ProcessInterrupt _ax88796ProcessInterrupt fV
; byte -> R20
.even
_ax88796ProcessInterrupt::
xcall push_gset1
.dbline -1
.dbline 575
.dbline 576
ldi R16,7
xcall _ax88796Read
mov R20,R16
.dbline 578
sbrs R16,4
rjmp L124
.dbline 579
xcall _ax88796Overrun
L124:
.dbline -2
L123:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r byte 20 c
.dbend
.area bss(ram, con, rel)
.dbfile C:\DOCUME~1\yehaoran\桌面\AVRuIP\ax88796.c
_currentRetreiveAddress:
.blkb 2
.dbsym s currentRetreiveAddress _currentRetreiveAddress i
_nextPage:
.blkb 1
.dbsym s nextPage _nextPage c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -