📄 usart2.lst
字号:
__start:
__text_start:
46 EFCF LDI R28,0xFF
47 E1D0 LDI R29,0x10
48 BFCD OUT 0x3D,R28
49 BFDE OUT 0x3E,R29
4A 51C0 SUBI R28,0x10
4B 40D0 SBCI R29,0
4C EA0A LDI R16,0xAA
4D 8308 STD Y+0,R16
4E 2400 CLR R0
4F E0E0 LDI R30,0
50 E0F1 LDI R31,1
51 E011 LDI R17,1
52 30E0 CPI R30,0
53 07F1 CPC R31,R17
54 F011 BEQ 0x0057
55 9201 ST R0,Z+
56 CFFB RJMP 0x0052
57 8300 STD Z+0,R16
58 E8EC LDI R30,0x8C
59 E0F0 LDI R31,0
5A E0A0 LDI R26,0
5B E0B1 LDI R27,1
5C E010 LDI R17,0
5D E000 LDI R16,0
5E BF0B OUT 0x3B,R16
5F 38EC CPI R30,0x8C
60 07F1 CPC R31,R17
61 F021 BEQ 0x0066
62 95C8 LPM
63 9631 ADIW R30,1
64 920D ST R0,X+
65 CFF9 RJMP 0x005F
66 940E 00CA CALL _main
_exit:
68 CFFF RJMP _exit
_UART0_RX_interrupt:
Temp --> R20
69 920A ST R0,-Y
6A 921A ST R1,-Y
6B 922A ST R2,-Y
6C 923A ST R3,-Y
6D 924A ST R4,-Y
6E 925A ST R5,-Y
6F 926A ST R6,-Y
70 927A ST R7,-Y
71 928A ST R8,-Y
72 929A ST R9,-Y
73 930A ST R16,-Y
74 931A ST R17,-Y
75 932A ST R18,-Y
76 933A ST R19,-Y
77 934A ST R20,-Y
78 938A ST R24,-Y
79 939A ST R25,-Y
7A 93AA ST R26,-Y
7B 93BA ST R27,-Y
7C 93EA ST R30,-Y
7D 93FA ST R31,-Y
7E B60F IN R0,0x3F
7F 920A ST R0,-Y
80 934A ST R20,-Y
FILE: E:\AVRPRJ\dy\USART2.c
(0001) #include <iom128v.h>
(0002) #include <macros.h>
(0003) #pragma interrupt_handler UART0_RX_interrupt:19
(0004) void UART0_RX_interrupt( void )
(0005) {
(0006) unsigned char Temp;
(0007) Temp=UDR0;
81 B14C IN R20,0x0C
(0008) if(Temp=='b')Buzzer();
82 3642 CPI R20,0x62
83 F409 BNE 0x0085
84 D019 RCALL _Buzzer
85 9149 LD R20,Y+
86 9009 LD R0,Y+
87 BE0F OUT 0x3F,R0
88 91F9 LD R31,Y+
89 91E9 LD R30,Y+
8A 91B9 LD R27,Y+
8B 91A9 LD R26,Y+
8C 9199 LD R25,Y+
8D 9189 LD R24,Y+
8E 9149 LD R20,Y+
8F 9139 LD R19,Y+
90 9129 LD R18,Y+
91 9119 LD R17,Y+
92 9109 LD R16,Y+
93 9099 LD R9,Y+
94 9089 LD R8,Y+
95 9079 LD R7,Y+
96 9069 LD R6,Y+
97 9059 LD R5,Y+
98 9049 LD R4,Y+
99 9039 LD R3,Y+
9A 9029 LD R2,Y+
9B 9019 LD R1,Y+
9C 9009 LD R0,Y+
9D 9518 RETI
(0009) }
(0010) void Buzzer(void)
(0011) {
(0012) PORTB&=0xfe; //开蜂鸣器
_Buzzer:
9E B388 IN R24,0x18
9F 7F8E ANDI R24,0xFE
A0 BB88 OUT 0x18,R24
(0013) delay(50);
A1 E302 LDI R16,0x32
A2 E010 LDI R17,0
A3 D002 RCALL _delay
(0014) PORTB|=0x01; //关蜂鸣器
A4 9AC0 SBI 0x18,0
A5 9508 RET
_delay:
i --> R20
j --> R22
n --> R16
A6 940E 00D4 CALL push_xgsetF000
(0015) }
(0016) void delay(int n)
(0017) {
(0018) int i,j;
(0019) for(i=0;i<n;i++)
A8 2744 CLR R20
A9 2755 CLR R21
AA C00A RJMP 0x00B5
(0020) for(j=0;j<1000;j++)
AB 2766 CLR R22
AC 2777 CLR R23
AD 5F6F SUBI R22,0xFF
AE 4F7F SBCI R23,0xFF
AF 3E68 CPI R22,0xE8
B0 E0E3 LDI R30,3
B1 077E CPC R23,R30
B2 F3D4 BLT 0x00AD
B3 5F4F SUBI R20,0xFF
B4 4F5F SBCI R21,0xFF
B5 1740 CP R20,R16
B6 0751 CPC R21,R17
B7 F39C BLT 0x00AB
B8 940C 00D9 JMP pop_xgsetF000
(0021) ;
(0022) }
(0023) void USART_Transmit(char data)
(0024) {
(0025) while(!(UCSR0A&(1<<UDRE0)))
_USART_Transmit:
data --> R16
BA 9B5D SBIS 0x0B,5
BB CFFE RJMP _USART_Transmit
(0026) ;
(0027) UDR0=data;
BC B90C OUT 0x0C,R16
BD 9508 RET
(0028)
(0029) }
(0030) void USART_Init(unsigned int baud)
(0031) {
(0032) UBRR0H=(unsigned char)(baud>>8);
_USART_Init:
baud --> R16
BE 0118 MOVW R2,R16
BF 2C23 MOV R2,R3
C0 2433 CLR R3
C1 9220 0090 STS 0x0090,R2
(0033) UBRR0L=(unsigned char)baud;
C3 B909 OUT 0x09,R16
(0034) UCSR0B=(1<<RXCIE0)|(1<<RXEN0)|(1<<TXEN0); //接收终端使能,发送和接受使能
C4 E988 LDI R24,0x98
C5 B98A OUT 0x0A,R24
(0035) UCSR0C=(1<<UCSZ00)|(1<<UCSZ01); //设置字符长度,一个停止位,八位数据
C6 E086 LDI R24,6
C7 9380 0095 STS 0x0095,R24
C9 9508 RET
(0036) }
(0037) main()
(0038) {
(0039) DDRB=0xff;
_main:
CA EF8F LDI R24,0xFF
CB BB87 OUT 0x17,R24
(0040) PORTB=0xff;
CC BB88 OUT 0x18,R24
(0041) USART_Init(51);
CD E303 LDI R16,0x33
CE E010 LDI R17,0
CF DFEE RCALL _USART_Init
(0042) USART_Transmit('s');
D0 E703 LDI R16,0x73
D1 DFE8 RCALL _USART_Transmit
(0043) while(1);
FILE: <library>
D2 CFFF RJMP 0x00D2
D3 9508 RET
push_xgsetF000:
D4 937A ST R23,-Y
D5 936A ST R22,-Y
D6 935A ST R21,-Y
D7 934A ST R20,-Y
D8 9508 RET
pop_xgsetF000:
D9 9149 LD R20,Y+
DA 9159 LD R21,Y+
DB 9169 LD R22,Y+
DC 9179 LD R23,Y+
DD 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -