📄 main.lis
字号:
.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 + -