📄 buzzer_timer1_interrupt.lss
字号:
buzzer_timer1_interrupt.elf: file format elf32-avr
Sections:
Idx Name Size VMA LMA File off Algn
0 .text 000001d0 00000000 00000000 00000074 2**1
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .data 00000006 00800060 000001d0 00000244 2**0
CONTENTS, ALLOC, LOAD, DATA
2 .bss 00000001 00800066 000001d6 0000024a 2**0
ALLOC
3 .debug_aranges 00000040 00000000 00000000 0000024a 2**0
CONTENTS, READONLY, DEBUGGING
4 .debug_pubnames 0000009c 00000000 00000000 0000028a 2**0
CONTENTS, READONLY, DEBUGGING
5 .debug_info 00000195 00000000 00000000 00000326 2**0
CONTENTS, READONLY, DEBUGGING
6 .debug_abbrev 000000e6 00000000 00000000 000004bb 2**0
CONTENTS, READONLY, DEBUGGING
7 .debug_line 000001c3 00000000 00000000 000005a1 2**0
CONTENTS, READONLY, DEBUGGING
8 .debug_frame 00000080 00000000 00000000 00000764 2**2
CONTENTS, READONLY, DEBUGGING
9 .debug_str 000000fb 00000000 00000000 000007e4 2**0
CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:
00000000 <__vectors>:
0: 0c 94 2a 00 jmp 0x54 ; 0x54 <__ctors_end>
4: 0c 94 9c 00 jmp 0x138 ; 0x138 <__vector_1>
8: 0c 94 c1 00 jmp 0x182 ; 0x182 <__vector_2>
c: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
10: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
14: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
18: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
1c: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
20: 0c 94 52 00 jmp 0xa4 ; 0xa4 <__vector_8>
24: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
28: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
2c: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
30: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
34: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
38: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
3c: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
40: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
44: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
48: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
4c: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
50: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt>
00000054 <__ctors_end>:
54: 11 24 eor r1, r1
56: 1f be out 0x3f, r1 ; 63
58: cf e5 ldi r28, 0x5F ; 95
5a: d4 e0 ldi r29, 0x04 ; 4
5c: de bf out 0x3e, r29 ; 62
5e: cd bf out 0x3d, r28 ; 61
00000060 <__do_copy_data>:
60: 10 e0 ldi r17, 0x00 ; 0
62: a0 e6 ldi r26, 0x60 ; 96
64: b0 e0 ldi r27, 0x00 ; 0
66: e0 ed ldi r30, 0xD0 ; 208
68: f1 e0 ldi r31, 0x01 ; 1
6a: 02 c0 rjmp .+4 ; 0x70 <.do_copy_data_start>
0000006c <.do_copy_data_loop>:
6c: 05 90 lpm r0, Z+
6e: 0d 92 st X+, r0
00000070 <.do_copy_data_start>:
70: a6 36 cpi r26, 0x66 ; 102
72: b1 07 cpc r27, r17
74: d9 f7 brne .-10 ; 0x6c <.do_copy_data_loop>
00000076 <__do_clear_bss>:
76: 10 e0 ldi r17, 0x00 ; 0
78: a6 e6 ldi r26, 0x66 ; 102
7a: b0 e0 ldi r27, 0x00 ; 0
7c: 01 c0 rjmp .+2 ; 0x80 <.do_clear_bss_start>
0000007e <.do_clear_bss_loop>:
7e: 1d 92 st X+, r1
00000080 <.do_clear_bss_start>:
80: a7 36 cpi r26, 0x67 ; 103
82: b1 07 cpc r27, r17
84: e1 f7 brne .-8 ; 0x7e <.do_clear_bss_loop>
86: 0e 94 85 00 call 0x10a ; 0x10a <main>
8a: 0c 94 e6 00 jmp 0x1cc ; 0x1cc <_exit>
0000008e <__bad_interrupt>:
8e: 0c 94 00 00 jmp 0 ; 0x0 <__vectors>
00000092 <timer1_init>:
unsigned long time1=1000000;
unsigned int tcnt1=0xfc2e;
void timer1_init(void) //定时器1中断函数
{
92: 1e bc out 0x2e, r1 ; 46
TCCR1B=0X00;//先停止定时器1
TCNT1H=0Xfc;//设定计数器初值65535-1000000/1024= 64559 = 0xfc2e //定时一秒 内 部震荡 1 M 赫兹
94: 8c ef ldi r24, 0xFC ; 252
96: 8d bd out 0x2d, r24 ; 45
TCNT1L=0X2f;
98: 8f e2 ldi r24, 0x2F ; 47
9a: 8c bd out 0x2c, r24 ; 44
TCCR1A=0X00;//启动定时器1,使用1024分频
9c: 1f bc out 0x2f, r1 ; 47
TCCR1B=0X05;
9e: 85 e0 ldi r24, 0x05 ; 5
a0: 8e bd out 0x2e, r24 ; 46
}
a2: 08 95 ret
000000a4 <__vector_8>:
SIGNAL(SIG_OVERFLOW1) //interrupt[TIM1_OVF]
{
a4: 1f 92 push r1
a6: 0f 92 push r0
a8: 0f b6 in r0, 0x3f ; 63
aa: 0f 92 push r0
ac: 11 24 eor r1, r1
ae: 8f 93 push r24
b0: 9f 93 push r25
b2: af 93 push r26
b4: bf 93 push r27
tcnt1=(65535-time1/(fenpin)*(F_CPU/1000000));
b6: 80 91 60 00 lds r24, 0x0060
ba: 90 91 61 00 lds r25, 0x0061
be: a0 91 62 00 lds r26, 0x0062
c2: b0 91 63 00 lds r27, 0x0063
c6: 07 2e mov r0, r23
c8: 7a e0 ldi r23, 0x0A ; 10
ca: b6 95 lsr r27
cc: a7 95 ror r26
ce: 97 95 ror r25
d0: 87 95 ror r24
d2: 7a 95 dec r23
d4: d1 f7 brne .-12 ; 0xca <__vector_8+0x26>
d6: 70 2d mov r23, r0
d8: 80 95 com r24
da: 90 95 com r25
dc: 90 93 65 00 sts 0x0065, r25
e0: 80 93 64 00 sts 0x0064, r24
TCNT1= tcnt1; //加载初始值
e4: 9d bd out 0x2d, r25 ; 45
e6: 8c bd out 0x2c, r24 ; 44
//TCNT1H=0Xfc; //重设初始值
//TCNT1L=0X2e; //完成一次工作
PORTA=uc_Led;//输出
e8: 80 91 66 00 lds r24, 0x0066
ec: 8b bb out 0x1b, r24 ; 27
TCCR1B=0X05;
ee: 95 e0 ldi r25, 0x05 ; 5
f0: 9e bd out 0x2e, r25 ; 46
uc_Led++;
f2: 8f 5f subi r24, 0xFF ; 255
f4: 80 93 66 00 sts 0x0066, r24
}
f8: bf 91 pop r27
fa: af 91 pop r26
fc: 9f 91 pop r25
fe: 8f 91 pop r24
100: 0f 90 pop r0
102: 0f be out 0x3f, r0 ; 63
104: 0f 90 pop r0
106: 1f 90 pop r1
108: 18 95 reti
0000010a <main>:
int main(void)
{
10a: 8f ef ldi r24, 0xFF ; 255
10c: 8a bb out 0x1a, r24 ; 26
DDRA=0Xff;
SREG|=0X80;// 全局中断使能即 sei();
10e: 8f b7 in r24, 0x3f ; 63
110: 80 68 ori r24, 0x80 ; 128
112: 8f bf out 0x3f, r24 ; 63
TIMSK|=0X04;
114: 89 b7 in r24, 0x39 ; 57
116: 84 60 ori r24, 0x04 ; 4
118: 89 bf out 0x39, r24 ; 57
unsigned long time1=1000000;
unsigned int tcnt1=0xfc2e;
void timer1_init(void) //定时器1中断函数
{
TCCR1B=0X00;//先停止定时器1
11a: 1e bc out 0x2e, r1 ; 46
TCNT1H=0Xfc;//设定计数器初值65535-1000000/1024= 64559 = 0xfc2e //定时一秒 内 部震荡 1 M 赫兹
11c: 8c ef ldi r24, 0xFC ; 252
11e: 8d bd out 0x2d, r24 ; 45
TCNT1L=0X2f;
120: 8f e2 ldi r24, 0x2F ; 47
122: 8c bd out 0x2c, r24 ; 44
TCCR1A=0X00;//启动定时器1,使用1024分频
124: 1f bc out 0x2f, r1 ; 47
TCCR1B=0X05;
126: 85 e0 ldi r24, 0x05 ; 5
128: 8e bd out 0x2e, r24 ; 46
{
DDRA=0Xff;
SREG|=0X80;// 全局中断使能即 sei();
TIMSK|=0X04;
timer1_init();
External_Inter();
12a: 0e 94 98 00 call 0x130 ; 0x130 <External_Inter>
12e: ff cf rjmp .-2 ; 0x12e <main+0x24>
00000130 <External_Inter>:
#include <avr/interrupt.h>
extern unsigned long time1;
void External_Inter(void)//外部中断设置
{
130: 8b b7 in r24, 0x3b ; 59
132: 80 6e ori r24, 0xE0 ; 224
134: 8b bf out 0x3b, r24 ; 59
GICR|=_BV(INT0)|_BV(INT1)|_BV(INT2); //低电平中断 GICR为通用中断控制器
}
136: 08 95 ret
00000138 <__vector_1>:
SIGNAL(SIG_INTERRUPT0)
{
138: 1f 92 push r1
13a: 0f 92 push r0
13c: 0f b6 in r0, 0x3f ; 63
13e: 0f 92 push r0
140: 11 24 eor r1, r1
142: 8f 93 push r24
144: 9f 93 push r25
146: af 93 push r26
148: bf 93 push r27
time1++; //外中断0程序
14a: 80 91 60 00 lds r24, 0x0060
14e: 90 91 61 00 lds r25, 0x0061
152: a0 91 62 00 lds r26, 0x0062
156: b0 91 63 00 lds r27, 0x0063
15a: 01 96 adiw r24, 0x01 ; 1
15c: a1 1d adc r26, r1
15e: b1 1d adc r27, r1
160: 80 93 60 00 sts 0x0060, r24
164: 90 93 61 00 sts 0x0061, r25
168: a0 93 62 00 sts 0x0062, r26
16c: b0 93 63 00 sts 0x0063, r27
}
170: bf 91 pop r27
172: af 91 pop r26
174: 9f 91 pop r25
176: 8f 91 pop r24
178: 0f 90 pop r0
17a: 0f be out 0x3f, r0 ; 63
17c: 0f 90 pop r0
17e: 1f 90 pop r1
180: 18 95 reti
00000182 <__vector_2>:
SIGNAL(SIG_INTERRUPT1)
{
182: 1f 92 push r1
184: 0f 92 push r0
186: 0f b6 in r0, 0x3f ; 63
188: 0f 92 push r0
18a: 11 24 eor r1, r1
18c: 8f 93 push r24
18e: 9f 93 push r25
190: af 93 push r26
192: bf 93 push r27
time1--; //外中断1程序
194: 80 91 60 00 lds r24, 0x0060
198: 90 91 61 00 lds r25, 0x0061
19c: a0 91 62 00 lds r26, 0x0062
1a0: b0 91 63 00 lds r27, 0x0063
1a4: 01 97 sbiw r24, 0x01 ; 1
1a6: a1 09 sbc r26, r1
1a8: b1 09 sbc r27, r1
1aa: 80 93 60 00 sts 0x0060, r24
1ae: 90 93 61 00 sts 0x0061, r25
1b2: a0 93 62 00 sts 0x0062, r26
1b6: b0 93 63 00 sts 0x0063, r27
}
1ba: bf 91 pop r27
1bc: af 91 pop r26
1be: 9f 91 pop r25
1c0: 8f 91 pop r24
1c2: 0f 90 pop r0
1c4: 0f be out 0x3f, r0 ; 63
1c6: 0f 90 pop r0
1c8: 1f 90 pop r1
1ca: 18 95 reti
000001cc <_exit>:
1cc: f8 94 cli
000001ce <__stop_program>:
1ce: ff cf rjmp .-2 ; 0x1ce <__stop_program>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -