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

📄 ax88796.lst

📁 一个AVR 上的UIP移植程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
 207               		.stabn 68,0,71,.LM22-ax88796Init
 208               	.LM22:
 209 0098 66E4      		ldi r22,lo8(70)
 210 009a 81E0      		ldi r24,lo8(1)
 211 009c 0E94 0000 		call ax88796Write
  72:ax88796.c     **** 	ax88796Write(PSTOP,RXSTOP_INIT);
 212               		.stabn 68,0,72,.LM23-ax88796Init
 213               	.LM23:
GAS LISTING C:\DOCUME~1\pstang\LOCALS~1\Temp/cckxaaaa.s 			page 6


 214 00a0 60E6      		ldi r22,lo8(96)
 215 00a2 82E0      		ldi r24,lo8(2)
 216 00a4 0E94 0000 		call ax88796Write
  73:ax88796.c     **** 	
  74:ax88796.c     **** 	// switch to page 1
  75:ax88796.c     **** 	ax88796Write(CR,(PS0|RD2|STOP));
 217               		.stabn 68,0,75,.LM24-ax88796Init
 218               	.LM24:
 219 00a8 61E6      		ldi r22,lo8(97)
 220 00aa 80E0      		ldi r24,lo8(0)
 221 00ac 0E94 0000 		call ax88796Write
  76:ax88796.c     **** 	// write mac address
  77:ax88796.c     **** 	ax88796Write(PAR0+0, MYMAC_0);
 222               		.stabn 68,0,77,.LM25-ax88796Init
 223               	.LM25:
 224 00b0 60E3      		ldi r22,lo8(48)
 225 00b2 81E0      		ldi r24,lo8(1)
 226 00b4 0E94 0000 		call ax88796Write
  78:ax88796.c     **** 	ax88796Write(PAR0+1, MYMAC_1);
 227               		.stabn 68,0,78,.LM26-ax88796Init
 228               	.LM26:
 229 00b8 66E4      		ldi r22,lo8(70)
 230 00ba 82E0      		ldi r24,lo8(2)
 231 00bc 0E94 0000 		call ax88796Write
  79:ax88796.c     **** 	ax88796Write(PAR0+2, MYMAC_2);
 232               		.stabn 68,0,79,.LM27-ax88796Init
 233               	.LM27:
 234 00c0 66E4      		ldi r22,lo8(70)
 235 00c2 83E0      		ldi r24,lo8(3)
 236 00c4 0E94 0000 		call ax88796Write
  80:ax88796.c     **** 	ax88796Write(PAR0+3, MYMAC_3);
 237               		.stabn 68,0,80,.LM28-ax88796Init
 238               	.LM28:
 239 00c8 69E4      		ldi r22,lo8(73)
 240 00ca 84E0      		ldi r24,lo8(4)
 241 00cc 0E94 0000 		call ax88796Write
  81:ax88796.c     **** 	ax88796Write(PAR0+4, MYMAC_4);
 242               		.stabn 68,0,81,.LM29-ax88796Init
 243               	.LM29:
 244 00d0 63E4      		ldi r22,lo8(67)
 245 00d2 85E0      		ldi r24,lo8(5)
 246 00d4 0E94 0000 		call ax88796Write
  82:ax88796.c     **** 	ax88796Write(PAR0+5, MYMAC_5);
 247               		.stabn 68,0,82,.LM30-ax88796Init
 248               	.LM30:
 249 00d8 65E4      		ldi r22,lo8(69)
 250 00da 86E0      		ldi r24,lo8(6)
 251 00dc 0E94 0000 		call ax88796Write
  83:ax88796.c     **** 	// set start point
  84:ax88796.c     **** 	ax88796Write(CURR,RXSTART_INIT+1);
 252               		.stabn 68,0,84,.LM31-ax88796Init
 253               	.LM31:
 254 00e0 67E4      		ldi r22,lo8(71)
 255 00e2 87E0      		ldi r24,lo8(7)
 256 00e4 0E94 0000 		call ax88796Write
  85:ax88796.c     **** 
  86:ax88796.c     **** 	ax88796Write(CR,(RD2|START));
GAS LISTING C:\DOCUME~1\pstang\LOCALS~1\Temp/cckxaaaa.s 			page 7


 257               		.stabn 68,0,86,.LM32-ax88796Init
 258               	.LM32:
 259 00e8 62E2      		ldi r22,lo8(34)
 260 00ea 80E0      		ldi r24,lo8(0)
 261 00ec 0E94 0000 		call ax88796Write
  87:ax88796.c     **** 	ax88796Write(RCR,RCR_INIT);
 262               		.stabn 68,0,87,.LM33-ax88796Init
 263               	.LM33:
 264 00f0 64E4      		ldi r22,lo8(68)
 265 00f2 8CE0      		ldi r24,lo8(12)
 266 00f4 0E94 0000 		call ax88796Write
  88:ax88796.c     **** 
  89:ax88796.c     **** 	if(ax88796Read(GPI) & I_SPD)		// check PHY speed setting
 267               		.stabn 68,0,89,.LM34-ax88796Init
 268               	.LM34:
 269 00f8 87E1      		ldi r24,lo8(23)
 270 00fa 0E94 0000 		call ax88796Read
 271 00fe 82FF      		sbrs r24,2
 272 0100 02C0      		rjmp .L5
  90:ax88796.c     **** 		tcrFduFlag = FDU;				// if 100base, do full duplex
 273               		.stabn 68,0,90,.LM35-ax88796Init
 274               	.LM35:
 275 0102 C0E8      		ldi r28,lo8(-128)
 276 0104 01C0      		rjmp .L6
 277               	.L5:
  91:ax88796.c     **** 	else
  92:ax88796.c     **** 		tcrFduFlag = 0;					// if 10base, do half duplex
 278               		.stabn 68,0,92,.LM36-ax88796Init
 279               	.LM36:
 280 0106 C0E0      		ldi r28,lo8(0)
 281               	.L6:
  93:ax88796.c     **** 		
  94:ax88796.c     **** 	ax88796Write(TCR,(tcrFduFlag|TCR_INIT));
 282               		.stabn 68,0,94,.LM37-ax88796Init
 283               	.LM37:
 284 0108 6C2F      		mov r22,r28
 285 010a 8DE0      		ldi r24,lo8(13)
 286 010c 0E94 0000 		call ax88796Write
  95:ax88796.c     **** 
  96:ax88796.c     **** 	ax88796Write(GPOC,MPSEL);			// select media interface
 287               		.stabn 68,0,96,.LM38-ax88796Init
 288               	.LM38:
 289 0110 60E1      		ldi r22,lo8(16)
 290 0112 87E1      		ldi r24,lo8(23)
 291 0114 0E94 0000 		call ax88796Write
  97:ax88796.c     ****   
  98:ax88796.c     **** 	ax88796Write(TPSR,TXSTART_INIT);
 292               		.stabn 68,0,98,.LM39-ax88796Init
 293               	.LM39:
 294 0118 60E4      		ldi r22,lo8(64)
 295 011a 84E0      		ldi r24,lo8(4)
 296 011c 0E94 0000 		call ax88796Write
  99:ax88796.c     **** 
 100:ax88796.c     **** 	ax88796Write(CR,(RD2|STOP));
 297               		.stabn 68,0,100,.LM40-ax88796Init
 298               	.LM40:
 299 0120 61E2      		ldi r22,lo8(33)
GAS LISTING C:\DOCUME~1\pstang\LOCALS~1\Temp/cckxaaaa.s 			page 8


 300 0122 80E0      		ldi r24,lo8(0)
 301 0124 0E94 0000 		call ax88796Write
 101:ax88796.c     **** 	ax88796Write(DCR,DCR_INIT);
 302               		.stabn 68,0,101,.LM41-ax88796Init
 303               	.LM41:
 304 0128 60E0      		ldi r22,lo8(0)
 305 012a 8EE0      		ldi r24,lo8(14)
 306 012c 0E94 0000 		call ax88796Write
 102:ax88796.c     **** 	ax88796Write(CR,(RD2|START));
 307               		.stabn 68,0,102,.LM42-ax88796Init
 308               	.LM42:
 309 0130 62E2      		ldi r22,lo8(34)
 310 0132 80E0      		ldi r24,lo8(0)
 311 0134 0E94 0000 		call ax88796Write
 103:ax88796.c     **** 	ax88796Write(ISR,0xFF);
 312               		.stabn 68,0,103,.LM43-ax88796Init
 313               	.LM43:
 314 0138 6FEF      		ldi r22,lo8(-1)
 315 013a 87E0      		ldi r24,lo8(7)
 316 013c 0E94 0000 		call ax88796Write
 104:ax88796.c     **** 	ax88796Write(IMR,IMR_INIT);
 317               		.stabn 68,0,104,.LM44-ax88796Init
 318               	.LM44:
 319 0140 61E1      		ldi r22,lo8(17)
 320 0142 8FE0      		ldi r24,lo8(15)
 321 0144 0E94 0000 		call ax88796Write
 105:ax88796.c     **** 	ax88796Write(TCR,(tcrFduFlag|TCR_INIT));
 322               		.stabn 68,0,105,.LM45-ax88796Init
 323               	.LM45:
 324 0148 6C2F      		mov r22,r28
 325 014a 8DE0      		ldi r24,lo8(13)
 326 014c 0E94 0000 		call ax88796Write
 106:ax88796.c     **** 
 107:ax88796.c     **** 	//test
 108:ax88796.c     **** /*
 109:ax88796.c     **** 	while(1)
 110:ax88796.c     **** 	{
 111:ax88796.c     **** 		vt100SetCursorPos(18,0);
 112:ax88796.c     **** 		ax88796RegDump();
 113:ax88796.c     **** 	}
 114:ax88796.c     **** */
 115:ax88796.c     **** }
 327               		.stabn 68,0,115,.LM46-ax88796Init
 328               	.LM46:
 329               	.LBE2:
 330               	/* epilogue: frame size=0 */
 331 0150 CF91      		pop r28
 332 0152 0895      		ret
 333               	/* epilogue end (size=2) */
 334               	/* function ax88796Init size 170 (167) */
 335               		.size	ax88796Init, .-ax88796Init
 336               		.stabs	"tcrFduFlag:r(0,11)",64,0,42,28
 337               		.stabn	192,0,0,.LBB2-ax88796Init
 338               		.stabn	224,0,0,.LBE2-ax88796Init
 339               	.Lscope0:
 340               		.stabs	"",36,0,0,.Lscope0-ax88796Init
 341               		.stabs	"ax88796Write:F(0,20)",36,0,125,ax88796Write
GAS LISTING C:\DOCUME~1\pstang\LOCALS~1\Temp/cckxaaaa.s 			page 9


 342               		.stabs	"address:P(4,1)",64,0,124,25
 343               		.stabs	"data:P(4,1)",64,0,124,18
 344               	.global	ax88796Write
 345               		.type	ax88796Write, @function
 346               	ax88796Write:
 116:ax88796.c     **** 
 117:ax88796.c     **** 
 118:ax88796.c     **** #if MEMORY_MAPPED_NIC == 1
 119:ax88796.c     **** #define ax88796Write(AX88796_REG,AX88796_DATA) do{ *(volatile unsigned char *) \
 120:ax88796.c     **** 							(MEMORY_MAPPED_AX88796_OFFSET \
 121:ax88796.c     **** 							+ (((unsigned char)(AX88796_REG)) << 8)) = \
 122:ax88796.c     **** 							(unsigned char)(AX88796_DATA); } while(0)
 123:ax88796.c     **** #else
 124:ax88796.c     **** void ax88796Write(u08 address, u08 data)
 125:ax88796.c     **** {
 347               		.stabn 68,0,125,.LM47-ax88796Write
 348               	.LM47:
 349               	/* prologue: frame size=0 */
 350               	/* prologue end (size=0) */
 351 0154 982F      		mov r25,r24
 126:ax88796.c     **** 	// assert the address
 127:ax88796.c     ****     outb(AX88796_ADDRESS_PORT, address | (inp(AX88796_ADDRESS_PORT)&~AX88796_ADDRESS_MASK));
 352               		.stabn 68,0,127,.LM48-ax88796Write
 353               	.LM48:
 354 0156 85B3      		in r24,53-0x20
 355 0158 807E      		andi r24,lo8(-32)
 356 015a 892B      		or r24,r25
 357 015c 85BB      		out 53-0x20,r24
 128:ax88796.c     **** 
 129:ax88796.c     **** 	// set data bus as output and place data on bus
 130:ax88796.c     **** 	outb(AX88796_DATA_DDR, 0xFF);
 358               		.stabn 68,0,130,.LM49-ax88796Write
 359               	.LM49:
 360 015e 8FEF      		ldi r24,lo8(-1)
 361 0160 8ABB      		out 58-0x20,r24
 131:ax88796.c     **** 	outb(AX88796_DATA_PORT, data);
 362               		.stabn 68,0,131,.LM50-ax88796Write
 363               	.LM50:
 364 0162 6BBB      		out 59-0x20,r22
 132:ax88796.c     ****     
 133:ax88796.c     **** 	// clock write pin
 134:ax88796.c     **** 	cbi(AX88796_CONTROL_PORT, AX88796_CONTROL_WRITEPIN);
 365               		.stabn 68,0,134,.LM51-ax88796Write
 366               	.LM51:
 367 0164 AE98      		cbi 53-0x20,6
 135:ax88796.c     **** 	asm volatile ("nop");
 368               		.stabn 68,0,135,.LM52-ax88796Write
 369               	.LM52:
 370               	/* #APP */
 371 0166 0000      		nop
 136:ax88796.c     **** 	sbi(AX88796_CONTROL_PORT, AX88796_CONTROL_WRITEPIN);
 372               		.stabn 68,0,136,.LM53-ax88796Write
 373               	.LM53:
 374               	/* #NOAPP */
 375 0168 AE9A      		sbi 53-0x20,6
 137:ax88796.c     ****     
 138:ax88796.c     **** 	// set data bus back to input with pullups enabled
GAS LISTING C:\DOCUME~1\pstang\LOCALS~1\Temp/cckxaaaa.s 			page 10


 139:ax88796.c     **** 	outb(AX88796_DATA_DDR, 0x00);
 376               		.stabn 68,0,139,.LM54-ax88796Write
 377               	.LM54:
 378 016a 1ABA      		out 58-0x20,__zero_reg__
 140:ax88796.c     **** 	outb(AX88796_DATA_PORT, 0xFF);
 379               		.stabn 68,0,140,.LM55-ax88796Write
 380               	.LM55:
 381 016c 8BBB      		out 59-0x20,r24
 141:ax88796.c     **** }
 382               		.stabn 68,0,141,.LM56-ax88796Write
 383               	.LM56:
 384               	/* epilogue: frame size=0 */
 385 016e 0895      		ret
 386               	/* epilogue end (size=1) */
 387               	/* function ax88796Write size 15 (14) */
 388               		.size	ax88796Write, .-ax88796Write
 389               	.Lscope1:
 390               		.stabs	"",36,0,0,.Lscope1-ax88796Write
 391               		.stabs	"ax88796Read:F(4,1)",36,0,150,ax88796Read
 392               		.stabs	"address:P(4,1)",64,0,149,25
 393               	.global	ax88796Read
 394               		.type	ax88796Read, @function
 395               	ax88796Read:
 142:ax88796.c     **** #endif
 143:ax88796.c     **** 
 144:ax88796.c     **** #if MEMORY_MAPPED_NIC == 1
 145:ax88796.c     **** #define ax88796Read(AX88796_ADDRESS) (*(volatile unsigned char *) \
 146:ax88796.c     ****                        (MEMORY_MAPPED_AX88796_OFFSET \
 147:ax88796.c     ****                        + (((unsigned char)(AX88796_ADDRESS)) << 8)) )
 148:ax88796.c     **** #else
 149:ax88796.c     **** u08 ax88796Read(u08 address)
 150:ax88796.c     **** {
 396               		.stabn 68,0,150,.LM57-ax88796Read
 397               	.LM57:
 398               	/* prologue: frame size=0 */
 399               	/* prologue end (size=0) */
 400 0170 982F      		mov r25,r24
 151:ax88796.c     **** 	u08 byte;
 152:ax88796.c     ****    
 153:ax88796.c     **** 	// assert the address
 154:ax88796.c     ****     outb(AX88796_ADDRESS_PORT, address | (inp(AX88796_ADDRESS_PORT)&~AX88796_ADDRESS_MASK));

⌨️ 快捷键说明

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