📄 tc1_1.lss
字号:
TC1_1.elf: file format elf32-avr
Sections:
Idx Name Size VMA LMA File off Algn
0 .text 00000338 00000000 00000000 00000094 2**0
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .data 00000010 00800060 00000338 000003cc 2**0
CONTENTS, ALLOC, LOAD, DATA
2 .bss 0000000a 00800070 00800070 000003dc 2**0
ALLOC
3 .noinit 00000000 0080007a 0080007a 000003dc 2**0
CONTENTS
4 .eeprom 00000000 00810000 00810000 000003dc 2**0
CONTENTS
5 .debug_aranges 00000014 00000000 00000000 000003dc 2**0
CONTENTS, READONLY, DEBUGGING
6 .debug_pubnames 000000d2 00000000 00000000 000003f0 2**0
CONTENTS, READONLY, DEBUGGING
7 .debug_info 000002ca 00000000 00000000 000004c2 2**0
CONTENTS, READONLY, DEBUGGING
8 .debug_abbrev 000000b0 00000000 00000000 0000078c 2**0
CONTENTS, READONLY, DEBUGGING
9 .debug_line 0000021d 00000000 00000000 0000083c 2**0
CONTENTS, READONLY, DEBUGGING
10 .debug_str 0000000d 00000000 00000000 00000a59 2**0
CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:
00000000 <__vectors>:
0: 0c 94 2a 00 jmp 0x54
4: 0c 94 45 00 jmp 0x8a
8: 0c 94 45 00 jmp 0x8a
c: 0c 94 45 00 jmp 0x8a
10: 0c 94 45 00 jmp 0x8a
14: 0c 94 fa 00 jmp 0x1f4
18: 0c 94 45 00 jmp 0x8a
1c: 0c 94 45 00 jmp 0x8a
20: 0c 94 45 00 jmp 0x8a
24: 0c 94 45 00 jmp 0x8a
28: 0c 94 45 00 jmp 0x8a
2c: 0c 94 45 00 jmp 0x8a
30: 0c 94 45 00 jmp 0x8a
34: 0c 94 45 00 jmp 0x8a
38: 0c 94 45 00 jmp 0x8a
3c: 0c 94 45 00 jmp 0x8a
40: 0c 94 45 00 jmp 0x8a
44: 0c 94 45 00 jmp 0x8a
48: 0c 94 45 00 jmp 0x8a
4c: 0c 94 45 00 jmp 0x8a
50: 0c 94 45 00 jmp 0x8a
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: e8 e3 ldi r30, 0x38 ; 56
68: f3 e0 ldi r31, 0x03 ; 3
6a: 02 c0 rjmp .+4 ; 0x70
0000006c <.do_copy_data_loop>:
6c: 05 90 lpm r0, Z+
6e: 0d 92 st X+, r0
00000070 <.do_copy_data_start>:
70: a0 37 cpi r26, 0x70 ; 112
72: b1 07 cpc r27, r17
74: d9 f7 brne .-10 ; 0x6c
00000076 <__do_clear_bss>:
76: 10 e0 ldi r17, 0x00 ; 0
78: a0 e7 ldi r26, 0x70 ; 112
7a: b0 e0 ldi r27, 0x00 ; 0
7c: 01 c0 rjmp .+2 ; 0x80
0000007e <.do_clear_bss_loop>:
7e: 1d 92 st X+, r1
00000080 <.do_clear_bss_start>:
80: aa 37 cpi r26, 0x7A ; 122
82: b1 07 cpc r27, r17
84: e1 f7 brne .-8 ; 0x7e
86: 0c 94 2e 01 jmp 0x25c
0000008a <__bad_interrupt>:
8a: 0c 94 00 00 jmp 0x0
0000008e <b16td5>:
//二进制转换为十进制函数
void b16td5(uint n)
{
8e: cf 93 push r28
90: df 93 push r29
92: cd b7 in r28, 0x3d ; 61
94: de b7 in r29, 0x3e ; 62
96: 22 97 sbiw r28, 0x02 ; 2
98: 0f b6 in r0, 0x3f ; 63
9a: f8 94 cli
9c: de bf out 0x3e, r29 ; 62
9e: 0f be out 0x3f, r0 ; 63
a0: cd bf out 0x3d, r28 ; 61
a2: 89 83 std Y+1, r24 ; 0x01
a4: 9a 83 std Y+2, r25 ; 0x02
for ( i_w=0;n>=10000; )
a6: 10 92 78 00 sts 0x0078, r1
aa: 89 81 ldd r24, Y+1 ; 0x01
ac: 9a 81 ldd r25, Y+2 ; 0x02
ae: 27 e2 ldi r18, 0x27 ; 39
b0: 80 31 cpi r24, 0x10 ; 16
b2: 92 07 cpc r25, r18
b4: 60 f0 brcs .+24 ; 0xce
{n=n-10000;
b6: 89 81 ldd r24, Y+1 ; 0x01
b8: 9a 81 ldd r25, Y+2 ; 0x02
ba: 80 51 subi r24, 0x10 ; 16
bc: 97 42 sbci r25, 0x27 ; 39
be: 89 83 std Y+1, r24 ; 0x01
c0: 9a 83 std Y+2, r25 ; 0x02
i_w=i_w+1;}
c2: 80 91 78 00 lds r24, 0x0078
c6: 8f 5f subi r24, 0xFF ; 255
c8: 80 93 78 00 sts 0x0078, r24
cc: ee cf rjmp .-36 ; 0xaa
for (i_q=0;n>=1000; )
ce: 10 92 70 00 sts 0x0070, r1
d2: 89 81 ldd r24, Y+1 ; 0x01
d4: 9a 81 ldd r25, Y+2 ; 0x02
d6: 23 e0 ldi r18, 0x03 ; 3
d8: 88 3e cpi r24, 0xE8 ; 232
da: 92 07 cpc r25, r18
dc: 60 f0 brcs .+24 ; 0xf6
{n=n-1000;
de: 89 81 ldd r24, Y+1 ; 0x01
e0: 9a 81 ldd r25, Y+2 ; 0x02
e2: 88 5e subi r24, 0xE8 ; 232
e4: 93 40 sbci r25, 0x03 ; 3
e6: 89 83 std Y+1, r24 ; 0x01
e8: 9a 83 std Y+2, r25 ; 0x02
i_q=i_q+1;}
ea: 80 91 70 00 lds r24, 0x0070
ee: 8f 5f subi r24, 0xFF ; 255
f0: 80 93 70 00 sts 0x0070, r24
f4: ee cf rjmp .-36 ; 0xd2
for ( i_b=0;n>=100; )
f6: 10 92 79 00 sts 0x0079, r1
fa: 89 81 ldd r24, Y+1 ; 0x01
fc: 9a 81 ldd r25, Y+2 ; 0x02
fe: 84 36 cpi r24, 0x64 ; 100
100: 91 05 cpc r25, r1
102: 60 f0 brcs .+24 ; 0x11c
{n=n-100;
104: 89 81 ldd r24, Y+1 ; 0x01
106: 9a 81 ldd r25, Y+2 ; 0x02
108: 84 56 subi r24, 0x64 ; 100
10a: 90 40 sbci r25, 0x00 ; 0
10c: 89 83 std Y+1, r24 ; 0x01
10e: 9a 83 std Y+2, r25 ; 0x02
i_b=i_b+1;}
110: 80 91 79 00 lds r24, 0x0079
114: 8f 5f subi r24, 0xFF ; 255
116: 80 93 79 00 sts 0x0079, r24
11a: ef cf rjmp .-34 ; 0xfa
for (i_sh=0;n>=10; )
11c: 10 92 71 00 sts 0x0071, r1
120: 89 81 ldd r24, Y+1 ; 0x01
122: 9a 81 ldd r25, Y+2 ; 0x02
124: 8a 30 cpi r24, 0x0A ; 10
126: 91 05 cpc r25, r1
128: 58 f0 brcs .+22 ; 0x140
{n=n-10;
12a: 89 81 ldd r24, Y+1 ; 0x01
12c: 9a 81 ldd r25, Y+2 ; 0x02
12e: 0a 97 sbiw r24, 0x0a ; 10
130: 89 83 std Y+1, r24 ; 0x01
132: 9a 83 std Y+2, r25 ; 0x02
i_sh=i_sh+1;}
134: 80 91 71 00 lds r24, 0x0071
138: 8f 5f subi r24, 0xFF ; 255
13a: 80 93 71 00 sts 0x0071, r24
13e: f0 cf rjmp .-32 ; 0x120
i_g=n;
140: 89 81 ldd r24, Y+1 ; 0x01
142: 80 93 74 00 sts 0x0074, r24
146: 22 96 adiw r28, 0x02 ; 2
148: 0f b6 in r0, 0x3f ; 63
14a: f8 94 cli
14c: de bf out 0x3e, r29 ; 62
14e: 0f be out 0x3f, r0 ; 63
150: cd bf out 0x3d, r28 ; 61
152: df 91 pop r29
154: cf 91 pop r28
156: 08 95 ret
00000158 <smiao>:
}
//延迟方法实现动态扫描显示函数
void smiao(void)
{PORTA=0X7F; //送个位位线
158: cf 93 push r28
15a: df 93 push r29
15c: cd b7 in r28, 0x3d ; 61
15e: de b7 in r29, 0x3e ; 62
160: 8f e7 ldi r24, 0x7F ; 127
162: 80 93 3b 00 sts 0x003B, r24
PORTB=num_g; //个位的BCD码送字线
166: 80 91 60 00 lds r24, 0x0060
16a: 80 93 38 00 sts 0x0038, r24
// _delay_ms(20); //延迟1MS
//for(uchar i=0;i<50;i++)_delay_ms(20); //延迟1MS
PORTA=0XBF; //送十位位线
16e: 8f eb ldi r24, 0xBF ; 191
170: 80 93 3b 00 sts 0x003B, r24
PORTB=num_sh;
174: 80 91 61 00 lds r24, 0x0061
178: 80 93 38 00 sts 0x0038, r24
//_delay_ms(20); //延迟1MS
//for(uchar i=0;i<50;i++)_delay_ms(20); //延迟1MS
PORTA=0XDF; //送百位位线
17c: 8f ed ldi r24, 0xDF ; 223
17e: 80 93 3b 00 sts 0x003B, r24
PORTB=num_b;
182: 80 91 62 00 lds r24, 0x0062
186: 80 93 38 00 sts 0x0038, r24
// _delay_ms(20); //延迟1MS
//for(uchar i=0;i<50;i++)_delay_ms(20); //延迟1MS
PORTA=0XEF; //送千位位线
18a: 8f ee ldi r24, 0xEF ; 239
18c: 80 93 3b 00 sts 0x003B, r24
PORTB=num_q;
190: 80 91 63 00 lds r24, 0x0063
194: 80 93 38 00 sts 0x0038, r24
//_delay_ms(20); //延迟1MS
//for(uchar i=0;i<50;i++)_delay_ms(20); //延迟1MS
PORTA=0XF7; //送万位位线
198: 87 ef ldi r24, 0xF7 ; 247
19a: 80 93 3b 00 sts 0x003B, r24
PORTB=num_w;
19e: 80 91 64 00 lds r24, 0x0064
1a2: 80 93 38 00 sts 0x0038, r24
1a6: df 91 pop r29
1a8: cf 91 pop r28
1aa: 08 95 ret
000001ac <t2pwm2>:
//_delay_ms(20); //延迟1MS
//for(uchar i=0;i<50;i++)_delay_ms(20); //延迟1MS
}
//T/C2产生8160us周期方波的子程序1/(8*1000000/128)*255*2=8160us
void t2pwm2(void)
{DDRD|=(1<<PD7); //PD7(oc2)引脚定义为输出
1ac: cf 93 push r28
1ae: df 93 push r29
1b0: cd b7 in r28, 0x3d ; 61
1b2: de b7 in r29, 0x3e ; 62
1b4: 80 91 31 00 lds r24, 0x0031
1b8: 80 68 ori r24, 0x80 ; 128
1ba: 80 93 31 00 sts 0x0031, r24
TCCR2=0X75; //T2 128分频, 相位修正PWM 模式,向上计数时匹配置位0C0,向下计数匹配
1be: 85 e7 ldi r24, 0x75 ; 117
1c0: 80 93 45 00 sts 0x0045, r24
//时清除OC0(反向PWM)
OCR2=0X80;
1c4: 80 e8 ldi r24, 0x80 ; 128
1c6: 80 93 43 00 sts 0x0043, r24
1ca: df 91 pop r29
1cc: cf 91 pop r28
1ce: 08 95 ret
000001d0 <init_timer1>:
}
//T/C1上升沿捕获,8分频,初始化
void init_timer1(void)
{
1d0: cf 93 push r28
1d2: df 93 push r29
1d4: cd b7 in r28, 0x3d ; 61
1d6: de b7 in r29, 0x3e ; 62
DDRD&=~(1<<PD6);
1d8: 80 91 31 00 lds r24, 0x0031
1dc: 8f 7b andi r24, 0xBF ; 191
1de: 80 93 31 00 sts 0x0031, r24
TIMSK=0X20; //允许TIME1的输入捕获
1e2: 80 e2 ldi r24, 0x20 ; 32
1e4: 80 93 59 00 sts 0x0059, r24
TCCR1B=0XC2; //上升沿捕获,8分频
1e8: 82 ec ldi r24, 0xC2 ; 194
1ea: 80 93 4e 00 sts 0x004E, r24
1ee: df 91 pop r29
1f0: cf 91 pop r28
1f2: 08 95 ret
000001f4 <__vector_5>:
//TIFR=0XFF; //写1清中断标志
}
//输入捕获中断服务程序
SIGNAL (SIG_INPUT_CAPTURE1)
{temp2=ICR1-temp1;
1f4: 1f 92 push r1
1f6: 0f 92 push r0
1f8: 0f b6 in r0, 0x3f ; 63
1fa: 0f 92 push r0
1fc: 11 24 eor r1, r1
1fe: 2f 93 push r18
200: 3f 93 push r19
202: 8f 93 push r24
204: 9f 93 push r25
206: cf 93 push r28
208: df 93 push r29
20a: cd b7 in r28, 0x3d ; 61
20c: de b7 in r29, 0x3e ; 62
20e: 20 91 46 00 lds r18, 0x0046
212: 30 91 47 00 lds r19, 0x0047
216: 80 91 75 00 lds r24, 0x0075
21a: 90 91 76 00 lds r25, 0x0076
21e: 28 1b sub r18, r24
220: 39 0b sbc r19, r25
222: c9 01 movw r24, r18
224: 90 93 73 00 sts 0x0073, r25
228: 80 93 72 00 sts 0x0072, r24
temp1=temp2;
22c: 80 91 72 00 lds r24, 0x0072
230: 90 91 73 00 lds r25, 0x0073
234: 90 93 76 00 sts 0x0076, r25
238: 80 93 75 00 sts 0x0075, r24
num++;
23c: 80 91 77 00 lds r24, 0x0077
240: 8f 5f subi r24, 0xFF ; 255
242: 80 93 77 00 sts 0x0077, r24
246: df 91 pop r29
248: cf 91 pop r28
24a: 9f 91 pop r25
24c: 8f 91 pop r24
24e: 3f 91 pop r19
250: 2f 91 pop r18
252: 0f 90 pop r0
254: 0f be out 0x3f, r0 ; 63
256: 0f 90 pop r0
258: 1f 90 pop r1
25a: 18 95 reti
0000025c <main>:
}
int main(void)
{uchar tab[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
25c: c5 e5 ldi r28, 0x55 ; 85
25e: d4 e0 ldi r29, 0x04 ; 4
260: de bf out 0x3e, r29 ; 62
262: cd bf out 0x3d, r28 ; 61
264: 8a e0 ldi r24, 0x0A ; 10
266: de 01 movw r26, r28
268: 11 96 adiw r26, 0x01 ; 1
26a: e5 e6 ldi r30, 0x65 ; 101
26c: f0 e0 ldi r31, 0x00 ; 0
26e: 01 90 ld r0, Z+
270: 0d 92 st X+, r0
272: 8a 95 dec r24
274: e1 f7 brne .-8 ; 0x26e
DDRB=0XFF; //定义B口为输出
276: 8f ef ldi r24, 0xFF ; 255
278: 80 93 37 00 sts 0x0037, r24
DDRA=0XFF; //定义A口为输出
27c: 8f ef ldi r24, 0xFF ; 255
27e: 80 93 3a 00 sts 0x003A, r24
//DDRD=0XBF; // 定义D口除了PD6为输入,其他都为输出
temp1=0x0000;
282: 10 92 76 00 sts 0x0076, r1
286: 10 92 75 00 sts 0x0075, r1
num=0;
28a: 10 92 77 00 sts 0x0077, r1
t2pwm2();
28e: 0e 94 d6 00 call 0x1ac
init_timer1();
292: 0e 94 e8 00 call 0x1d0
sei();
296: 78 94 sei
while(1)
{
if(num>0 && num%2==0)
298: 80 91 77 00 lds r24, 0x0077
29c: 88 23 and r24, r24
29e: 09 f4 brne .+2 ; 0x2a2
2a0: 48 c0 rjmp .+144 ; 0x332
2a2: 80 91 77 00 lds r24, 0x0077
2a6: 81 70 andi r24, 0x01 ; 1
2a8: 88 23 and r24, r24
2aa: 09 f0 breq .+2 ; 0x2ae
2ac: 42 c0 rjmp .+132 ; 0x332
{b16td5(temp2);
2ae: 80 91 72 00 lds r24, 0x0072
2b2: 90 91 73 00 lds r25, 0x0073
2b6: 0e 94 47 00 call 0x8e
num_g=tab[i_g];
2ba: 80 91 74 00 lds r24, 0x0074
2be: 28 2f mov r18, r24
2c0: 33 27 eor r19, r19
2c2: ce 01 movw r24, r28
2c4: 01 96 adiw r24, 0x01 ; 1
2c6: f9 01 movw r30, r18
2c8: e8 0f add r30, r24
2ca: f9 1f adc r31, r25
2cc: 80 81 ld r24, Z
2ce: 80 93 60 00 sts 0x0060, r24
num_sh=tab[i_sh];
2d2: 80 91 71 00 lds r24, 0x0071
2d6: 28 2f mov r18, r24
2d8: 33 27 eor r19, r19
2da: ce 01 movw r24, r28
2dc: 01 96 adiw r24, 0x01 ; 1
2de: f9 01 movw r30, r18
2e0: e8 0f add r30, r24
2e2: f9 1f adc r31, r25
2e4: 80 81 ld r24, Z
2e6: 80 93 61 00 sts 0x0061, r24
num_b=tab[i_b];
2ea: 80 91 79 00 lds r24, 0x0079
2ee: 28 2f mov r18, r24
2f0: 33 27 eor r19, r19
2f2: ce 01 movw r24, r28
2f4: 01 96 adiw r24, 0x01 ; 1
2f6: f9 01 movw r30, r18
2f8: e8 0f add r30, r24
2fa: f9 1f adc r31, r25
2fc: 80 81 ld r24, Z
2fe: 80 93 62 00 sts 0x0062, r24
num_q=tab[i_q];
302: 80 91 70 00 lds r24, 0x0070
306: 28 2f mov r18, r24
308: 33 27 eor r19, r19
30a: ce 01 movw r24, r28
30c: 01 96 adiw r24, 0x01 ; 1
30e: f9 01 movw r30, r18
310: e8 0f add r30, r24
312: f9 1f adc r31, r25
314: 80 81 ld r24, Z
316: 80 93 63 00 sts 0x0063, r24
num_w=tab[i_w];
31a: 80 91 78 00 lds r24, 0x0078
31e: 28 2f mov r18, r24
320: 33 27 eor r19, r19
322: ce 01 movw r24, r28
324: 01 96 adiw r24, 0x01 ; 1
326: f9 01 movw r30, r18
328: e8 0f add r30, r24
32a: f9 1f adc r31, r25
32c: 80 81 ld r24, Z
32e: 80 93 64 00 sts 0x0064, r24
} //根据返回的个、十、百、千、万位的值查的相应的七数码管的值
smiao();
332: 0e 94 ac 00 call 0x158
336: b0 cf rjmp .-160 ; 0x298
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -