📄 steper.lss
字号:
236: a8 f0 brcs .+42 ; 0x262 <__vector_9+0x7a>
{
keytimes=101;
238: 85 e6 ldi r24, 0x65 ; 101
23a: 80 93 76 00 sts 0x0076, r24
keycode=(LongPush|CurKey);
23e: 80 91 75 00 lds r24, 0x0075
242: 80 68 ori r24, 0x80 ; 128
244: 80 93 74 00 sts 0x0074, r24
248: 0c c0 rjmp .+24 ; 0x262 <__vector_9+0x7a>
}
}
else if(CurKey!=LastKey)
24a: 90 91 75 00 lds r25, 0x0075
24e: 80 91 60 00 lds r24, 0x0060
252: 98 17 cp r25, r24
254: 21 f0 breq .+8 ; 0x25e <__vector_9+0x76>
{
LastKey=CurKey;
256: 80 91 75 00 lds r24, 0x0075
25a: 80 93 60 00 sts 0x0060, r24
keytimes=0x00;
}
else //无键按下或已释放
{
keytimes=0x00;
25e: 10 92 76 00 sts 0x0076, r1
}
}
262: 9f 91 pop r25
264: 8f 91 pop r24
266: 7f 91 pop r23
268: 6f 91 pop r22
26a: 0f 90 pop r0
26c: 0f be out 0x3f, r0 ; 63
26e: 0f 90 pop r0
270: 1f 90 pop r1
272: 18 95 reti
00000274 <Timer0_init>:
void Timer0_init()
{
TCCR0=0x00;
274: 13 be out 0x33, r1 ; 51
TCNT0=0x64; //10mS
276: 84 e6 ldi r24, 0x64 ; 100
278: 82 bf out 0x32, r24 ; 50
TCCR0=(1<<CS02|1<<CS00); //1024预分频
27a: 85 e0 ldi r24, 0x05 ; 5
27c: 83 bf out 0x33, r24 ; 51
TIMSK|=1<<TOIE0;
27e: 89 b7 in r24, 0x39 ; 57
280: 81 60 ori r24, 0x01 ; 1
282: 89 bf out 0x39, r24 ; 57
}
284: 08 95 ret
00000286 <Timer1_init>:
void Timer1_init()
{
TCCR1B=0x00;//停止定时器
286: 1e bc out 0x2e, r1 ; 46
TCNT1H=0xF1;
288: 81 ef ldi r24, 0xF1 ; 241
28a: 8d bd out 0x2d, r24 ; 45
TCNT1L=0x5B;//初始值
28c: 8b e5 ldi r24, 0x5B ; 91
28e: 8c bd out 0x2c, r24 ; 44
TCCR1A=0x00;
290: 1f bc out 0x2f, r1 ; 47
//TCCR1B=(1<<CS11|1<<CS10);//启动定时器
TIMSK|=1<<TOIE1;
292: 89 b7 in r24, 0x39 ; 57
294: 84 60 ori r24, 0x04 ; 4
296: 89 bf out 0x39, r24 ; 57
}
298: 08 95 ret
0000029a <__vector_8>:
#define StepperStop() { TCCR1B=0x00; PORTD&=~(1<<PD3); PORTC&=~(1<<PC2|1<<PC3); }//Disable driver
#define StepperStart() { PORTD|=(1<<PD3); TCCR1B=(1<<CS02|1<<CS00); TIMSK|=1<<TOIE1;}//Enable driver
ISR(SIG_OVERFLOW1)
{
29a: 1f 92 push r1
29c: 0f 92 push r0
29e: 0f b6 in r0, 0x3f ; 63
2a0: 0f 92 push r0
2a2: 11 24 eor r1, r1
2a4: 2f 93 push r18
2a6: 3f 93 push r19
2a8: 4f 93 push r20
2aa: 5f 93 push r21
2ac: 6f 93 push r22
2ae: 7f 93 push r23
2b0: 8f 93 push r24
2b2: 9f 93 push r25
2b4: af 93 push r26
2b6: bf 93 push r27
2b8: ef 93 push r30
2ba: ff 93 push r31
TCCR1B=0x00;//停止定时器
2bc: 1e bc out 0x2e, r1 ; 46
if(SlowSpeed==1) //60ms
2be: 80 91 6e 00 lds r24, 0x006E
2c2: 90 91 6f 00 lds r25, 0x006F
2c6: 01 97 sbiw r24, 0x01 ; 1
2c8: 21 f4 brne .+8 ; 0x2d2 <__vector_8+0x38>
{
TCNT1H=0xC5;
2ca: 85 ec ldi r24, 0xC5 ; 197
2cc: 8d bd out 0x2d, r24 ; 45
TCNT1L=0x69;
2ce: 89 e6 ldi r24, 0x69 ; 105
2d0: 09 c0 rjmp .+18 ; 0x2e4 <__vector_8+0x4a>
}
else if(SlowSpeed==0) //15ms
2d2: 80 91 6e 00 lds r24, 0x006E
2d6: 90 91 6f 00 lds r25, 0x006F
2da: 89 2b or r24, r25
2dc: 21 f4 brne .+8 ; 0x2e6 <__vector_8+0x4c>
{
TCNT1H=0xF1;
2de: 81 ef ldi r24, 0xF1 ; 241
2e0: 8d bd out 0x2d, r24 ; 45
TCNT1L=0x5B;
2e2: 8b e5 ldi r24, 0x5B ; 91
2e4: 8c bd out 0x2c, r24 ; 44
}
if(Direction==0)
2e6: 80 91 6a 00 lds r24, 0x006A
2ea: 88 23 and r24, r24
2ec: c1 f4 brne .+48 ; 0x31e <__vector_8+0x84>
{
PORTC&=~(1<<PC2|1<<PC3);
2ee: 85 b3 in r24, 0x15 ; 21
2f0: 83 7f andi r24, 0xF3 ; 243
2f2: 85 bb out 0x15, r24 ; 21
PORTD=((1<<PD3)|stepper[stepcnt]);
2f4: e0 91 78 00 lds r30, 0x0078
2f8: f0 e0 ldi r31, 0x00 ; 0
2fa: ef 59 subi r30, 0x9F ; 159
2fc: ff 4f sbci r31, 0xFF ; 255
2fe: 80 81 ld r24, Z
300: 88 60 ori r24, 0x08 ; 8
302: 82 bb out 0x12, r24 ; 18
stepcnt++;
304: 80 91 78 00 lds r24, 0x0078
308: 8f 5f subi r24, 0xFF ; 255
30a: 80 93 78 00 sts 0x0078, r24
if(stepcnt>7) stepcnt=0;
30e: 80 91 78 00 lds r24, 0x0078
312: 88 30 cpi r24, 0x08 ; 8
314: 10 f0 brcs .+4 ; 0x31a <__vector_8+0x80>
316: 10 92 78 00 sts 0x0078, r1
PORTC|=1<<PC2;
31a: aa 9a sbi 0x15, 2 ; 21
31c: 1c c0 rjmp .+56 ; 0x356 <__vector_8+0xbc>
}
else if(Direction==1)
31e: 80 91 6a 00 lds r24, 0x006A
322: 81 30 cpi r24, 0x01 ; 1
324: c1 f4 brne .+48 ; 0x356 <__vector_8+0xbc>
{
PORTC&=~(1<<PC3|1<<PC2);
326: 85 b3 in r24, 0x15 ; 21
328: 83 7f andi r24, 0xF3 ; 243
32a: 85 bb out 0x15, r24 ; 21
PORTD=((1<<PD3)|stepper[stepcnt]);
32c: e0 91 78 00 lds r30, 0x0078
330: f0 e0 ldi r31, 0x00 ; 0
332: ef 59 subi r30, 0x9F ; 159
334: ff 4f sbci r31, 0xFF ; 255
336: 80 81 ld r24, Z
338: 88 60 ori r24, 0x08 ; 8
33a: 82 bb out 0x12, r24 ; 18
stepcnt--;
33c: 80 91 78 00 lds r24, 0x0078
340: 81 50 subi r24, 0x01 ; 1
342: 80 93 78 00 sts 0x0078, r24
if(stepcnt==0xFF) stepcnt=7;
346: 80 91 78 00 lds r24, 0x0078
34a: 8f 3f cpi r24, 0xFF ; 255
34c: 19 f4 brne .+6 ; 0x354 <__vector_8+0xba>
34e: 87 e0 ldi r24, 0x07 ; 7
350: 80 93 78 00 sts 0x0078, r24
PORTC|=1<<PC3;
354: ab 9a sbi 0x15, 3 ; 21
}
if(TuneFlag!=0)
356: 80 91 6d 00 lds r24, 0x006D
35a: 88 23 and r24, r24
35c: 09 f4 brne .+2 ; 0x360 <__vector_8+0xc6>
35e: 64 c0 rjmp .+200 ; 0x428 <__vector_8+0x18e>
{
switch(TuneFlag)
360: 80 91 6d 00 lds r24, 0x006D
364: 82 30 cpi r24, 0x02 ; 2
366: a9 f0 breq .+42 ; 0x392 <__vector_8+0xf8>
368: 83 30 cpi r24, 0x03 ; 3
36a: 18 f4 brcc .+6 ; 0x372 <__vector_8+0xd8>
36c: 81 30 cpi r24, 0x01 ; 1
36e: 51 f5 brne .+84 ; 0x3c4 <__vector_8+0x12a>
370: 05 c0 rjmp .+10 ; 0x37c <__vector_8+0xe2>
372: 83 30 cpi r24, 0x03 ; 3
374: 19 f0 breq .+6 ; 0x37c <__vector_8+0xe2>
376: 84 30 cpi r24, 0x04 ; 4
378: 29 f5 brne .+74 ; 0x3c4 <__vector_8+0x12a>
37a: 0b c0 rjmp .+22 ; 0x392 <__vector_8+0xf8>
{
case 0x01:
case 0x03:
if(Limit==0x00)
37c: 80 91 6b 00 lds r24, 0x006B
380: 88 23 and r24, r24
382: 01 f5 brne .+64 ; 0x3c4 <__vector_8+0x12a>
if(Pcnt>0) Pcnt--;
384: 80 91 79 00 lds r24, 0x0079
388: 90 91 7a 00 lds r25, 0x007A
38c: 89 2b or r24, r25
38e: 29 f0 breq .+10 ; 0x39a <__vector_8+0x100>
390: 10 c0 rjmp .+32 ; 0x3b2 <__vector_8+0x118>
else
Pcnt++;
break;
case 0x02:
case 0x04:
if(Limit==0x00)
392: 80 91 6b 00 lds r24, 0x006B
396: 88 23 and r24, r24
398: 31 f4 brne .+12 ; 0x3a6 <__vector_8+0x10c>
Pcnt++;
39a: 80 91 79 00 lds r24, 0x0079
39e: 90 91 7a 00 lds r25, 0x007A
3a2: 01 96 adiw r24, 0x01 ; 1
3a4: 0b c0 rjmp .+22 ; 0x3bc <__vector_8+0x122>
else
{
if(Pcnt>0) Pcnt--;
3a6: 80 91 79 00 lds r24, 0x0079
3aa: 90 91 7a 00 lds r25, 0x007A
3ae: 89 2b or r24, r25
3b0: 49 f0 breq .+18 ; 0x3c4 <__vector_8+0x12a>
3b2: 80 91 79 00 lds r24, 0x0079
3b6: 90 91 7a 00 lds r25, 0x007A
3ba: 01 97 sbiw r24, 0x01 ; 1
3bc: 90 93 7a 00 sts 0x007A, r25
3c0: 80 93 79 00 sts 0x0079, r24
}
break;
default:
break;
}
Position[Limit]=Pcnt;
3c4: e0 91 6b 00 lds r30, 0x006B
3c8: f0 e0 ldi r31, 0x00 ; 0
3ca: 80 91 79 00 lds r24, 0x0079
3ce: 90 91 7a 00 lds r25, 0x007A
3d2: ee 0f add r30, r30
3d4: ff 1f adc r31, r31
3d6: e0 59 subi r30, 0x90 ; 144
3d8: ff 4f sbci r31, 0xFF ; 255
3da: 91 83 std Z+1, r25 ; 0x01
3dc: 80 83 st Z, r24
eeprom_is_ready();
3de: 8c b3 in r24, 0x1c ; 28
eeprom_write_word((Limit==0x00 ? 0x01 : 0x03),Position[Limit]);
3e0: e0 91 6b 00 lds r30, 0x006B
3e4: f0 e0 ldi r31, 0x00 ; 0
3e6: ee 0f add r30, r30
3e8: ff 1f adc r31, r31
3ea: e0 59 subi r30, 0x90 ; 144
3ec: ff 4f sbci r31, 0xFF ; 255
3ee: 60 81 ld r22, Z
3f0: 71 81 ldd r23, Z+1 ; 0x01
3f2: 80 91 6b 00 lds r24, 0x006B
3f6: 88 23 and r24, r24
3f8: 19 f0 breq .+6 ; 0x400 <__vector_8+0x166>
3fa: 83 e0 ldi r24, 0x03 ; 3
3fc: 90 e0 ldi r25, 0x00 ; 0
3fe: 02 c0 rjmp .+4 ; 0x404 <__vector_8+0x16a>
400: 81 e0 ldi r24, 0x01 ; 1
402: 90 e0 ldi r25, 0x00 ; 0
/** \ingroup avr_eeprom
Write a word \a __value to EEPROM address \a __p.
*/
static __inline__ void eeprom_write_word (uint16_t *__p, uint16_t __value)
{
__eewr_word (__p, __value, eeprom_write_byte);
404: 41 eb ldi r20, 0xB1 ; 177
406: 50 e0 ldi r21, 0x00 ; 0
408: 05 d1 rcall .+522 ; 0x614 <__eewr_word>
if(TuneFlag==1 || TuneFlag==2)
40a: 80 91 6d 00 lds r24, 0x006D
40e: 81 30 cpi r24, 0x01 ; 1
410: 41 f1 breq .+80 ; 0x462 <__stack+0x3>
412: 80 91 6d 00 lds r24, 0x006D
416: 82 30 cpi r24, 0x02 ; 2
418: 21 f1 breq .+72 ; 0x462 <__stack+0x3>
{
StepperStop();
goto T0End;
}
else
StepperStart();
41a: 93 9a sbi 0x12, 3 ; 18
41c: 85 e0 ldi r24, 0x05 ; 5
41e: 8e bd out 0x2e, r24 ; 46
420: 89 b7 in r24, 0x39 ; 57
422: 84 60 ori r24, 0x04 ; 4
424: 89 bf out 0x39, r24 ; 57
426: 25 c0 rjmp .+74 ; 0x472 <__stack+0x13>
goto T0End;
}
if(Pflag==1)
428: 80 91 6c 00 lds r24, 0x006C
42c: 81 30 cpi r24, 0x01 ; 1
42e: f9 f4 brne .+62 ; 0x46e <__stack+0xf>
{
Pcnt++;
430: 80 91 79 00 lds r24, 0x0079
434: 90 91 7a 00 lds r25, 0x007A
438: 01 96 adiw r24, 0x01 ; 1
43a: 90 93 7a 00 sts 0x007A, r25
43e: 80 93 79 00 sts 0x0079, r24
if(Pcnt>=Position[Limit])
442: 20 91 79 00 lds r18, 0x0079
446: 30 91 7a 00 lds r19, 0x007A
44a: e0 91 6b 00 lds r30, 0x006B
44e: f0 e0 ldi r31, 0x00 ; 0
450: ee 0f add r30, r30
452: ff 1f adc r31, r31
454: e0 59 subi r30, 0x90 ; 144
456: ff 4f sbci r31, 0xFF ; 255
458: 80 81 ld r24, Z
45a: 91 81 ldd r25, Z+1 ; 0x01
45c: 28 17 cp r18, r24
45e: 39 07 cpc r19, r25
460: 30 f0 brcs .+12 ; 0x46e <__stack+0xf>
{
StepperStop();
462: 1e bc out 0x2e, r1 ; 46
464: 93 98 cbi 0x12, 3 ; 18
466: 85 b3 in r24, 0x15 ; 21
468: 83 7f andi r24, 0xF3 ; 243
46a: 85 bb out 0x15, r24 ; 21
46c: 02 c0 rjmp .+4 ; 0x472 <__stack+0x13>
}
else
TCCR1B=(1<<CS11|1<<CS10);//启动定时器
}
else
TCCR1B=(1<<CS11|1<<CS10);//启动定时器
46e: 83 e0 ldi r24, 0x03 ; 3
470: 8e bd out 0x2e, r24 ; 46
T0End:
;
}
472: ff 91 pop r31
474: ef 91 pop r30
476: bf 91 pop r27
478: af 91 pop r26
47a: 9f 91 pop r25
47c: 8f 91 pop r24
47e: 7f 91 pop r23
480: 6f 91 pop r22
482: 5f 91 pop r21
484: 4f 91 pop r20
486: 3f 91 pop r19
488: 2f 91 pop r18
48a: 0f 90 pop r0
48c: 0f be out 0x3f, r0 ; 63
48e: 0f 90 pop r0
490: 1f 90 pop r1
492: 18 95 reti
00000494 <avr_init>:
TIMSK|=1<<TOIE1;
}
void avr_init()
{
//初始化端口
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -