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

📄 uart.lis

📁 AVR单片机ATMEGA128实习之—串口通信(附带Proteus仿真例子)
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 0190           ;       {
 0190                   .dbline 238
 0190           ;               Rx_counter += 1;
 0190 8F5F              subi R24,255    ; addi 1
 0192 80930000          sts _Rx_counter,R24
 0196                   .dbline 239
 0196           ;       }
 0196 03C0              xjmp L42
 0198           L41:
 0198                   .dbline 241
 0198           ;       else
 0198           ;       {
 0198                   .dbline 242
 0198           ;               Rx_counter = 1;
 0198 81E0              ldi R24,1
 019A 80930000          sts _Rx_counter,R24
 019E                   .dbline 243
 019E           ;       }
 019E           L42:
 019E                   .dbline 245
 019E           ; 
 019E           ;       Rx_data_buf[Rx_counter - 1] = Rx_data; 
 019E 80E0              ldi R24,<_Rx_data_buf-1
 01A0 90E0              ldi R25,>_Rx_data_buf-1
 01A2 E0910000          lds R30,_Rx_counter
 01A6 FF27              clr R31
 01A8 E80F              add R30,R24
 01AA F91F              adc R31,R25
 01AC 20900600          lds R2,_Rx_data
 01B0 2082              std z+0,R2
 01B2                   .dbline 246
 01B2           ;       PORTB = Green_LED_on;
 01B2 C198              cbi 0x18,1
 01B4                   .dbline -2
 01B4                   .dbline 248
 01B4           ; 
 01B4           ; }
 01B4           L40:
 01B4 2990              ld R2,y+
 01B6 2FBE              out 0x3f,R2
 01B8 F991              ld R31,y+
 01BA E991              ld R30,y+
 01BC 9991              ld R25,y+
 01BE 8991              ld R24,y+
 01C0 2990              ld R2,y+
 01C2                   .dbline 0 ; func end
 01C2 1895              reti
 01C4                   .dbend
 01C4                   .dbfunc e External_INT_0 _External_INT_0 fV
                        .even
 01C4           _External_INT_0::
 01C4 0A92              st -y,R0
 01C6 0FB6              in R0,0x3f
 01C8 0A92              st -y,R0
 01CA                   .dbline -1
 01CA                   .dbline 251
 01CA           ; 
 01CA           ; void External_INT_0(void)
 01CA           ; {
 01CA                   .dbline 252
 01CA           ;       UCSR0B |= 0x40;
 01CA 569A              sbi 0xa,6
 01CC                   .dbline 253
 01CC           ;       UCSR0B &= ~(0x80);
 01CC 5798              cbi 0xa,7
 01CE                   .dbline -2
 01CE                   .dbline 254
 01CE           ; }
 01CE           L44:
 01CE 0990              ld R0,y+
 01D0 0FBE              out 0x3f,R0
 01D2 0990              ld R0,y+
 01D4                   .dbline 0 ; func end
 01D4 1895              reti
 01D6                   .dbend
 01D6                   .dbfunc e External_INT_1 _External_INT_1 fV
                        .even
 01D6           _External_INT_1::
 01D6 2A92              st -y,R2
 01D8 8A93              st -y,R24
 01DA 9A93              st -y,R25
 01DC 2FB6              in R2,0x3f
 01DE 2A92              st -y,R2
 01E0                   .dbline -1
 01E0                   .dbline 257
 01E0           ; 
 01E0           ; void External_INT_1(void)
 01E0           ; {
 01E0                   .dbline 258
 01E0           ;       if (Type_flag < 4 )
 01E0 80910E00          lds R24,_Type_flag
 01E4 8430              cpi R24,4
 01E6 20F4              brsh L46
 01E8                   .dbline 259
 01E8           ;       {
 01E8                   .dbline 260
 01E8           ;               Type_flag += 1;
 01E8 8F5F              subi R24,255    ; addi 1
 01EA 80930E00          sts _Type_flag,R24
 01EE                   .dbline 261
 01EE           ;       }
 01EE 03C0              xjmp L47
 01F0           L46:
 01F0                   .dbline 263
 01F0                   .dbline 264
 01F0 2224              clr R2
 01F2 20920E00          sts _Type_flag,R2
 01F6                   .dbline 265
 01F6           L47:
 01F6                   .dbline -2
 01F6                   .dbline 266
 01F6           ;       else
 01F6           ;       {
 01F6           ;               Type_flag = 0;
 01F6           ;       }
 01F6           ; }
 01F6           L45:
 01F6 2990              ld R2,y+
 01F8 2FBE              out 0x3f,R2
 01FA 9991              ld R25,y+
 01FC 8991              ld R24,y+
 01FE 2990              ld R2,y+
 0200                   .dbline 0 ; func end
 0200 1895              reti
 0202                   .dbend
 0202                   .dbfunc e External_INT_2 _External_INT_2 fV
                        .even
 0202           _External_INT_2::
 0202 2A92              st -y,R2
 0204 8A93              st -y,R24
 0206 9A93              st -y,R25
 0208 EA93              st -y,R30
 020A FA93              st -y,R31
 020C 2FB6              in R2,0x3f
 020E 2A92              st -y,R2
 0210                   .dbline -1
 0210                   .dbline 268
 0210           ; void External_INT_2(void)
 0210           ; {
 0210                   .dbline 270
 0210           ;       
 0210           ;       if(m < 12)
 0210 80910000          lds R24,_m
 0214 8C30              cpi R24,12
 0216 20F4              brsh L49
 0218                   .dbline 271
 0218           ;       {
 0218                   .dbline 272
 0218           ;               m += 1;
 0218 8F5F              subi R24,255    ; addi 1
 021A 80930000          sts _m,R24
 021E                   .dbline 273
 021E           ;       }
 021E 03C0              xjmp L50
 0220           L49:
 0220                   .dbline 275
 0220           ;       else
 0220           ;       {
 0220                   .dbline 276
 0220           ;               m = 1;
 0220 81E0              ldi R24,1
 0222 80930000          sts _m,R24
 0226                   .dbline 277
 0226           ;       }
 0226           L50:
 0226                   .dbline 279
 0226           ; 
 0226           ;       Display_type = 0x0f;
 0226 8FE0              ldi R24,15
 0228 80930200          sts _Display_type,R24
 022C                   .dbline 280
 022C           ;       Display_value = Rx_data_buf[m-1];
 022C 80E0              ldi R24,<_Rx_data_buf-1
 022E 90E0              ldi R25,>_Rx_data_buf-1
 0230 E0910000          lds R30,_m
 0234 FF27              clr R31
 0236 E80F              add R30,R24
 0238 F91F              adc R31,R25
 023A 2080              ldd R2,z+0
 023C 20920100          sts _Display_value,R2
 0240                   .dbline -2
 0240                   .dbline 283
 0240           ; 
 0240           ;       
 0240           ; }
 0240           L48:
 0240 2990              ld R2,y+
 0242 2FBE              out 0x3f,R2
 0244 F991              ld R31,y+
 0246 E991              ld R30,y+
 0248 9991              ld R25,y+
 024A 8991              ld R24,y+
 024C 2990              ld R2,y+
 024E                   .dbline 0 ; func end
 024E 1895              reti
 0250                   .dbend
 0250                   .dbfunc e LED_Display _LED_Display fV
 0250           ;           Data -> R22
 0250           ;           Type -> R20
                        .even
 0250           _LED_Display::
 0250 0E940000          xcall push_gset2
 0254 622F              mov R22,R18
 0256 402F              mov R20,R16
 0258                   .dbline -1
 0258                   .dbline 285
 0258           ; void LED_Display(unsigned char Type,unsigned char Data)
 0258           ; {
 0258                   .dbline 287
 0258           ;       
 0258           ;       DATA_to_NUM(Data);
 0258 062F              mov R16,R22
 025A 3AD0              xcall _DATA_to_NUM
 025C                   .dbline 289
 025C           ;       
 025C           ;       PORTA = LED_table[number_ge];
 025C 80E0              ldi R24,<_LED_table
 025E 90E0              ldi R25,>_LED_table
 0260 E0910300          lds R30,_number_ge
 0264 FF27              clr R31
 0266 E80F              add R30,R24
 0268 F91F              adc R31,R25
 026A 2080              ldd R2,z+0
 026C 2BBA              out 0x1b,R2
 026E                   .dbline 290
 026E           ;       PORTB = (PORTB|0xf0)&0x7F;
 026E 88B3              in R24,0x18
 0270 806F              ori R24,240
 0272 8F77              andi R24,127
 0274 88BB              out 0x18,R24
 0276                   .dbline 291
 0276           ;       Delay();
 0276 42DF              xcall _Delay
 0278                   .dbline 293
 0278           ; 
 0278           ;       PORTA = LED_table[number_shi];
 0278 80E0              ldi R24,<_LED_table
 027A 90E0              ldi R25,>_LED_table
 027C E0910400          lds R30,_number_shi
 0280 FF27              clr R31
 0282 E80F              add R30,R24
 0284 F91F              adc R31,R25
 0286 2080              ldd R2,z+0
 0288 2BBA              out 0x1b,R2
 028A                   .dbline 294
 028A           ;       PORTB = (PORTB|0xf0)&0xBF;
 028A 88B3              in R24,0x18
 028C 806F              ori R24,240
 028E 8F7B              andi R24,191
 0290 88BB              out 0x18,R24
 0292                   .dbline 295
 0292           ;       Delay();
 0292 34DF              xcall _Delay
 0294                   .dbline 297
 0294           ;       
 0294           ;       PORTA = LED_table[number_bai];
 0294 80E0              ldi R24,<_LED_table
 0296 90E0              ldi R25,>_LED_table
 0298 E0910500          lds R30,_number_bai
 029C FF27              clr R31
 029E E80F              add R30,R24
 02A0 F91F              adc R31,R25
 02A2 2080              ldd R2,z+0
 02A4 2BBA              out 0x1b,R2
 02A6                   .dbline 298
 02A6           ;       PORTB = (PORTB|0xf0)&0xDF;
 02A6 88B3              in R24,0x18
 02A8 806F              ori R24,240
 02AA 8F7D              andi R24,223
 02AC 88BB              out 0x18,R24
 02AE                   .dbline 299
 02AE           ;       Delay();
 02AE 26DF              xcall _Delay
 02B0                   .dbline 301
 02B0           ; 
 02B0           ;       PORTA = LED_table[Type];
 02B0 80E0              ldi R24,<_LED_table
 02B2 90E0              ldi R25,>_LED_table
 02B4 E42F              mov R30,R20
 02B6 FF27              clr R31
 02B8 E80F              add R30,R24
 02BA F91F              adc R31,R25
 02BC 2080              ldd R2,z+0
 02BE 2BBA              out 0x1b,R2
 02C0                   .dbline 302
 02C0           ;       PORTB = (PORTB|0xf0)&0xEF;
 02C0 88B3              in R24,0x18
 02C2 806F              ori R24,240
 02C4 8F7E              andi R24,239
 02C6 88BB              out 0x18,R24
 02C8                   .dbline 303
 02C8           ;       Delay();
 02C8 19DF              xcall _Delay
 02CA                   .dbline -2
 02CA                   .dbline 304
 02CA           ; }
 02CA           L52:
 02CA 0E940000          xcall pop_gset2
 02CE                   .dbline 0 ; func end
 02CE 0895              ret
 02D0                   .dbsym r Data 22 c
 02D0                   .dbsym r Type 20 c
 02D0                   .dbend
 02D0                   .dbfunc e DATA_to_NUM _DATA_to_NUM fV
 02D0           ;           data -> R20
                        .even
 02D0           _DATA_to_NUM::
 02D0 0E940000          xcall push_gset1
 02D4 402F              mov R20,R16
 02D6                   .dbline -1
 02D6                   .dbline 307
 02D6           ; 
 02D6           ; void DATA_to_NUM(unsigned char data)
 02D6           ; {
 02D6                   .dbline 308
 02D6           ;       number_bai = data/100;
 02D6 14E6              ldi R17,100
 02D8 042F              mov R16,R20
 02DA 0E940000          xcall div8u
 02DE 00930500          sts _number_bai,R16
 02E2                   .dbline 309
 02E2           ;       number_shi = (data%100)/10;
 02E2 14E6              ldi R17,100
 02E4 042F              mov R16,R20
 02E6 0E940000          xcall mod8u
 02EA 1AE0              ldi R17,10
 02EC 0E940000          xcall div8u
 02F0 00930400          sts _number_shi,R16
 02F4                   .dbline 310
 02F4           ;       number_ge  = (data%100)%10;
 02F4 14E6              ldi R17,100
 02F6 042F              mov R16,R20
 02F8 0E940000          xcall mod8u
 02FC 1AE0              ldi R17,10
 02FE 0E940000          xcall mod8u
 0302 00930300          sts _number_ge,R16
 0306                   .dbline -2
 0306                   .dbline 311
 0306           ; }
 0306           L53:
 0306 0E940000          xcall pop_gset1
 030A                   .dbline 0 ; func end
 030A 0895              ret
 030C                   .dbsym r data 20 c
 030C                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile G:\猛\avr实践\UART\UART.c
 0000           _m::
 0000                   .blkb 1
 0001                   .dbsym e m _m c
 0001           _Display_value::
 0001                   .blkb 1
 0002                   .dbsym e Display_value _Display_value c
 0002           _Display_type::
 0002                   .blkb 1
 0003                   .dbsym e Display_type _Display_type c
 0003           _number_ge::
 0003                   .blkb 1
 0004                   .dbsym e number_ge _number_ge c
 0004           _number_shi::
 0004                   .blkb 1
 0005                   .dbsym e number_shi _number_shi c
 0005           _number_bai::
 0005                   .blkb 1
 0006                   .dbsym e number_bai _number_bai c
 0006           _Rx_data::
 0006                   .blkb 1
 0007                   .dbsym e Rx_data _Rx_data c
 0007           _Rx_data_buf::
 0007                   .blkb 12
 0013                   .dbsym e Rx_data_buf _Rx_data_buf A[12:12]c
 0013           _Tx_data::
 0013                   .blkb 1
 0014                   .dbsym e Tx_data _Tx_data c

⌨️ 快捷键说明

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