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

📄 main.lis

📁 AVR以太网开发板中的几个例子。文件中定义了网卡芯片的IP地址,默认值是192.168.0.99。
💻 LIS
📖 第 1 页 / 共 3 页
字号:
                        .module main.c
                        .area data(ram, con, rel)
 0000           _rtl_isr_status::
 0000                   .blkb 1
                        .area idata
 0000 00                .byte 0
                        .area data(ram, con, rel)
 0001                   .dbfile D:\hexok项目\AVRNET项目\AVRNET光盘\icc例子\main.c
 0001                   .dbsym e rtl_isr_status _rtl_isr_status c
                        .area text(rom, con, rel)
 0000                   .dbfile D:\hexok项目\AVRNET项目\AVRNET光盘\icc例子\main.c
 0000                   .dbfunc e main _main fV
 0000           ;  rtl8019status -> R20
 0000           ;       udptest2 -> R22
 0000           ;       udptest1 -> R20
                        .even
 0000           _main::
 0000 2197              sbiw R28,1
 0002                   .dbline -1
 0002                   .dbline 24
 0002           ; //ICC-AVR application builder : 2002-1-1 7:57:28
 0002           ; // Target : M64
 0002           ; // Crystal: 12.000Mhz
 0002           ; #include "main.h"
 0002           ; #include "rtl8019as.h"
 0002           ; #include "arp.h"
 0002           ; #include "ip.h"
 0002           ; #include "icmp.h"
 0002           ; #include "udp.h"
 0002           ; 
 0002           ; 
 0002           ; extern unsigned int curr;//网卡RAM页指针
 0002           ; extern unsigned int curr_temp;
 0002           ; 
 0002           ; 
 0002           ; //////////////////////////////////////////////////////
 0002           ; //////////////////////////////////////////////////////
 0002           ; //////////////////////////////////////////////////////
 0002           ; 
 0002           ; unsigned char rtl_isr_status=0;
 0002           ; 
 0002           ; 
 0002           ; void main(void)
 0002           ; {
 0002                   .dbline 25
 0002           ;   unsigned char rtl8019status=0;
 0002 4427              clr R20
 0004                   .dbline 26
 0004           ;   unsigned char udptest1=0;
 0004                   .dbline 27
 0004           ;   unsigned char udptest2=0;
 0004 6627              clr R22
 0006                   .dbline 29
 0006           ;   
 0006           ;   key1_ok=0;
 0006 2224              clr R2
 0008 2092F001          sts _key1_ok,R2
 000C                   .dbline 30
 000C           ;   init_devices();
 000C A4D0              xcall _init_devices
 000E                   .dbline 31
 000E           ;   LED1_ON;
 000E 82B3              in R24,0x12
 0010 8F7E              andi R24,239
 0012 82BB              out 0x12,R24
 0014                   .dbline 32
 0014           ;   udp_init();
 0014 0E940000          xcall _udp_init
 0018                   .dbline 33
 0018           ;   curr=0x4d00;
 0018 80E0              ldi R24,19712
 001A 9DE4              ldi R25,77
 001C 9093FF01          sts _curr+1,R25
 0020 8093FE01          sts _curr,R24
 0024                   .dbline 34
 0024           ;   curr_temp=0;
 0024 2224              clr R2
 0026 3324              clr R3
 0028 3092FD01          sts _curr_temp+1,R3
 002C 2092FC01          sts _curr_temp,R2
 0030                   .dbline 35
 0030           ;   delay_100ms();
 0030 A9D0              xcall _delay_100ms
 0032                   .dbline 36
 0032           ;   rtl8019_reset();
 0032 0E940000          xcall _rtl8019_reset
 0036                   .dbline 37
 0036           ;   rtl8019_init();
 0036 0E940000          xcall _rtl8019_init
 003A                   .dbline 38
 003A           ;   rtl8019_writemynodeid();
 003A 0E940000          xcall _rtl8019_writemynodeid
 003E                   .dbline 39
 003E           ;   LED1_OFF;
 003E 949A              sbi 0x12,4
 0040 5CC0              xjmp L3
 0042           L2:
 0042                   .dbline 42
 0042           ;      
 0042           ;   while(1)
 0042           ;   {
 0042                   .dbline 43
 0042           ;    WDR();
 0042 A895              wdr
 0044                   .dbline 44
 0044           ;    uartsenddata();
 0044 D9D0              xcall _uartsenddata
 0046                   .dbline 46
 0046           ;    
 0046           ;    if(key1_ok)
 0046 2090F001          lds R2,_key1_ok
 004A 2220              tst R2
 004C 89F0              breq L5
 004E                   .dbline 47
 004E           ;    { 
 004E                   .dbline 48
 004E           ;     udpsendbuffer_ex[0]=udptest1;
 004E 40930031          sts _udpsendbuffer_ex,R20
 0052                   .dbline 49
 0052           ;       udpsendbuffer_ex[1]=udptest2;
 0052 60930131          sts _udpsendbuffer_ex+1,R22
 0056                   .dbline 50
 0056           ;     send_ippack(44,0x0800,17);
 0056 81E1              ldi R24,17
 0058 8883              std y+0,R24
 005A 20E0              ldi R18,2048
 005C 38E0              ldi R19,8
 005E 0CE2              ldi R16,44
 0060 10E0              ldi R17,0
 0062 0E940000          xcall _send_ippack
 0066                   .dbline 51
 0066           ;       key1_ok=0;
 0066 2224              clr R2
 0068 2092F001          sts _key1_ok,R2
 006C                   .dbline 52
 006C           ;       udptest1++;
 006C 4395              inc R20
 006E                   .dbline 53
 006E           ;       udptest2+=2;
 006E 6E5F              subi R22,254    ; addi 2
 0070                   .dbline 54
 0070           ;    }
 0070           L5:
 0070                   .dbline 57
 0070           ;    
 0070           ;    //rtl_errchk();
 0070           ;    switch(rtl_isr_status&0x03)
 0070 80910000          lds R24,_rtl_isr_status
 0074 9927              clr R25
 0076 8370              andi R24,3
 0078 9070              andi R25,0
 007A 5C01              movw R10,R24
 007C 8130              cpi R24,1
 007E E0E0              ldi R30,0
 0080 9E07              cpc R25,R30
 0082 29F0              breq L11
 0084 8230              cpi R24,2
 0086 E0E0              ldi R30,0
 0088 9E07              cpc R25,R30
 008A 91F1              breq L14
 008C 36C0              xjmp L8
 008E           X0:
 008E                   .dbline 58
 008E           ;    {//收发数据包事件处理
 008E           L11:
 008E                   .dbline 61
 008E           ;     case 0x01://接收到有效数据包
 008E           ;            //isr_ok=0;
 008E           ;            rtl8019_read(curr,1536);
 008E 20E0              ldi R18,1536
 0090 36E0              ldi R19,6
 0092 0091FE01          lds R16,_curr
 0096 1091FF01          lds R17,_curr+1
 009A 0E940000          xcall _rtl8019_read
 009E                   .dbline 62
 009E           ;                rtl_packhandle();//数据包处理
 009E 0E940000          xcall _rtl_packhandle
 00A2                   .dbline 63
 00A2           ;                curr_temp=curr;
 00A2 2090FE01          lds R2,_curr
 00A6 3090FF01          lds R3,_curr+1
 00AA 3092FD01          sts _curr_temp+1,R3
 00AE 2092FC01          sts _curr_temp,R2
 00B2                   .dbline 64
 00B2           ;                curr=rtl_readcurr();
 00B2 0E940000          xcall _rtl_readcurr
 00B6 202E              mov R2,R16
 00B8 3324              clr R3
 00BA 3092FF01          sts _curr+1,R3
 00BE 2092FE01          sts _curr,R2
 00C2                   .dbline 65
 00C2           ;                curr<<=8;
 00C2 322C              mov R3,R2
 00C4 2224              clr R2
 00C6 3092FF01          sts _curr+1,R3
 00CA 2092FE01          sts _curr,R2
 00CE                   .dbline 66
 00CE           ;            if(curr<curr_temp){rtl_setcurr();}//如果接收缓冲满,则重置
 00CE 2090FC01          lds R2,_curr_temp
 00D2 3090FD01          lds R3,_curr_temp+1
 00D6 4090FE01          lds R4,_curr
 00DA 5090FF01          lds R5,_curr+1
 00DE 4214              cp R4,R2
 00E0 5304              cpc R5,R3
 00E2 10F4              brsh L12
 00E4                   .dbline 66
 00E4                   .dbline 66
 00E4 0E940000          xcall _rtl_setcurr
 00E8                   .dbline 66
 00E8           L12:
 00E8                   .dbline 67
 00E8           ;                rtl_isr_status=0;
 00E8 2224              clr R2
 00EA 20920000          sts _rtl_isr_status,R2
 00EE                   .dbline 68
 00EE           ;                break;
 00EE 05C0              xjmp L9
 00F0           L14:
 00F0                   .dbline 71
 00F0           ;       case 0x02://数据包已正确发送
 00F0           ;            //isr_ok=0;
 00F0           ;                rtl_setcurr();
 00F0 0E940000          xcall _rtl_setcurr
 00F4                   .dbline 72
 00F4           ;                rtl_isr_status=0;
 00F4 2224              clr R2
 00F6 20920000          sts _rtl_isr_status,R2
 00FA                   .dbline 73
 00FA           ;            break;
 00FA           L8:
 00FA           L9:
 00FA                   .dbline 75
 00FA           L3:
 00FA                   .dbline 41
 00FA A3CF              xjmp L2
 00FC           X1:
 00FC                   .dbline -2
 00FC           L1:
 00FC 2196              adiw R28,1
 00FE                   .dbline 0 ; func end
 00FE 0895              ret
 0100                   .dbsym r rtl8019status 20 c
 0100                   .dbsym r udptest2 22 c
 0100                   .dbsym r udptest1 20 c
 0100                   .dbend
                        .area vector(rom, abs)
                        .org 120
 0078 0C948000          jmp _uart1_rx_isr
                        .area text(rom, con, rel)
 0100                   .dbfile D:\hexok项目\AVRNET项目\AVRNET光盘\icc例子\main.c
 0100                   .dbfunc e uart1_rx_isr _uart1_rx_isr fV
                        .even
 0100           _uart1_rx_isr::
 0100                   .dbline -1
 0100                   .dbline 81
 0100           ;    }
 0100           ;   }
 0100           ; }
 0100           ; 
 0100           ; 
 0100           ; #pragma interrupt_handler uart1_rx_isr:31
 0100           ; void uart1_rx_isr(void)
 0100           ; {
 0100                   .dbline -2
 0100           L15:
 0100                   .dbline 0 ; func end
 0100 1895              reti
 0102                   .dbend
                        .area vector(rom, abs)
                        .org 4
 0004 0C948100          jmp _int0_isr
                        .area text(rom, con, rel)
 0102                   .dbfile D:\hexok项目\AVRNET项目\AVRNET光盘\icc例子\main.c
 0102                   .dbfunc e int0_isr _int0_isr fV
                        .even
 0102           _int0_isr::
 0102 0E940000          xcall push_lset
 0106                   .dbline -1
 0106                   .dbline 88
 0106           ;  //uart has received a character in UDR
 0106           ; }
 0106           ; 
 0106           ; 
 0106           ; #pragma interrupt_handler int0_isr:2
 0106           ; void int0_isr(void)
 0106           ; {
 0106                   .dbline 89
 0106           ;  rtl_isr_status=rtl_isrstatus();
 0106 0E940000          xcall _rtl_isrstatus
 010A 00930000          sts _rtl_isr_status,R16
 010E                   .dbline -2
 010E           L16:
 010E 0E940000          xcall pop_lset
 0112                   .dbline 0 ; func end
 0112 1895              reti
 0114                   .dbend
                        .area vector(rom, abs)
                        .org 8
 0008 0C948A00          jmp _int1_isr
                        .area text(rom, con, rel)
 0114                   .dbfile D:\hexok项目\AVRNET项目\AVRNET光盘\icc例子\main.c
 0114                   .dbfunc e int1_isr _int1_isr fV
                        .even
 0114           _int1_isr::
 0114 8A93              st -y,R24
 0116 8FB7              in R24,0x3f
 0118 8A93              st -y,R24
 011A                   .dbline -1
 011A                   .dbline 95
 011A           ;  //isr_ok=1;
 011A           ; }
 011A           ; 
 011A           ; #pragma interrupt_handler int1_isr:3
 011A           ; void int1_isr(void)
 011A           ; {
 011A                   .dbline 96
 011A           ;  key1_ok=1;//external interupt on INT1
 011A 81E0              ldi R24,1
 011C 8093F001          sts _key1_ok,R24
 0120                   .dbline -2
 0120           L17:
 0120 8991              ld R24,y+
 0122 8FBF              out 0x3f,R24
 0124 8991              ld R24,y+

⌨️ 快捷键说明

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