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

📄 rtl8019as.lis

📁 AVR以太网开发板中的几个例子。文件中定义了网卡芯片的IP地址,默认值是192.168.0.99。
💻 LIS
📖 第 1 页 / 共 4 页
字号:
                        .module rtl8019as.c
                        .area text(rom, con, rel)
 0000                   .dbfile D:\hexok项目\AVRNET项目\AVRNET光盘\icc例子\rtl8019as.c
 0000                   .dbfunc e rtl8019_reset _rtl8019_reset fV
 0000           ;           temp -> R20
                        .even
 0000           _rtl8019_reset::
 0000 0E940000          xcall push_gset1
 0004                   .dbline -1
 0004                   .dbline 23
 0004           ; #include "main.h"
 0004           ; #include "rtl8019as.h"
 0004           ; #include "arp.h"
 0004           ; #include "ip.h"
 0004           ; #include "icmp.h"
 0004           ; #include "udp.h"
 0004           ; 
 0004           ; unsigned int count;//需要读或写的字节数
 0004           ; unsigned char tempmac_d5;
 0004           ; unsigned char tempmac_d4;
 0004           ; unsigned char tempmac_d3;
 0004           ; unsigned char tempmac_d2;
 0004           ; unsigned char tempmac_d1;
 0004           ; unsigned char tempmac_d0;
 0004           ; 
 0004           ; extern unsigned char tempip_d3;
 0004           ; extern unsigned char tempip_d2;
 0004           ; extern unsigned char tempip_d1;
 0004           ; extern unsigned char tempip_d0;
 0004           ; extern unsigned int ip_id;
 0004           ; 
 0004           ; void rtl8019_reset(void)
 0004           ; {
 0004                   .dbline 24
 0004           ;  unsigned char temp=0;
 0004 4427              clr R20
 0006                   .dbline 26
 0006           ;  
 0006           ;  RTLRST_SET;
 0006 80916500          lds R24,101
 000A 8860              ori R24,8
 000C 80936500          sts 101,R24
 0010                   .dbline 27
 0010           ;  delay_100ms();
 0010 0E940000          xcall _delay_100ms
 0014                   .dbline 28
 0014           ;  RTLRST_CLR;
 0014 80916500          lds R24,101
 0018 877F              andi R24,247
 001A 80936500          sts 101,R24
 001E                   .dbline 29
 001E           ;  delay_100ms();
 001E 0E940000          xcall _delay_100ms
 0022                   .dbline 30
 0022           ;  temp=reg_1f;//读网卡的复位端口
 0022 40910000          lds R20,_reg_1f
 0026                   .dbline 31
 0026           ;  delay_100ms();
 0026 0E940000          xcall _delay_100ms
 002A                   .dbline 32
 002A           ;  reg_1f=temp; //写网卡的复位端口
 002A 40930000          sts _reg_1f,R20
 002E                   .dbline 33
 002E           ;  delay_100ms();
 002E 0E940000          xcall _delay_100ms
 0032                   .dbline -2
 0032           L1:
 0032 0E940000          xcall pop_gset1
 0036                   .dbline 0 ; func end
 0036 0895              ret
 0038                   .dbsym r temp 20 c
 0038                   .dbend
 0038                   .dbfunc e rtl8019_hotreset _rtl8019_hotreset fV
 0038           ;           temp -> R16
                        .even
 0038           _rtl8019_hotreset::
 0038                   .dbline -1
 0038                   .dbline 37
 0038           ; }
 0038           ; 
 0038           ; void rtl8019_hotreset(void)
 0038           ; {
 0038                   .dbline 38
 0038           ;  unsigned char temp=0;
 0038 0027              clr R16
 003A                   .dbline 40
 003A           ;  
 003A           ;  temp=reg_1f;//读网卡的复位端口
 003A 00910000          lds R16,_reg_1f
 003E                   .dbline 41
 003E           ;  reg_1f=temp; //写网卡的复位端口
 003E 00930000          sts _reg_1f,R16
 0042                   .dbline -2
 0042           L2:
 0042                   .dbline 0 ; func end
 0042 0895              ret
 0044                   .dbsym r temp 16 c
 0044                   .dbend
 0044                   .dbfunc e rtl8019_page _rtl8019_page fV
 0044           ;           temp -> R20
 0044           ;     pagenumber -> R16
                        .even
 0044           _rtl8019_page::
 0044 0E940000          xcall push_gset1
 0048                   .dbline -1
 0048                   .dbline 45
 0048           ; }
 0048           ; 
 0048           ; void rtl8019_page(unsigned char pagenumber)
 0048           ; {
 0048                   .dbline 47
 0048           ;  unsigned char temp;
 0048           ;  temp=reg_00;
 0048 40910000          lds R20,_reg_00
 004C                   .dbline 48
 004C           ;  temp=temp&0x3B;          //TXP位要置为0.
 004C 4B73              andi R20,59
 004E                   .dbline 49
 004E           ;  pagenumber=pagenumber<<6;
 004E 000F              lsl R16
 0050 000F              lsl R16
 0052 000F              lsl R16
 0054 000F              lsl R16
 0056 000F              lsl R16
 0058 000F              lsl R16
 005A                   .dbline 50
 005A           ;  temp=temp|pagenumber;
 005A 402B              or R20,R16
 005C                   .dbline 51
 005C           ;  reg_00=temp;
 005C 40930000          sts _reg_00,R20
 0060                   .dbline -2
 0060           L3:
 0060 0E940000          xcall pop_gset1
 0064                   .dbline 0 ; func end
 0064 0895              ret
 0066                   .dbsym r temp 20 c
 0066                   .dbsym r pagenumber 16 c
 0066                   .dbend
 0066                   .dbfunc e rtl8019_init _rtl8019_init fV
                        .even
 0066           _rtl8019_init::
 0066                   .dbline -1
 0066                   .dbline 55
 0066           ; }
 0066           ; 
 0066           ; void rtl8019_init(void)
 0066           ; {
 0066                   .dbline 57
 0066           ;  //rtl8019_page(0); //选择页0的寄存器 
 0066           ;  reg_00=0x21; //选择页0的寄存器,网卡停止运行。
 0066 81E2              ldi R24,33
 0068 80930000          sts _reg_00,R24
 006C                   .dbline 58
 006C           ;  reg_01=0x4d; //寄存器Pstart
 006C 8DE4              ldi R24,77
 006E 80930000          sts _reg_01,R24
 0072                   .dbline 59
 0072           ;  reg_02=0x80; //Pstop
 0072 80E8              ldi R24,128
 0074 80930000          sts _reg_02,R24
 0078                   .dbline 60
 0078           ;  reg_03=0x4c; //BNRY
 0078 8CE4              ldi R24,76
 007A 80930000          sts _reg_03,R24
 007E                   .dbline 61
 007E           ;  reg_04=0x40; //TPSR
 007E 80E4              ldi R24,64
 0080 80930000          sts _reg_04,R24
 0084                   .dbline 62
 0084           ;  reg_05=0xfe;   //TBCR0
 0084 8EEF              ldi R24,254
 0086 80930000          sts _reg_05,R24
 008A                   .dbline 63
 008A           ;  reg_06=0x00;   //TBCR1
 008A 2224              clr R2
 008C 20920000          sts _reg_06,R2
 0090                   .dbline 64
 0090           ;  reg_07=0xFF; //ISR
 0090 8FEF              ldi R24,255
 0092 80930000          sts _reg_07,R24
 0096                   .dbline 65
 0096           ;  reg_0c=0xcc; //RCR
 0096 8CEC              ldi R24,204
 0098 80930000          sts _reg_0c,R24
 009C                   .dbline 66
 009C           ;  reg_0d=0xe0; //TCR
 009C 80EE              ldi R24,224
 009E 80930000          sts _reg_0d,R24
 00A2                   .dbline 67
 00A2           ;  reg_0e=0xc8; //DCR 数据配置寄存器 8位数据dma 
 00A2 88EC              ldi R24,200
 00A4 80930000          sts _reg_0e,R24
 00A8                   .dbline 68
 00A8           ;  reg_0f=0xff; //IMR all interrupt 
 00A8 8FEF              ldi R24,255
 00AA 80930000          sts _reg_0f,R24
 00AE                   .dbline 69
 00AE           ;  rtl8019_page(1); //选择页1的寄存器
 00AE 01E0              ldi R16,1
 00B0 C9DF              xcall _rtl8019_page
 00B2                   .dbline 70
 00B2           ;  reg_07=0x4d; //CURR
 00B2 8DE4              ldi R24,77
 00B4 80930000          sts _reg_07,R24
 00B8                   .dbline 71
 00B8           ;  reg_08=0x00; //MAR0
 00B8 2224              clr R2
 00BA 20920000          sts _reg_08,R2
 00BE                   .dbline 72
 00BE           ;  reg_09=0x41; //MAR1
 00BE 81E4              ldi R24,65
 00C0 80930000          sts _reg_09,R24
 00C4                   .dbline 73
 00C4           ;  reg_0a=0x00; //MAR2
 00C4 20920000          sts _reg_0a,R2
 00C8                   .dbline 74
 00C8           ;  reg_0b=0x80; //MAR3
 00C8 80E8              ldi R24,128
 00CA 80930000          sts _reg_0b,R24
 00CE                   .dbline 75
 00CE           ;  reg_0c=0x00; //MAR4
 00CE 20920000          sts _reg_0c,R2
 00D2                   .dbline 76
 00D2           ;  reg_0d=0x00; //MAR5
 00D2 20920000          sts _reg_0d,R2
 00D6                   .dbline 77
 00D6           ;  reg_0e=0x00; //MAR6
 00D6 20920000          sts _reg_0e,R2
 00DA                   .dbline 78
 00DA           ;  reg_0f=0x00; //MAR7
 00DA 20920000          sts _reg_0f,R2
 00DE                   .dbline 80
 00DE           ;  //rtl8019_page(0); 
 00DE           ;  reg_00=0x22; //选择页0寄存器,网卡执行命令。 
 00DE 82E2              ldi R24,34
 00E0 80930000          sts _reg_00,R24
 00E4                   .dbline -2
 00E4           L4:
 00E4                   .dbline 0 ; func end
 00E4 0895              ret
 00E6                   .dbend
 00E6                   .dbfunc e rtl8019_writemynodeid _rtl8019_writemynodeid fV
                        .even
 00E6           _rtl8019_writemynodeid::
 00E6                   .dbline -1
 00E6                   .dbline 85
 00E6           ; } 
 00E6           ; 
 00E6           ; void rtl8019_writemynodeid(void)
 00E6           ; 
 00E6           ; { 
 00E6                   .dbline 86
 00E6           ;  rtl8019_page(1);
 00E6 01E0              ldi R16,1
 00E8 ADDF              xcall _rtl8019_page
 00EA                   .dbline 87
 00EA           ;  reg_01=mynodeid_0; //PAR0
 00EA 8FE4              ldi R24,79
 00EC 80930000          sts _reg_01,R24
 00F0                   .dbline 88
 00F0           ;  reg_02=mynodeid_1; //PAR1
 00F0 86E4              ldi R24,70
 00F2 80930000          sts _reg_02,R24
 00F6                   .dbline 89
 00F6           ;  reg_03=mynodeid_2; //PAR2
 00F6 80930000          sts _reg_03,R24
 00FA                   .dbline 90
 00FA           ;  reg_04=mynodeid_3; //PAR3
 00FA 89E4              ldi R24,73
 00FC 80930000          sts _reg_04,R24
 0100                   .dbline 91
 0100           ;  reg_05=mynodeid_4; //PAR4
 0100 83E4              ldi R24,67
 0102 80930000          sts _reg_05,R24
 0106                   .dbline 92
 0106           ;  reg_06=mynodeid_5; //PAR5
 0106 85E4              ldi R24,69
 0108 80930000          sts _reg_06,R24
 010C                   .dbline -2
 010C           L5:
 010C                   .dbline 0 ; func end
 010C 0895              ret
 010E                   .dbend
 010E                   .dbfunc e rtl_status _rtl_status fc
                        .even
 010E           _rtl_status::
 010E                   .dbline -1
 010E                   .dbline 96
 010E           ; }
 010E           ; 
 010E           ; unsigned char rtl_status(void)
 010E           ; {
 010E                   .dbline 97
 010E           ;  rtl8019_page(0);
 010E 0027              clr R16
 0110 99DF              xcall _rtl8019_page
 0112                   .dbline 98
 0112           ;  return reg_0c;
 0112 00910000          lds R16,_reg_0c
 0116                   .dbline -2
 0116           L6:
 0116                   .dbline 0 ; func end
 0116 0895              ret
 0118                   .dbend
 0118                   .dbfunc e rtl_isrstatus _rtl_isrstatus fc
 0118           ;   rtlisrstatus -> R20
                        .even
 0118           _rtl_isrstatus::
 0118 0E940000          xcall push_gset1
 011C                   .dbline -1
 011C                   .dbline 102
 011C           ; }
 011C           ; 
 011C           ; unsigned char rtl_isrstatus(void)
 011C           ; {
 011C                   .dbline 104
 011C           ;  unsigned char rtlisrstatus;
 011C           ;  rtl8019_page(0);
 011C 0027              clr R16
 011E 92DF              xcall _rtl8019_page
 0120                   .dbline 105
 0120           ;  rtlisrstatus=reg_07;
 0120 40910000          lds R20,_reg_07
 0124                   .dbline 106
 0124           ;  reg_07=0xFF;
 0124 8FEF              ldi R24,255
 0126 80930000          sts _reg_07,R24
 012A                   .dbline 107
 012A           ;  return rtlisrstatus;
 012A 042F              mov R16,R20
 012C                   .dbline -2

⌨️ 快捷键说明

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