📄 mkq_m8.lss
字号:
mkq_m8.elf: file format elf32-avr
Sections:
Idx Name Size VMA LMA File off Algn
0 .text 0000040a 00000000 00000000 00000094 2**1
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .data 00000000 00800060 0000040a 0000049e 2**0
CONTENTS, ALLOC, LOAD, DATA
2 .bss 00000011 00800060 00800060 0000049e 2**0
ALLOC
3 .noinit 00000000 00800071 00800071 0000049e 2**0
CONTENTS
4 .eeprom 00000000 00810000 00810000 0000049e 2**0
CONTENTS
5 .stab 0000036c 00000000 00000000 000004a0 2**2
CONTENTS, READONLY, DEBUGGING
6 .stabstr 00000084 00000000 00000000 0000080c 2**0
CONTENTS, READONLY, DEBUGGING
7 .debug_aranges 00000014 00000000 00000000 00000890 2**0
CONTENTS, READONLY, DEBUGGING
8 .debug_pubnames 00000177 00000000 00000000 000008a4 2**0
CONTENTS, READONLY, DEBUGGING
9 .debug_info 00000379 00000000 00000000 00000a1b 2**0
CONTENTS, READONLY, DEBUGGING
10 .debug_abbrev 00000116 00000000 00000000 00000d94 2**0
CONTENTS, READONLY, DEBUGGING
11 .debug_line 00000394 00000000 00000000 00000eaa 2**0
CONTENTS, READONLY, DEBUGGING
12 .debug_str 000001b6 00000000 00000000 0000123e 2**0
CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:
00000000 <__vectors>:
0: 23 c0 rjmp .+70 ; 0x48 <__init>
2: 3c c0 rjmp .+120 ; 0x7c <__bad_interrupt>
4: 3b c0 rjmp .+118 ; 0x7c <__bad_interrupt>
6: 3a c0 rjmp .+116 ; 0x7c <__bad_interrupt>
8: 39 c0 rjmp .+114 ; 0x7c <__bad_interrupt>
a: 38 c0 rjmp .+112 ; 0x7c <__bad_interrupt>
c: 37 c0 rjmp .+110 ; 0x7c <__bad_interrupt>
e: 36 c0 rjmp .+108 ; 0x7c <__bad_interrupt>
10: 35 c0 rjmp .+106 ; 0x7c <__bad_interrupt>
12: 3d c0 rjmp .+122 ; 0x8e <__vector_9>
14: 33 c0 rjmp .+102 ; 0x7c <__bad_interrupt>
16: 32 c0 rjmp .+100 ; 0x7c <__bad_interrupt>
18: 31 c0 rjmp .+98 ; 0x7c <__bad_interrupt>
1a: 30 c0 rjmp .+96 ; 0x7c <__bad_interrupt>
1c: 2f c0 rjmp .+94 ; 0x7c <__bad_interrupt>
1e: 2e c0 rjmp .+92 ; 0x7c <__bad_interrupt>
20: 2d c0 rjmp .+90 ; 0x7c <__bad_interrupt>
22: 2c c0 rjmp .+88 ; 0x7c <__bad_interrupt>
24: 2b c0 rjmp .+86 ; 0x7c <__bad_interrupt>
00000026 <__ctors_end>:
26: da c0 rjmp .+436 ; 0x1dc <door_state_init+0x2c>
28: d1 c0 rjmp .+418 ; 0x1cc <door_state_init+0x1c>
2a: d8 c0 rjmp .+432 ; 0x1dc <door_state_init+0x2c>
2c: c8 c0 rjmp .+400 ; 0x1be <door_state_init+0xe>
2e: cb c0 rjmp .+406 ; 0x1c6 <door_state_init+0x16>
30: cd c0 rjmp .+410 ; 0x1cc <door_state_init+0x1c>
32: d4 c0 rjmp .+424 ; 0x1dc <door_state_init+0x2c>
34: d5 c0 rjmp .+426 ; 0x1e0 <door_state_init+0x30>
36: 04 c1 rjmp .+520 ; 0x240 <door_mainloop+0x36>
38: 0c c1 rjmp .+536 ; 0x252 <door_mainloop+0x48>
3a: 26 c1 rjmp .+588 ; 0x288 <door_mainloop+0x7e>
3c: 34 c1 rjmp .+616 ; 0x2a6 <door_mainloop+0x9c>
3e: 44 c1 rjmp .+648 ; 0x2c8 <door_mainloop+0xbe>
40: 53 c1 rjmp .+678 ; 0x2e8 <door_mainloop+0xde>
42: 66 c1 rjmp .+716 ; 0x310 <door_mainloop+0x106>
44: 8d c1 rjmp .+794 ; 0x360 <door_mainloop+0x156>
46: 7a c1 rjmp .+756 ; 0x33c <door_mainloop+0x132>
00000048 <__init>:
48: 11 24 eor r1, r1
4a: 1f be out 0x3f, r1 ; 63
4c: cf e5 ldi r28, 0x5F ; 95
4e: d4 e0 ldi r29, 0x04 ; 4
50: de bf out 0x3e, r29 ; 62
52: cd bf out 0x3d, r28 ; 61
00000054 <__do_copy_data>:
54: 10 e0 ldi r17, 0x00 ; 0
56: a0 e6 ldi r26, 0x60 ; 96
58: b0 e0 ldi r27, 0x00 ; 0
5a: ea e0 ldi r30, 0x0A ; 10
5c: f4 e0 ldi r31, 0x04 ; 4
5e: 02 c0 rjmp .+4 ; 0x64 <.do_copy_data_start>
00000060 <.do_copy_data_loop>:
60: 05 90 lpm r0, Z+
62: 0d 92 st X+, r0
00000064 <.do_copy_data_start>:
64: a0 36 cpi r26, 0x60 ; 96
66: b1 07 cpc r27, r17
68: d9 f7 brne .-10 ; 0x60 <.do_copy_data_loop>
0000006a <__do_clear_bss>:
6a: 10 e0 ldi r17, 0x00 ; 0
6c: a0 e6 ldi r26, 0x60 ; 96
6e: b0 e0 ldi r27, 0x00 ; 0
70: 01 c0 rjmp .+2 ; 0x74 <.do_clear_bss_start>
00000072 <.do_clear_bss_loop>:
72: 1d 92 st X+, r1
00000074 <.do_clear_bss_start>:
74: a1 37 cpi r26, 0x71 ; 113
76: b1 07 cpc r27, r17
78: e1 f7 brne .-8 ; 0x72 <.do_clear_bss_loop>
7a: b9 c1 rjmp .+882 ; 0x3ee <main>
0000007c <__bad_interrupt>:
7c: c1 cf rjmp .-126 ; 0x0 <__vectors>
0000007e <timer0_init>:
//****************************
void timer0_init(void)
{
//T0定时10ms
TCCR0 = 0x00; //stop
7e: 13 be out 0x33, r1 ; 51
TCNT0 = T0_10MS; //setup
80: 84 e6 ldi r24, 0x64 ; 100
82: 82 bf out 0x32, r24 ; 50
TCCR0 = 0x03; //start timer --64分频--1M内部系统时钟--10ms中断一次
84: 83 e0 ldi r24, 0x03 ; 3
86: 83 bf out 0x33, r24 ; 51
TIMSK = 0x01; //溢出中断TOIE0
88: 81 e0 ldi r24, 0x01 ; 1
8a: 89 bf out 0x39, r24 ; 57
8c: 08 95 ret
0000008e <__vector_9>:
}
//************************************
SIGNAL(SIG_OVERFLOW0)//T0溢出中断10ms
{
8e: 1f 92 push r1
90: 0f 92 push r0
92: 0f b6 in r0, 0x3f ; 63
94: 0f 92 push r0
96: 11 24 eor r1, r1
98: 8f 93 push r24
TCNT0 = T0_10MS;
9a: 84 e6 ldi r24, 0x64 ; 100
9c: 82 bf out 0x32, r24 ; 50
f_10ms=1;
9e: 81 e0 ldi r24, 0x01 ; 1
a0: 80 93 6c 00 sts 0x006C, r24
a4: 8f 91 pop r24
a6: 0f 90 pop r0
a8: 0f be out 0x3f, r0 ; 63
aa: 0f 90 pop r0
ac: 1f 90 pop r1
ae: 18 95 reti
000000b0 <main_init>:
}
//************************************
void main_init(void)
{
b0: 1f 93 push r17
DDRB=0x02; //B0000_0010 PB7(输入 高阻 外有上拉 ) PB1(输出 常态出高熄灭)
b2: 12 e0 ldi r17, 0x02 ; 2
b4: 17 bb out 0x17, r17 ; 23
PORTB=0x7f;//B1111_1111
b6: 8f e7 ldi r24, 0x7F ; 127
b8: 88 bb out 0x18, r24 ; 24
DDRC=0x07; //B0000_0111 PC(5 4 3)(输入 高阻 外有上拉 ) 2 1 0(输出 常态出高)
ba: 87 e0 ldi r24, 0x07 ; 7
bc: 84 bb out 0x14, r24 ; 20
PORTC=0xff;//B1111_1111
be: 8f ef ldi r24, 0xFF ; 255
c0: 85 bb out 0x15, r24 ; 21
//DDRD=0x02; //B0000_0010 PD3(输入 高阻 外有上拉 ) PD2(输入 上拉) PD1(输出 常态出高)
//PORTD=0xf7;//B1111_0111
DDRD=0xf0; //B1111_0000 PD3(输入 高阻 外有上拉 ) PD2(输入 上拉) PD1(输出 常态出高)
c2: 80 ef ldi r24, 0xF0 ; 240
c4: 81 bb out 0x11, r24 ; 17
PORTD=0x0f;//B0000_1111
c6: 8f e0 ldi r24, 0x0F ; 15
c8: 82 bb out 0x12, r24 ; 18
timer0_init();
ca: d9 df rcall .-78 ; 0x7e <timer0_init>
cnt_20ms=2;
cc: 10 93 63 00 sts 0x0063, r17
cnt_100ms=5;
d0: 85 e0 ldi r24, 0x05 ; 5
d2: 80 93 6a 00 sts 0x006A, r24
cnt_200ms=2;
d6: 10 93 64 00 sts 0x0064, r17
cnt_10s=CONST_10S;
da: 82 e3 ldi r24, 0x32 ; 50
dc: 80 93 69 00 sts 0x0069, r24
cnt_12s=CONST_12S;
e0: 8c e3 ldi r24, 0x3C ; 60
e2: 80 93 61 00 sts 0x0061, r24
e6: 1f 91 pop r17
e8: 08 95 ret
000000ea <tim0_mainloop>:
}
//************************************
//10ms一次中断产生检测时间20ms,报警时间100ms 时限保护10s 12s
void tim0_mainloop(void)
{
if(f_10ms==1)
ea: 90 91 6c 00 lds r25, 0x006C
ee: 91 30 cpi r25, 0x01 ; 1
f0: e1 f5 brne .+120 ; 0x16a <tim0_mainloop+0x80>
{
f_10ms=0;
f2: 10 92 6c 00 sts 0x006C, r1
if(--cnt_20ms==0)//判断按钮
f6: 80 91 63 00 lds r24, 0x0063
fa: 81 50 subi r24, 0x01 ; 1
fc: 80 93 63 00 sts 0x0063, r24
100: 88 23 and r24, r24
102: 99 f5 brne .+102 ; 0x16a <tim0_mainloop+0x80>
{
cnt_20ms=2;f_20ms=1;
104: 22 e0 ldi r18, 0x02 ; 2
106: 20 93 63 00 sts 0x0063, r18
10a: 90 93 65 00 sts 0x0065, r25
if(--cnt_100ms==0)//闪烁时间
10e: 80 91 6a 00 lds r24, 0x006A
112: 81 50 subi r24, 0x01 ; 1
114: 80 93 6a 00 sts 0x006A, r24
118: 88 23 and r24, r24
11a: 39 f5 brne .+78 ; 0x16a <tim0_mainloop+0x80>
{
cnt_100ms = 2;f_100ms = 1;
11c: 20 93 6a 00 sts 0x006A, r18
120: 90 93 62 00 sts 0x0062, r25
if(--cnt_200ms==0)//行程开关检测时间
124: 80 91 64 00 lds r24, 0x0064
128: 81 50 subi r24, 0x01 ; 1
12a: 80 93 64 00 sts 0x0064, r24
12e: 88 23 and r24, r24
130: e1 f4 brne .+56 ; 0x16a <tim0_mainloop+0x80>
{
cnt_200ms=2;f_200ms=1;
132: 20 93 64 00 sts 0x0064, r18
136: 90 93 6b 00 sts 0x006B, r25
if(--cnt_10s==0)//正转时间
13a: 80 91 69 00 lds r24, 0x0069
13e: 81 50 subi r24, 0x01 ; 1
140: 80 93 69 00 sts 0x0069, r24
144: 88 23 and r24, r24
146: 29 f4 brne .+10 ; 0x152 <tim0_mainloop+0x68>
{
cnt_10s=CONST_10S;f_10s=1;
148: 82 e3 ldi r24, 0x32 ; 50
14a: 80 93 69 00 sts 0x0069, r24
14e: 90 93 68 00 sts 0x0068, r25
}
if(--cnt_12s==0)//反转时间
152: 80 91 61 00 lds r24, 0x0061
156: 81 50 subi r24, 0x01 ; 1
158: 80 93 61 00 sts 0x0061, r24
15c: 88 23 and r24, r24
15e: 29 f4 brne .+10 ; 0x16a <tim0_mainloop+0x80>
{
cnt_12s=CONST_12S;f_12s=1;
160: 8c e3 ldi r24, 0x3C ; 60
162: 80 93 61 00 sts 0x0061, r24
166: 90 93 6e 00 sts 0x006E, r25
16a: 08 95 ret
0000016c <led_alarm>:
}
}
}
}
}
}
//************************************
//错误报警 输入参数=1 报警 =0 不报警
void led_alarm(uchar alarm)
{
if((alarm==1)&&(f_100ms==1)) //同时满足 100ms时间到,报警标志为1
16c: 81 30 cpi r24, 0x01 ; 1
16e: 89 f4 brne .+34 ; 0x192 <led_alarm+0x26>
170: 90 91 62 00 lds r25, 0x0062
174: 91 30 cpi r25, 0x01 ; 1
176: 69 f4 brne .+26 ; 0x192 <led_alarm+0x26>
{
f_100ms=0;
178: 10 92 62 00 sts 0x0062, r1
if(blink_b==0)
17c: 80 91 67 00 lds r24, 0x0067
180: 88 23 and r24, r24
182: 21 f4 brne .+8 ; 0x18c <led_alarm+0x20>
{
ERR_ON;blink_b=1;
184: c1 98 cbi 0x18, 1 ; 24
186: 90 93 67 00 sts 0x0067, r25
18a: 08 95 ret
}
else
{
ERR_OFF;blink_b=0;
18c: c1 9a sbi 0x18, 1 ; 24
18e: 10 92 67 00 sts 0x0067, r1
192: 08 95 ret
00000194 <moto_zhen>:
}
}
}
//************************************
void moto_zhen(void)
{
JDQ_OFF;
194: aa 9a sbi 0x15, 2 ; 21
__ticks = 1;
else if (__tmp > 65535)
__ticks = 0; /* i.e. 65536 */
else
__ticks = (uint16_t)__tmp;
196: 84 ec ldi r24, 0xC4 ; 196
198: 99 e0 ldi r25, 0x09 ; 9
19a: 01 97 sbiw r24, 0x01 ; 1
19c: f1 f7 brne .-4 ; 0x19a <moto_zhen+0x6>
_delay_ms(10);
LOCK_ON;//正转锁紧
19e: a8 98 cbi 0x15, 0 ; 21
1a0: 08 95 ret
000001a2 <moto_fan>:
}
//************************************
void moto_fan(void)
{
JDQ_ON;
1a2: aa 98 cbi 0x15, 2 ; 21
__ticks = 1;
else if (__tmp > 65535)
__ticks = 0; /* i.e. 65536 */
else
__ticks = (uint16_t)__tmp;
1a4: 84 ec ldi r24, 0xC4 ; 196
1a6: 99 e0 ldi r25, 0x09 ; 9
1a8: 01 97 sbiw r24, 0x01 ; 1
1aa: f1 f7 brne .-4 ; 0x1a8 <moto_fan+0x6>
_delay_ms(10);
UNLOCK_ON;//反转松开
1ac: a9 98 cbi 0x15, 1 ; 21
1ae: 08 95 ret
000001b0 <door_state_init>:
}
//************************************
void door_state_init(void)//门状态起始判断
{
uchar temp;
temp=XCKG;
1b0: 83 b3 in r24, 0x13 ; 19
temp>>=3;
err_f=0;ERR_OFF;
1b2: 10 92 6f 00 sts 0x006F, r1
1b6: c1 9a sbi 0x18, 1 ; 24
//上电后若门合上,但未锁定100,执行锁定
//若门锁紧 进入0
//若门全开 进入4
//若门安装初态111 进入11
//若行程开关位置有冲突,报警,直到正确为止 包括 000 010 110
//对于执行报警或锁紧的步骤,要加入上电初始化标志powon_f=1;
temp=7;
switch(temp)//PC5(解锁) 4(关上) 3(锁紧)
1b8: ed e2 ldi r30, 0x2D ; 45
1ba: f0 e0 ldi r31, 0x00 ; 0
1bc: 09 94 ijmp
{
case 0://000 行程开关位置有冲突 报警
state=8;err_f=1;
break;
case 1://001解锁+关闭---启动锁紧并一直报警直到门锁紧为止
moto_zhen();f_10s=0;cnt_10s=CONST_10S;
state=3;
err_f=1;
break;
case 2://010 行程开关位置有冲突 报警
state=8;err_f=1;
break;
case 3://011 门全开
state=2;
1be: 82 e0 ldi r24, 0x02 ; 2
1c0: 80 93 66 00 sts 0x0066, r24
break;
1c4: 13 c0 rjmp .+38 ; 0x1ec <door_state_init+0x3c>
case 4://100已经锁紧
state=0;
1c6: 10 92 66 00 sts 0x0066, r1
break;
1ca: 10 c0 rjmp .+32 ; 0x1ec <door_state_init+0x3c>
case 5://101 门安装初态 门合上但行程开关不到位 启动锁紧并一直报警直到门锁紧为止
moto_zhen();f_10s=0;cnt_10s=CONST_10S;
1cc: e3 df rcall .-58 ; 0x194 <moto_zhen>
1ce: 10 92 68 00 sts 0x0068, r1
1d2: 82 e3 ldi r24, 0x32 ; 50
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -