📄 tc0counter.lss
字号:
TC0counter.elf: file format elf32-avr
Sections:
Idx Name Size VMA LMA File off Algn
0 .text 000001e2 00000000 00000000 00000094 2**0
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .data 0000000a 00800060 000001e2 00000276 2**0
CONTENTS, ALLOC, LOAD, DATA
2 .bss 0000000c 0080006a 0080006a 00000280 2**0
ALLOC
3 .noinit 00000000 00800076 00800076 00000280 2**0
CONTENTS
4 .eeprom 00000000 00810000 00810000 00000280 2**0
CONTENTS
5 .stab 00000534 00000000 00000000 00000280 2**2
CONTENTS, READONLY, DEBUGGING
6 .stabstr 00000679 00000000 00000000 000007b4 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 45 00 jmp 0x8a
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: e2 ee ldi r30, 0xE2 ; 226
68: f1 e0 ldi r31, 0x01 ; 1
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: aa 36 cpi r26, 0x6A ; 106
72: b1 07 cpc r27, r17
74: d9 f7 brne .-10 ; 0x6c
00000076 <__do_clear_bss>:
76: 10 e0 ldi r17, 0x00 ; 0
78: aa e6 ldi r26, 0x6A ; 106
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: a6 37 cpi r26, 0x76 ; 118
82: b1 07 cpc r27, r17
84: e1 f7 brne .-8 ; 0x7e
86: 0c 94 99 00 jmp 0x132
0000008a <__bad_interrupt>:
8a: 0c 94 00 00 jmp 0x0
0000008e <Display>:
void Display(uint *p) //动态显示函数,参数p为待显示的数组名
{
uchar i,sel=0x01;
8e: 71 e0 ldi r23, 0x01 ; 1
90: 20 ea ldi r18, 0xA0 ; 160
92: 3f e0 ldi r19, 0x0F ; 15
94: 40 e0 ldi r20, 0x00 ; 0
96: 50 e0 ldi r21, 0x00 ; 0
98: 63 e0 ldi r22, 0x03 ; 3
9a: dc 01 movw r26, r24
for(i=0;i<4;i++)
{
PORTC=~sel; //选通最右边的数码管
9c: 87 2f mov r24, r23
9e: 80 95 com r24
a0: 85 bb out 0x15, r24 ; 21
PORTA=Table[p[i]]; //送字型码
a2: ed 91 ld r30, X+
a4: fd 91 ld r31, X+
a6: e0 5a subi r30, 0xA0 ; 160
a8: ff 4f sbci r31, 0xFF ; 255
aa: 80 81 ld r24, Z
ac: 8b bb out 0x1b, r24 ; 27
*/
static __inline__ void
_delay_loop_2(uint16_t __count)
{
__asm__ volatile (
ae: c9 01 movw r24, r18
b0: 01 97 sbiw r24, 0x01 ; 1
b2: f1 f7 brne .-4 ; 0xb0
_delay_ms(2); //显示延时
sel=sel<<1; //移位以显示前一位
b4: 77 0f add r23, r23
b6: 61 50 subi r22, 0x01 ; 1
b8: 67 ff sbrs r22, 7
ba: f0 cf rjmp .-32 ; 0x9c
bc: 08 95 ret
000000be <Process>:
}
}
//******************************计数值处理函数******************************
//功能:此函数用于将计数值拆分为BCD码的千,百,十,一数据,用于查表显示//
//参数说明:参数i:计数值;参数p:处理数据存放的数组名//
void Process(uint i,uint *p)
{
be: 0f 93 push r16
c0: 1f 93 push r17
c2: cf 93 push r28
c4: df 93 push r29
c6: fc 01 movw r30, r24
c8: 8b 01 movw r16, r22
p[0]=i/1000;
ca: 28 ee ldi r18, 0xE8 ; 232
cc: 33 e0 ldi r19, 0x03 ; 3
ce: b9 01 movw r22, r18
d0: 0e 94 dc 00 call 0x1b8
d4: d8 01 movw r26, r16
d6: 6d 93 st X+, r22
d8: 7c 93 st X, r23
i=i%1000;
da: cf 01 movw r24, r30
dc: b9 01 movw r22, r18
de: 0e 94 dc 00 call 0x1b8
e2: 9c 01 movw r18, r24
p[1]=i/100;
e4: e4 e6 ldi r30, 0x64 ; 100
e6: f0 e0 ldi r31, 0x00 ; 0
e8: bf 01 movw r22, r30
ea: 0e 94 dc 00 call 0x1b8
ee: e8 01 movw r28, r16
f0: 6a 83 std Y+2, r22 ; 0x02
f2: 7b 83 std Y+3, r23 ; 0x03
i=i%100;
f4: c9 01 movw r24, r18
f6: bf 01 movw r22, r30
f8: 0e 94 dc 00 call 0x1b8
fc: 9c 01 movw r18, r24
p[2]=i/10;
fe: ea e0 ldi r30, 0x0A ; 10
100: f0 e0 ldi r31, 0x00 ; 0
102: bf 01 movw r22, r30
104: 0e 94 dc 00 call 0x1b8
108: 6c 83 std Y+4, r22 ; 0x04
10a: 7d 83 std Y+5, r23 ; 0x05
i=i%10;
10c: c9 01 movw r24, r18
10e: bf 01 movw r22, r30
110: 0e 94 dc 00 call 0x1b8
p[3]=i;
114: 8e 83 std Y+6, r24 ; 0x06
116: 9f 83 std Y+7, r25 ; 0x07
118: df 91 pop r29
11a: cf 91 pop r28
11c: 1f 91 pop r17
11e: 0f 91 pop r16
120: 08 95 ret
00000122 <Init_IO>:
//int j;
//for(j=0;j<4;j++,p++)
//Data[j]= *p;
}
void Init_IO(void) //初始化I/O口
{
DDRA=0xff; //设置A口为推挽1输出
122: 8f ef ldi r24, 0xFF ; 255
124: 8a bb out 0x1a, r24 ; 26
PORTA=0xff;
126: 8b bb out 0x1b, r24 ; 27
DDRC=0xff; //设置C口为不带上拉电阻的输入
128: 84 bb out 0x14, r24 ; 20
PORTC=0xff;
12a: 85 bb out 0x15, r24 ; 21
DDRD=0x00; //设置D口为推挽1输出;
12c: 11 ba out 0x11, r1 ; 17
PORTD=0x00;
12e: 12 ba out 0x12, r1 ; 18
130: 08 95 ret
00000132 <main>:
}
int main(void)
{
132: cf e5 ldi r28, 0x5F ; 95
134: d4 e0 ldi r29, 0x04 ; 4
136: de bf out 0x3e, r29 ; 62
138: cd bf out 0x3d, r28 ; 61
uint i,Load;
Init_IO(); //初始化I/O口
13a: 0e 94 91 00 call 0x122
PORTA=0xff; //点亮测试所有的数码管
13e: 8f ef ldi r24, 0xFF ; 255
140: 8b bb out 0x1b, r24 ; 27
PORTC=0x00;
142: 15 ba out 0x15, r1 ; 21
144: a0 ea ldi r26, 0xA0 ; 160
146: bf e0 ldi r27, 0x0F ; 15
148: c0 e0 ldi r28, 0x00 ; 0
14a: d0 e0 ldi r29, 0x00 ; 0
14c: 28 ee ldi r18, 0xE8 ; 232
14e: 33 e0 ldi r19, 0x03 ; 3
*/
static __inline__ void
_delay_loop_2(uint16_t __count)
{
__asm__ volatile (
150: cd 01 movw r24, r26
152: 01 97 sbiw r24, 0x01 ; 1
154: f1 f7 brne .-4 ; 0x152
for(i=0;i<1001;i++)
156: 21 50 subi r18, 0x01 ; 1
158: 30 40 sbci r19, 0x00 ; 0
15a: 37 ff sbrs r19, 7
15c: f9 cf rjmp .-14 ; 0x150
_delay_ms(2); //显示延时
PORTC=0xff; //数码管熄灭,进入计数器状态
15e: 8f ef ldi r24, 0xFF ; 255
160: 85 bb out 0x15, r24 ; 21
TCCR0=0x06;
162: 86 e0 ldi r24, 0x06 ; 6
164: 83 bf out 0x33, r24 ; 51
TCNT0=CNT;
166: 80 91 6a 00 lds r24, 0x006A
16a: 82 bf out 0x32, r24 ; 50
while( (PIND&0x01)==0)
{
uint j;
if(CNT!=9999)
{
CNT=CNT+1;
TCNT0=CNT;
Process(TCNT0,Data); //计数值处理
Display(Data); //动态扫描显示
16c: 80 99 sbic 0x10, 0 ; 16
16e: 1c c0 rjmp .+56 ; 0x1a8
170: 80 91 6a 00 lds r24, 0x006A
174: 90 91 6b 00 lds r25, 0x006B
178: 27 e2 ldi r18, 0x27 ; 39
17a: 8f 30 cpi r24, 0x0F ; 15
17c: 92 07 cpc r25, r18
17e: 91 f0 breq .+36 ; 0x1a4
180: 01 96 adiw r24, 0x01 ; 1
182: 90 93 6b 00 sts 0x006B, r25
186: 80 93 6a 00 sts 0x006A, r24
18a: 80 91 6a 00 lds r24, 0x006A
18e: 82 bf out 0x32, r24 ; 50
190: 82 b7 in r24, 0x32 ; 50
192: 6c e6 ldi r22, 0x6C ; 108
194: 70 e0 ldi r23, 0x00 ; 0
196: 99 27 eor r25, r25
198: 0e 94 5f 00 call 0xbe
19c: 8c e6 ldi r24, 0x6C ; 108
19e: 90 e0 ldi r25, 0x00 ; 0
1a0: 0e 94 47 00 call 0x8e
1a4: 80 9b sbis 0x10, 0 ; 16
1a6: e4 cf rjmp .-56 ; 0x170
}
}
Display(Data);
1a8: 8c e6 ldi r24, 0x6C ; 108
1aa: 90 e0 ldi r25, 0x00 ; 0
1ac: 0e 94 47 00 call 0x8e
return 0;
}
1b0: 80 e0 ldi r24, 0x00 ; 0
1b2: 90 e0 ldi r25, 0x00 ; 0
1b4: 0c 94 f0 00 jmp 0x1e0
000001b8 <__udivmodhi4>:
1b8: aa 1b sub r26, r26
1ba: bb 1b sub r27, r27
1bc: 51 e1 ldi r21, 0x11 ; 17
1be: 07 c0 rjmp .+14 ; 0x1ce
000001c0 <__udivmodhi4_loop>:
1c0: aa 1f adc r26, r26
1c2: bb 1f adc r27, r27
1c4: a6 17 cp r26, r22
1c6: b7 07 cpc r27, r23
1c8: 10 f0 brcs .+4 ; 0x1ce
1ca: a6 1b sub r26, r22
1cc: b7 0b sbc r27, r23
000001ce <__udivmodhi4_ep>:
1ce: 88 1f adc r24, r24
1d0: 99 1f adc r25, r25
1d2: 5a 95 dec r21
1d4: a9 f7 brne .-22 ; 0x1c0
1d6: 80 95 com r24
1d8: 90 95 com r25
1da: bc 01 movw r22, r24
1dc: cd 01 movw r24, r26
1de: 08 95 ret
000001e0 <_exit>:
1e0: ff cf rjmp .-2 ; 0x1e0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -