📄 main.lis
字号:
0126 .dbline 0 ; func end
0126 1895 reti
0128 .dbend
0128 .dbfunc e port_init _port_init fV
.even
0128 _port_init::
0128 .dbline -1
0128 .dbline 101
0128 ; }
0128 ;
0128 ; //////////////////////////////////////////////////////////////////
0128 ; void port_init(void)
0128 ; {
0128 .dbline 102
0128 ; PORTA = 0x00;
0128 2224 clr R2
012A 2BBA out 0x1b,R2
012C .dbline 103
012C ; DDRA = 0x00;
012C 2ABA out 0x1a,R2
012E .dbline 104
012E ; PORTB = 0x00;
012E 28BA out 0x18,R2
0130 .dbline 105
0130 ; DDRB = 0x00;
0130 27BA out 0x17,R2
0132 .dbline 106
0132 ; PORTC = 0x00; //m103 output only
0132 25BA out 0x15,R2
0134 .dbline 107
0134 ; DDRC = 0x00;
0134 24BA out 0x14,R2
0136 .dbline 108
0136 ; PORTD = 0x02;
0136 82E0 ldi R24,2
0138 82BB out 0x12,R24
013A .dbline 109
013A ; DDRD = 0x30;
013A 80E3 ldi R24,48
013C 81BB out 0x11,R24
013E .dbline 110
013E ; PORTE = 0x00;
013E 23B8 out 0x3,R2
0140 .dbline 111
0140 ; DDRE = 0x00;
0140 22B8 out 0x2,R2
0142 .dbline 112
0142 ; PORTF = 0x00;
0142 20926200 sts 98,R2
0146 .dbline 113
0146 ; DDRF = 0x00;
0146 20926100 sts 97,R2
014A .dbline 114
014A ; PORTG = 0x00;
014A 20926500 sts 101,R2
014E .dbline 115
014E ; DDRG = 0x08;
014E 88E0 ldi R24,8
0150 80936400 sts 100,R24
0154 .dbline -2
0154 L18:
0154 .dbline 0 ; func end
0154 0895 ret
0156 .dbend
0156 .dbfunc e init_devices _init_devices fV
.even
0156 _init_devices::
0156 .dbline -1
0156 .dbline 120
0156 ; }
0156 ;
0156 ; //call this routine to initialize all peripherals
0156 ; void init_devices(void)
0156 ; {
0156 .dbline 122
0156 ; //stop errant interrupts until set up
0156 ; CLI(); //disable all interrupts
0156 F894 cli
0158 .dbline 123
0158 ; XDIV = 0x00; //xtal divider
0158 2224 clr R2
015A 2CBE out 0x3c,R2
015C .dbline 124
015C ; XMCRA = 0x04; //external memory
015C 84E0 ldi R24,4
015E 80936D00 sts 109,R24
0162 .dbline 125
0162 ; mapping_init();
0162 65D0 xcall _mapping_init
0164 .dbline 126
0164 ; port_init();
0164 E1DF xcall _port_init
0166 .dbline 127
0166 ; uart1_init();
0166 37D0 xcall _uart1_init
0168 .dbline 129
0168 ;
0168 ; MCUCR = 0x80;
0168 80E8 ldi R24,128
016A 85BF out 0x35,R24
016C .dbline 130
016C ; EICRA = 0x0b; //extended ext ints
016C 8BE0 ldi R24,11
016E 80936A00 sts 106,R24
0172 .dbline 131
0172 ; EICRB = 0x00; //extended ext ints
0172 2224 clr R2
0174 2ABE out 0x3a,R2
0176 .dbline 132
0176 ; EIMSK = 0x03;
0176 83E0 ldi R24,3
0178 89BF out 0x39,R24
017A .dbline 133
017A ; TIMSK = 0x00; //timer interrupt sources
017A 27BE out 0x37,R2
017C .dbline 134
017C ; ETIMSK = 0x00; //extended timer interrupt sources
017C 20927D00 sts 125,R2
0180 .dbline 135
0180 ; SEI(); //re-enable interrupts
0180 7894 sei
0182 .dbline -2
0182 L19:
0182 .dbline 0 ; func end
0182 0895 ret
0184 .dbend
0184 .dbfunc e delay_100ms _delay_100ms fV
0184 ; i -> R16,R17
0184 ; k -> R18,R19
.even
0184 _delay_100ms::
0184 .dbline -1
0184 .dbline 140
0184 ; //all peripherals are now initialized
0184 ; }
0184 ;
0184 ; void delay_100ms(void)
0184 ; {
0184 .dbline 141
0184 ; unsigned int i=0;
0184 0027 clr R16
0186 1127 clr R17
0188 .dbline 142
0188 ; unsigned int k=0;
0188 2227 clr R18
018A 3327 clr R19
018C .dbline 143
018C ; for(;i<1000;i++)
018C 0CC0 xjmp L24
018E L21:
018E .dbline 144
018E ; {
018E .dbline 145
018E ; for(k=0;k<100;k++)
018E 2227 clr R18
0190 3327 clr R19
0192 03C0 xjmp L28
0194 L25:
0194 .dbline 146
0194 .dbline 147
0194 A895 wdr
0196 .dbline 148
0196 L26:
0196 .dbline 145
0196 2F5F subi R18,255 ; offset = 1
0198 3F4F sbci R19,255
019A L28:
019A .dbline 145
019A 2436 cpi R18,100
019C E0E0 ldi R30,0
019E 3E07 cpc R19,R30
01A0 C8F3 brlo L25
01A2 .dbline 149
01A2 L22:
01A2 .dbline 143
01A2 0F5F subi R16,255 ; offset = 1
01A4 1F4F sbci R17,255
01A6 L24:
01A6 .dbline 143
01A6 083E cpi R16,232
01A8 E3E0 ldi R30,3
01AA 1E07 cpc R17,R30
01AC 80F3 brlo L21
01AE .dbline -2
01AE L20:
01AE .dbline 0 ; func end
01AE 0895 ret
01B0 .dbsym r i 16 i
01B0 .dbsym r k 18 i
01B0 .dbend
01B0 .dbfunc e rtl_errchk _rtl_errchk fV
.even
01B0 _rtl_errchk::
01B0 .dbline -1
01B0 .dbline 154
01B0 ; {
01B0 ; WDR();
01B0 ; }
01B0 ; }
01B0 ; }
01B0 ;
01B0 ;
01B0 ; void rtl_errchk(void)
01B0 ; {
01B0 .dbline 155
01B0 ; if(rtl_isrstatus()&0x04) //异常状态监视
01B0 0E940000 xcall _rtl_isrstatus
01B4 02FF sbrs R16,2
01B6 0EC0 rjmp L30
01B8 .dbline 156
01B8 ; {
01B8 .dbline 157
01B8 ; if(rtl_isrstatus()&0x04)
01B8 0E940000 xcall _rtl_isrstatus
01BC 02FF sbrs R16,2
01BE 0AC0 rjmp L32
01C0 .dbline 158
01C0 ; {
01C0 .dbline 159
01C0 ; rtl8019_hotreset(); //网卡芯片热复位
01C0 0E940000 xcall _rtl8019_hotreset
01C4 .dbline 160
01C4 ; rtl8019_init(); //重新初始化
01C4 0E940000 xcall _rtl8019_init
01C8 .dbline 161
01C8 ; curr_temp=0x0000;
01C8 2224 clr R2
01CA 3324 clr R3
01CC 3092FD01 sts _curr_temp+1,R3
01D0 2092FC01 sts _curr_temp,R2
01D4 .dbline 162
01D4 ; }
01D4 L32:
01D4 .dbline 163
01D4 L30:
01D4 .dbline -2
01D4 L29:
01D4 .dbline 0 ; func end
01D4 0895 ret
01D6 .dbend
01D6 .dbfunc e uart1_init _uart1_init fV
.even
01D6 _uart1_init::
01D6 .dbline -1
01D6 .dbline 171
01D6 ; }
01D6 ; }
01D6 ;
01D6 ;
01D6 ; //UART1 initialize
01D6 ; // desired baud rate:19200
01D6 ; // actual baud rate:19200 (0.0%)
01D6 ; void uart1_init(void)
01D6 ; {
01D6 .dbline 172
01D6 ; UCSR1B = 0x00; //disable while setting baud rate
01D6 2224 clr R2
01D8 20929A00 sts 154,R2
01DC .dbline 173
01DC ; UCSR1A = 0x00;
01DC 20929B00 sts 155,R2
01E0 .dbline 174
01E0 ; UCSR1C = 0x06;
01E0 86E0 ldi R24,6
01E2 80939D00 sts 157,R24
01E6 .dbline 175
01E6 ; UBRR1L = 0x26; //set baud rate lo
01E6 86E2 ldi R24,38
01E8 80939900 sts 153,R24
01EC .dbline 176
01EC ; UBRR1H = 0x00; //set baud rate hi
01EC 20929800 sts 152,R2
01F0 .dbline 177
01F0 ; UCSR1B = 0x98;
01F0 88E9 ldi R24,152
01F2 80939A00 sts 154,R24
01F6 .dbline -2
01F6 L34:
01F6 .dbline 0 ; func end
01F6 0895 ret
01F8 .dbend
01F8 .dbfunc e uartsenddata _uartsenddata fV
01F8 ; udpdata -> R20,R21
.even
01F8 _uartsenddata::
01F8 0E940000 xcall push_gset1
01FC .dbline -1
01FC .dbline 182
01FC ; }
01FC ;
01FC ;
01FC ; void uartsenddata(void)
01FC ; {
01FC .dbline 183
01FC ; unsigned int udpdata=0;
01FC 4427 clr R20
01FE 5527 clr R21
0200 .dbline 185
0200 ;
0200 ; if(UCSR1A&0x20)
0200 20909B00 lds R2,155
0204 25FE sbrs R2,5
0206 03C0 rjmp L36
0208 .dbline 186
0208 ; {
0208 .dbline 187
0208 ; udpdata=udp_readdata();
0208 0E940000 xcall _udp_readdata
020C A801 movw R20,R16
020E .dbline 188
020E ; }
020E L36:
020E .dbline 189
020E 57FF sbrs R21,7
0210 06C0 rjmp L38
0212 .dbline 190
0212 .dbline 191
0212 CA01 movw R24,R20
0214 9070 andi R25,0
0216 80939C00 sts 156,R24
021A .dbline 192
021A 4427 clr R20
021C 5527 clr R21
021E .dbline 193
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -