📄 main.lss
字号:
main.elf: file format elf32-avr
Sections:
Idx Name Size VMA LMA File off Algn
0 .text 00000436 00000000 00000000 00000094 2**0
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .data 00000028 00800060 00000436 000004ca 2**0
CONTENTS, ALLOC, LOAD, DATA
2 .bss 0000000a 00800088 00800088 000004f2 2**0
ALLOC
3 .noinit 00000000 00800092 00800092 000004f2 2**0
CONTENTS
4 .eeprom 00000000 00810000 00810000 000004f2 2**0
CONTENTS
5 .debug_aranges 00000014 00000000 00000000 000004f2 2**0
CONTENTS, READONLY, DEBUGGING
6 .debug_pubnames 000000fe 00000000 00000000 00000506 2**0
CONTENTS, READONLY, DEBUGGING
7 .debug_info 00000487 00000000 00000000 00000604 2**0
CONTENTS, READONLY, DEBUGGING
8 .debug_abbrev 00000193 00000000 00000000 00000a8b 2**0
CONTENTS, READONLY, DEBUGGING
9 .debug_line 00000436 00000000 00000000 00000c1e 2**0
CONTENTS, READONLY, DEBUGGING
10 .debug_str 00000186 00000000 00000000 00001054 2**0
CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:
00000000 <__vectors>:
0: 10 c0 rjmp .+32 ; 0x22
2: 29 c0 rjmp .+82 ; 0x56
4: 28 c0 rjmp .+80 ; 0x56
6: 27 c0 rjmp .+78 ; 0x56
8: 26 c0 rjmp .+76 ; 0x56
a: 25 c0 rjmp .+74 ; 0x56
c: 24 c0 rjmp .+72 ; 0x56
e: bf c0 rjmp .+382 ; 0x18e
10: 22 c0 rjmp .+68 ; 0x56
12: 21 c0 rjmp .+66 ; 0x56
14: 20 c0 rjmp .+64 ; 0x56
16: 1f c0 rjmp .+62 ; 0x56
18: 1e c0 rjmp .+60 ; 0x56
1a: 1d c0 rjmp .+58 ; 0x56
1c: 1c c0 rjmp .+56 ; 0x56
1e: 1b c0 rjmp .+54 ; 0x56
20: 1a c0 rjmp .+52 ; 0x56
00000022 <__ctors_end>:
22: 11 24 eor r1, r1
24: 1f be out 0x3f, r1 ; 63
26: cf e5 ldi r28, 0x5F ; 95
28: d2 e0 ldi r29, 0x02 ; 2
2a: de bf out 0x3e, r29 ; 62
2c: cd bf out 0x3d, r28 ; 61
0000002e <__do_copy_data>:
2e: 10 e0 ldi r17, 0x00 ; 0
30: a0 e6 ldi r26, 0x60 ; 96
32: b0 e0 ldi r27, 0x00 ; 0
34: e6 e3 ldi r30, 0x36 ; 54
36: f4 e0 ldi r31, 0x04 ; 4
38: 02 c0 rjmp .+4 ; 0x3e
0000003a <.do_copy_data_loop>:
3a: 05 90 lpm r0, Z+
3c: 0d 92 st X+, r0
0000003e <.do_copy_data_start>:
3e: a8 38 cpi r26, 0x88 ; 136
40: b1 07 cpc r27, r17
42: d9 f7 brne .-10 ; 0x3a
00000044 <__do_clear_bss>:
44: 10 e0 ldi r17, 0x00 ; 0
46: a8 e8 ldi r26, 0x88 ; 136
48: b0 e0 ldi r27, 0x00 ; 0
4a: 01 c0 rjmp .+2 ; 0x4e
0000004c <.do_clear_bss_loop>:
4c: 1d 92 st X+, r1
0000004e <.do_clear_bss_start>:
4e: a2 39 cpi r26, 0x92 ; 146
50: b1 07 cpc r27, r17
52: e1 f7 brne .-8 ; 0x4c
54: 95 c1 rjmp .+810 ; 0x380
00000056 <__bad_interrupt>:
56: d4 cf rjmp .-88 ; 0x0
00000058 <delay_ms>:
//----------------ms级延时---------------
void delay_ms(unsigned int ms)
{
58: cf 93 push r28
5a: df 93 push r29
unsigned int i;
for(i=0;i<ms;i++) _delay_ms(1); //延时 i*ms= 毫秒,可自行调节
5c: 00 97 sbiw r24, 0x00 ; 0
5e: 59 f0 breq .+22 ; 0x76
60: ac ed ldi r26, 0xDC ; 220
62: b5 e0 ldi r27, 0x05 ; 5
64: c0 e0 ldi r28, 0x00 ; 0
66: d0 e0 ldi r29, 0x00 ; 0
68: 9c 01 movw r18, r24
*/
static __inline__ void
_delay_loop_2(uint16_t __count)
{
__asm__ volatile (
6a: cd 01 movw r24, r26
6c: 01 97 sbiw r24, 0x01 ; 1
6e: f1 f7 brne .-4 ; 0x6c
70: 21 50 subi r18, 0x01 ; 1
72: 30 40 sbci r19, 0x00 ; 0
74: d1 f7 brne .-12 ; 0x6a
76: df 91 pop r29
78: cf 91 pop r28
7a: 08 95 ret
0000007c <delay_us>:
}
//----------------us级延时---------------
void delay_us(unsigned int us)
{
unsigned int i;
for(i=0;i<us;i++) _delay_us(1); //延时 i*us= 毫秒,可自行调节
7c: 00 97 sbiw r24, 0x00 ; 0
7e: 59 f0 breq .+22 ; 0x96
80: 42 e0 ldi r20, 0x02 ; 2
82: 50 e0 ldi r21, 0x00 ; 0
84: 60 e0 ldi r22, 0x00 ; 0
86: 70 e0 ldi r23, 0x00 ; 0
88: 9c 01 movw r18, r24
*/
static __inline__ void
_delay_loop_1(uint8_t __count)
{
__asm__ volatile (
8a: 84 2f mov r24, r20
8c: 8a 95 dec r24
8e: f1 f7 brne .-4 ; 0x8c
90: 21 50 subi r18, 0x01 ; 1
92: 30 40 sbci r19, 0x00 ; 0
94: d1 f7 brne .-12 ; 0x8a
96: 08 95 ret
00000098 <Display>:
}
//-------------------- 数码管动态扫描程序------------------------
void Display(uchar *p) //动态显示函数,参数p为待显示的数组名
{
98: 0f 93 push r16
9a: 1f 93 push r17
9c: cf 93 push r28
9e: df 93 push r29
//-----------------第一种动态扫描方式-----------------
uchar i,sel=0b11111110;
a0: 0e ef ldi r16, 0xFE ; 254
a2: ec 01 movw r28, r24
a4: 15 e0 ldi r17, 0x05 ; 5
for(i=0;i<6;i++)
{
PORTB=sel; //选通最右边的数码管
a6: 08 bb out 0x18, r16 ; 24
PORTA=Table[p[ i ]]; //送字型码
a8: 89 91 ld r24, Y+
aa: e8 2f mov r30, r24
ac: ff 27 eor r31, r31
ae: e0 5a subi r30, 0xA0 ; 160
b0: ff 4f sbci r31, 0xFF ; 255
b2: 80 81 ld r24, Z
b4: 8b bb out 0x1b, r24 ; 27
delay_ms(2); //显示延时
b6: 82 e0 ldi r24, 0x02 ; 2
b8: 90 e0 ldi r25, 0x00 ; 0
ba: ce df rcall .-100 ; 0x58
sel=(sel<<1)|0b00000001; //移位以显示前一位
bc: 80 2f mov r24, r16
be: 99 27 eor r25, r25
c0: 88 0f add r24, r24
c2: 99 1f adc r25, r25
c4: 08 2f mov r16, r24
c6: 01 60 ori r16, 0x01 ; 1
c8: 11 50 subi r17, 0x01 ; 1
ca: 17 ff sbrs r17, 7
cc: ec cf rjmp .-40 ; 0xa6
ce: df 91 pop r29
d0: cf 91 pop r28
d2: 1f 91 pop r17
d4: 0f 91 pop r16
d6: 08 95 ret
000000d8 <Process>:
}
/*//-------------第二种动态扫描方式-----------------
uchar i=0,sel=0b11111110;
PORTB=sel;
PORTA=Table[p[ i ]]; //送字型码
delay_ms(2); //显示延时
i++;
sel=0b11111101;
PORTB=sel;
PORTA=Table[p[ i ]]; //送字型码
delay_ms(2); //显示延时
i++;
sel=0b11111011;
PORTB=sel;
PORTA=Table[p[ i ]]; //送字型码
delay_ms(2); //显示延时
i++;
sel=0b11110111;
PORTB=sel;
PORTA=Table[p[ i ]]; //送字型码
delay_ms(2); //显示延时
i++;
sel=0b11101111;
PORTB=sel;
PORTA=Table[p[ i ]]; //送字型码
delay_ms(2); //显示延时
i++;
sel=0b11011111;
PORTB=sel;
PORTA=Table[p[ i ]]; //送字型码
delay_ms(2); //显示延时
*/
}
//计数值处理函数。参数p1:时间数组名;参数p2:显示数组名//
//功能:此函数用于将计数值拆分为BCD码的10时,时,10分,分,10秒,秒//
void Process(uchar *p1,uchar *p2)
{
d8: cf 93 push r28
da: df 93 push r29
dc: fc 01 movw r30, r24
de: db 01 movw r26, r22
p2[0]=p1[0]/10;
e0: 4a e0 ldi r20, 0x0A ; 10
e2: 80 81 ld r24, Z
e4: 64 2f mov r22, r20
e6: 9b d1 rcall .+822 ; 0x41e
e8: 8c 93 st X, r24
p2[1]=p1[0]-p2[0]*10;
ea: 84 9f mul r24, r20
ec: 90 01 movw r18, r0
ee: 11 24 eor r1, r1
f0: 80 81 ld r24, Z
f2: 82 1b sub r24, r18
f4: ed 01 movw r28, r26
f6: 89 83 std Y+1, r24 ; 0x01
p2[2]=p1[1]/10;
f8: 81 81 ldd r24, Z+1 ; 0x01
fa: 91 d1 rcall .+802 ; 0x41e
fc: 8a 83 std Y+2, r24 ; 0x02
p2[3]=p1[1]-p2[2]*10;
fe: 84 9f mul r24, r20
100: 90 01 movw r18, r0
102: 11 24 eor r1, r1
104: 81 81 ldd r24, Z+1 ; 0x01
106: 82 1b sub r24, r18
108: 8b 83 std Y+3, r24 ; 0x03
p2[4]=p1[2]/10;
10a: 82 81 ldd r24, Z+2 ; 0x02
10c: 88 d1 rcall .+784 ; 0x41e
10e: 8c 83 std Y+4, r24 ; 0x04
p2[5]=p1[2]-p2[4]*10;
110: 84 9f mul r24, r20
112: 90 01 movw r18, r0
114: 11 24 eor r1, r1
116: 82 81 ldd r24, Z+2 ; 0x02
118: 82 1b sub r24, r18
11a: 8d 83 std Y+5, r24 ; 0x05
11c: df 91 pop r29
11e: cf 91 pop r28
120: 08 95 ret
00000122 <Init_IO>:
}
//--------------初始化I/O口------------------
void Init_IO(void) //初始化I/O口
{
PORTA=0xff;
122: 8f ef ldi r24, 0xFF ; 255
124: 8b bb out 0x1b, r24 ; 27
DDRA=0xff; //设置A口为推挽1输出
126: 8a bb out 0x1a, r24 ; 26
PORTB=0xff; //PORTC=0xff;
128: 88 bb out 0x18, r24 ; 24
DDRB=0xff; //DDRC=0xff; //设置C口为推挽1输出;
12a: 87 bb out 0x17, r24 ; 23
12c: 08 95 ret
0000012e <BEEP>:
}
//-------------------主程序--------------------
int main(void)
{
delay_ms(1000);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -