📄 usart2.lis
字号:
.module USART2.c
.area text(rom, con, rel)
0000 .dbfile E:\AVRPRJ\dy\USART2.c
.area vector(rom, abs)
.org 72
0048 0C940000 jmp _UART0_RX_interrupt
.area text(rom, con, rel)
0000 .dbfile E:\AVRPRJ\dy\USART2.c
0000 .dbfunc e UART0_RX_interrupt _UART0_RX_interrupt fV
0000 ; Temp -> R20
.even
0000 _UART0_RX_interrupt::
0000 0A92 st -y,R0
0002 1A92 st -y,R1
0004 2A92 st -y,R2
0006 3A92 st -y,R3
0008 4A92 st -y,R4
000A 5A92 st -y,R5
000C 6A92 st -y,R6
000E 7A92 st -y,R7
0010 8A92 st -y,R8
0012 9A92 st -y,R9
0014 0A93 st -y,R16
0016 1A93 st -y,R17
0018 2A93 st -y,R18
001A 3A93 st -y,R19
001C 4A93 st -y,R20
001E 8A93 st -y,R24
0020 9A93 st -y,R25
0022 AA93 st -y,R26
0024 BA93 st -y,R27
0026 EA93 st -y,R30
0028 FA93 st -y,R31
002A 0FB6 in R0,0x3f
002C 0A92 st -y,R0
002E 4A93 st -y,R20
0030 .dbline -1
0030 .dbline 5
0030 ; #include <iom128v.h>
0030 ; #include <macros.h>
0030 ; #pragma interrupt_handler UART0_RX_interrupt:19
0030 ; void UART0_RX_interrupt( void )
0030 ; {
0030 .dbline 7
0030 ; unsigned char Temp;
0030 ; Temp=UDR0;
0030 4CB1 in R20,0xc
0032 .dbline 8
0032 ; if(Temp=='b')Buzzer();
0032 4236 cpi R20,98
0034 09F4 brne L2
0036 X0:
0036 .dbline 8
0036 19D0 xcall _Buzzer
0038 L2:
0038 .dbline -2
0038 L1:
0038 .dbline 0 ; func end
0038 4991 ld R20,y+
003A 0990 ld R0,y+
003C 0FBE out 0x3f,R0
003E F991 ld R31,y+
0040 E991 ld R30,y+
0042 B991 ld R27,y+
0044 A991 ld R26,y+
0046 9991 ld R25,y+
0048 8991 ld R24,y+
004A 4991 ld R20,y+
004C 3991 ld R19,y+
004E 2991 ld R18,y+
0050 1991 ld R17,y+
0052 0991 ld R16,y+
0054 9990 ld R9,y+
0056 8990 ld R8,y+
0058 7990 ld R7,y+
005A 6990 ld R6,y+
005C 5990 ld R5,y+
005E 4990 ld R4,y+
0060 3990 ld R3,y+
0062 2990 ld R2,y+
0064 1990 ld R1,y+
0066 0990 ld R0,y+
0068 1895 reti
006A .dbsym r Temp 20 c
006A .dbend
006A .dbfunc e Buzzer _Buzzer fV
.even
006A _Buzzer::
006A .dbline -1
006A .dbline 11
006A ; }
006A ; void Buzzer(void)
006A ; {
006A .dbline 12
006A ; PORTB&=0xfe; //开蜂鸣器
006A 88B3 in R24,0x18
006C 8E7F andi R24,254
006E 88BB out 0x18,R24
0070 .dbline 13
0070 ; delay(50);
0070 02E3 ldi R16,50
0072 10E0 ldi R17,0
0074 02D0 xcall _delay
0076 .dbline 14
0076 ; PORTB|=0x01; //关蜂鸣器
0076 C09A sbi 0x18,0
0078 .dbline -2
0078 L4:
0078 .dbline 0 ; func end
0078 0895 ret
007A .dbend
007A .dbfunc e delay _delay fV
007A ; i -> R20,R21
007A ; j -> R22,R23
007A ; n -> R16,R17
.even
007A _delay::
007A 0E940000 xcall push_xgsetF000
007E .dbline -1
007E .dbline 17
007E ; }
007E ; void delay(int n)
007E ; {
007E .dbline 19
007E ; int i,j;
007E ; for(i=0;i<n;i++)
007E 4427 clr R20
0080 5527 clr R21
0082 0AC0 xjmp L9
0084 L6:
0084 .dbline 20
0084 ; for(j=0;j<1000;j++)
0084 6627 clr R22
0086 7727 clr R23
0088 L10:
0088 .dbline 21
0088 ; ;
0088 L11:
0088 .dbline 20
0088 6F5F subi R22,255 ; offset = 1
008A 7F4F sbci R23,255
008C .dbline 20
008C 683E cpi R22,232
008E E3E0 ldi R30,3
0090 7E07 cpc R23,R30
0092 D4F3 brlt L10
0094 X1:
0094 L7:
0094 .dbline 19
0094 4F5F subi R20,255 ; offset = 1
0096 5F4F sbci R21,255
0098 L9:
0098 .dbline 19
0098 4017 cp R20,R16
009A 5107 cpc R21,R17
009C 9CF3 brlt L6
009E X2:
009E .dbline -2
009E L5:
009E .dbline 0 ; func end
009E 0C940000 xjmp pop_xgsetF000
00A2 .dbsym r i 20 I
00A2 .dbsym r j 22 I
00A2 .dbsym r n 16 I
00A2 .dbend
00A2 .dbfunc e USART_Transmit _USART_Transmit fV
00A2 ; data -> R16
.even
00A2 _USART_Transmit::
00A2 .dbline -1
00A2 .dbline 24
00A2 ; }
00A2 ; void USART_Transmit(char data)
00A2 ; {
00A2 L15:
00A2 .dbline 26
00A2 ; while(!(UCSR0A&(1<<UDRE0)))
00A2 ; ;
00A2 L16:
00A2 .dbline 25
00A2 5D9B sbis 0xb,5
00A4 FECF rjmp L15
00A6 X3:
00A6 .dbline 27
00A6 ; UDR0=data;
00A6 0CB9 out 0xc,R16
00A8 .dbline -2
00A8 L14:
00A8 .dbline 0 ; func end
00A8 0895 ret
00AA .dbsym r data 16 c
00AA .dbend
00AA .dbfunc e USART_Init _USART_Init fV
00AA ; baud -> R16,R17
.even
00AA _USART_Init::
00AA .dbline -1
00AA .dbline 31
00AA ;
00AA ; }
00AA ; void USART_Init(unsigned int baud)
00AA ; {
00AA .dbline 32
00AA ; UBRR0H=(unsigned char)(baud>>8);
00AA 1801 movw R2,R16
00AC 232C mov R2,R3
00AE 3324 clr R3
00B0 20929000 sts 144,R2
00B4 .dbline 33
00B4 ; UBRR0L=(unsigned char)baud;
00B4 09B9 out 0x9,R16
00B6 .dbline 34
00B6 ; UCSR0B=(1<<RXCIE0)|(1<<RXEN0)|(1<<TXEN0); //接收终端使能,发送和接受使能
00B6 88E9 ldi R24,152
00B8 8AB9 out 0xa,R24
00BA .dbline 35
00BA ; UCSR0C=(1<<UCSZ00)|(1<<UCSZ01); //设置字符长度,一个停止位,八位数据
00BA 86E0 ldi R24,6
00BC 80939500 sts 149,R24
00C0 .dbline -2
00C0 L18:
00C0 .dbline 0 ; func end
00C0 0895 ret
00C2 .dbsym r baud 16 i
00C2 .dbend
00C2 .dbfunc e main _main fI
.even
00C2 _main::
00C2 .dbline -1
00C2 .dbline 38
00C2 ; }
00C2 ; main()
00C2 ; {
00C2 .dbline 39
00C2 ; DDRB=0xff;
00C2 8FEF ldi R24,255
00C4 87BB out 0x17,R24
00C6 .dbline 40
00C6 ; PORTB=0xff;
00C6 88BB out 0x18,R24
00C8 .dbline 41
00C8 ; USART_Init(51);
00C8 03E3 ldi R16,51
00CA 10E0 ldi R17,0
00CC EEDF xcall _USART_Init
00CE .dbline 42
00CE ; USART_Transmit('s');
00CE 03E7 ldi R16,115
00D0 E8DF xcall _USART_Transmit
00D2 L20:
00D2 .dbline 43
00D2 ; while(1);
00D2 L21:
00D2 .dbline 43
00D2 FFCF xjmp L20
00D4 X4:
00D4 .dbline -2
00D4 L19:
00D4 .dbline 0 ; func end
00D4 0895 ret
00D6 .dbend
00D6 ; }
00D6 ;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -