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