📄 steper.lss
字号:
DDRB=0X00; //配置为输入,内部上拉
494: 17 ba out 0x17, r1 ; 23
PORTB=0XFF;
496: 8f ef ldi r24, 0xFF ; 255
498: 88 bb out 0x18, r24 ; 24
DDRC=(1<<PC2|1<<PC3); //PC2,PC3 LED Out
49a: 8c e0 ldi r24, 0x0C ; 12
49c: 84 bb out 0x14, r24 ; 20
PORTC=0x00;
49e: 15 ba out 0x15, r1 ; 21
DDRD=(1<<PD3|1<<PD4|1<<PD5|1<<PD6|1<<PD7);
4a0: 88 ef ldi r24, 0xF8 ; 248
4a2: 81 bb out 0x11, r24 ; 17
PORTD=0X00;
4a4: 12 ba out 0x12, r1 ; 18
MCUCR=(1<<ISC01);
4a6: 82 e0 ldi r24, 0x02 ; 2
4a8: 85 bf out 0x35, r24 ; 53
GICR=1<<INT0;
4aa: 80 e4 ldi r24, 0x40 ; 64
4ac: 8b bf out 0x3b, r24 ; 59
//初始化变量
Direction=0;
4ae: 10 92 6a 00 sts 0x006A, r1
eeprom_is_ready();
4b2: 8c b3 in r24, 0x1c ; 28
/** \ingroup avr_eeprom
Read one byte from EEPROM address \a __p.
*/
__ATTR_PURE__ static __inline__ uint8_t eeprom_read_byte (const uint8_t *__p)
{
do {} while (!eeprom_is_ready ());
4b4: e1 99 sbic 0x1c, 1 ; 28
4b6: fe cf rjmp .-4 ; 0x4b4 <avr_init+0x20>
#if E2END <= 0xFF
EEARL = (unsigned)__p;
#else
EEAR = (unsigned)__p;
4b8: 1f ba out 0x1f, r1 ; 31
4ba: 1e ba out 0x1e, r1 ; 30
#endif
EECR |= (1 << EERE);
4bc: e0 9a sbi 0x1c, 0 ; 28
return EEDR;
4be: 8d b3 in r24, 0x1d ; 29
if(eeprom_read_byte(0x00)==0xFF)
4c0: 8f 3f cpi r24, 0xFF ; 255
4c2: 21 f5 brne .+72 ; 0x50c <avr_init+0x78>
{
eeprom_is_ready();
4c4: 8c b3 in r24, 0x1c ; 28
/** \ingroup avr_eeprom
Write a byte \a __value to EEPROM address \a __p.
*/
static __inline__ void eeprom_write_byte (uint8_t *__p, uint8_t __value)
{
do {} while (!eeprom_is_ready ());
4c6: e1 99 sbic 0x1c, 1 ; 28
4c8: fe cf rjmp .-4 ; 0x4c6 <avr_init+0x32>
#endif
#if E2END <= 0xFF
EEARL = (unsigned)__p;
#else
EEAR = (unsigned)__p;
4ca: 1f ba out 0x1f, r1 ; 31
4cc: 1e ba out 0x1e, r1 ; 30
#endif
EEDR = __value;
4ce: 1d ba out 0x1d, r1 ; 29
__asm__ __volatile__ (
4d0: 0f b6 in r0, 0x3f ; 63
4d2: f8 94 cli
4d4: e2 9a sbi 0x1c, 2 ; 28
4d6: e1 9a sbi 0x1c, 1 ; 28
4d8: 0f be out 0x3f, r0 ; 63
eeprom_write_byte(0x00,0x00);
eeprom_is_ready();
4da: 8c b3 in r24, 0x1c ; 28
/** \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);
4dc: 41 eb ldi r20, 0xB1 ; 177
4de: 50 e0 ldi r21, 0x00 ; 0
4e0: 60 e0 ldi r22, 0x00 ; 0
4e2: 70 e0 ldi r23, 0x00 ; 0
4e4: 81 e0 ldi r24, 0x01 ; 1
4e6: 90 e0 ldi r25, 0x00 ; 0
4e8: 95 d0 rcall .+298 ; 0x614 <__eewr_word>
eeprom_write_word(0x01,0x0000);
eeprom_is_ready();
4ea: 8c b3 in r24, 0x1c ; 28
4ec: 41 eb ldi r20, 0xB1 ; 177
4ee: 50 e0 ldi r21, 0x00 ; 0
4f0: 60 e0 ldi r22, 0x00 ; 0
4f2: 70 e0 ldi r23, 0x00 ; 0
4f4: 83 e0 ldi r24, 0x03 ; 3
4f6: 90 e0 ldi r25, 0x00 ; 0
4f8: 8d d0 rcall .+282 ; 0x614 <__eewr_word>
eeprom_write_word(0x03,0x0000);
Position[0]=0;
4fa: 10 92 71 00 sts 0x0071, r1
4fe: 10 92 70 00 sts 0x0070, r1
Position[1]=0;
502: 10 92 73 00 sts 0x0073, r1
506: 10 92 72 00 sts 0x0072, r1
50a: 12 c0 rjmp .+36 ; 0x530 <avr_init+0x9c>
/** \ingroup avr_eeprom
Read one 16-bit word (little endian) from EEPROM address \a __p.
*/
__ATTR_PURE__ static __inline__ uint16_t eeprom_read_word (const uint16_t *__p)
{
return __eerd_word (__p, eeprom_read_byte);
50c: 69 ea ldi r22, 0xA9 ; 169
50e: 70 e0 ldi r23, 0x00 ; 0
510: 81 e0 ldi r24, 0x01 ; 1
512: 90 e0 ldi r25, 0x00 ; 0
514: 69 d0 rcall .+210 ; 0x5e8 <__eerd_word>
}
else
{
Position[0]=eeprom_read_word(0x01);
516: 90 93 71 00 sts 0x0071, r25
51a: 80 93 70 00 sts 0x0070, r24
51e: 69 ea ldi r22, 0xA9 ; 169
520: 70 e0 ldi r23, 0x00 ; 0
522: 83 e0 ldi r24, 0x03 ; 3
524: 90 e0 ldi r25, 0x00 ; 0
526: 60 d0 rcall .+192 ; 0x5e8 <__eerd_word>
Position[1]=eeprom_read_word(0x03);
528: 90 93 73 00 sts 0x0073, r25
52c: 80 93 72 00 sts 0x0072, r24
}
void Timer0_init()
{
TCCR0=0x00;
530: 13 be out 0x33, r1 ; 51
TCNT0=0x64; //10mS
532: 84 e6 ldi r24, 0x64 ; 100
534: 82 bf out 0x32, r24 ; 50
TCCR0=(1<<CS02|1<<CS00); //1024预分频
536: 85 e0 ldi r24, 0x05 ; 5
538: 83 bf out 0x33, r24 ; 51
TIMSK|=1<<TOIE0;
53a: 89 b7 in r24, 0x39 ; 57
53c: 81 60 ori r24, 0x01 ; 1
53e: 89 bf out 0x39, r24 ; 57
}
void Timer1_init()
{
TCCR1B=0x00;//停止定时器
540: 1e bc out 0x2e, r1 ; 46
TCNT1H=0xF1;
542: 81 ef ldi r24, 0xF1 ; 241
544: 8d bd out 0x2d, r24 ; 45
TCNT1L=0x5B;//初始值
546: 8b e5 ldi r24, 0x5B ; 91
548: 8c bd out 0x2c, r24 ; 44
TCCR1A=0x00;
54a: 1f bc out 0x2f, r1 ; 47
//TCCR1B=(1<<CS11|1<<CS10);//启动定时器
TIMSK|=1<<TOIE1;
54c: 89 b7 in r24, 0x39 ; 57
54e: 84 60 ori r24, 0x04 ; 4
550: 89 bf out 0x39, r24 ; 57
}
Timer0_init();
Timer1_init();
}
552: 08 95 ret
00000554 <main>:
int main()
{
cli();
554: f8 94 cli
avr_init();
556: 9e df rcall .-196 ; 0x494 <avr_init>
sei();
558: 78 94 sei
case 0x8B: //连续微调+
TuneFlag=3;
Pflag=0;
break;
case 0x87: //连续微调-
TuneFlag=4;
55a: 74 e0 ldi r23, 0x04 ; 4
break;
case 0x8D:
break;
case 0x8B: //连续微调+
TuneFlag=3;
55c: 63 e0 ldi r22, 0x03 ; 3
case 0x4E: //正转
Direction=0; //旋转方向,0为顺时针,1为逆时针
SlowSpeed=0; //速度标志,为1时慢速
Pflag=0; //限位标志,为1时限位开关作用
TuneFlag=0; //微调标志,0为正常运转,1为位置微调
StepperStart();
55e: 95 e0 ldi r25, 0x05 ; 5
TuneFlag=1;
Pflag=0;
StepperStart();
break;
case 0x47: //微调-
Direction=1;
560: 21 e0 ldi r18, 0x01 ; 1
SlowSpeed=1;
562: 41 e0 ldi r20, 0x01 ; 1
564: 50 e0 ldi r21, 0x00 ; 0
TuneFlag=2;
566: 32 e0 ldi r19, 0x02 ; 2
cli();
avr_init();
sei();
while(1)
{
switch(keycode)
568: 80 91 74 00 lds r24, 0x0074
56c: 8d 34 cpi r24, 0x4D ; 77
56e: 81 f0 breq .+32 ; 0x590 <main+0x3c>
570: 8e 34 cpi r24, 0x4E ; 78
572: 28 f4 brcc .+10 ; 0x57e <main+0x2a>
574: 87 34 cpi r24, 0x47 ; 71
576: 01 f1 breq .+64 ; 0x5b8 <main+0x64>
578: 8b 34 cpi r24, 0x4B ; 75
57a: b1 f7 brne .-20 ; 0x568 <main+0x14>
57c: 14 c0 rjmp .+40 ; 0x5a6 <main+0x52>
57e: 87 38 cpi r24, 0x87 ; 135
580: 71 f1 breq .+92 ; 0x5de <main+0x8a>
582: 8b 38 cpi r24, 0x8B ; 139
584: 49 f1 breq .+82 ; 0x5d8 <main+0x84>
586: 8e 34 cpi r24, 0x4E ; 78
588: 79 f7 brne .-34 ; 0x568 <main+0x14>
{
case 0x4E: //正转
Direction=0; //旋转方向,0为顺时针,1为逆时针
58a: 10 92 6a 00 sts 0x006A, r1
58e: 02 c0 rjmp .+4 ; 0x594 <main+0x40>
Pflag=0; //限位标志,为1时限位开关作用
TuneFlag=0; //微调标志,0为正常运转,1为位置微调
StepperStart();
break;
case 0x4D: //反转
Direction=1;
590: 20 93 6a 00 sts 0x006A, r18
SlowSpeed=0;
594: 10 92 6f 00 sts 0x006F, r1
598: 10 92 6e 00 sts 0x006E, r1
Pflag=0;
59c: 10 92 6c 00 sts 0x006C, r1
TuneFlag=0;
5a0: 10 92 6d 00 sts 0x006D, r1
5a4: 13 c0 rjmp .+38 ; 0x5cc <main+0x78>
StepperStart();
break;
case 0x4B: //微调+
Direction=0;
5a6: 10 92 6a 00 sts 0x006A, r1
SlowSpeed=1;
5aa: 50 93 6f 00 sts 0x006F, r21
5ae: 40 93 6e 00 sts 0x006E, r20
TuneFlag=1;
5b2: 20 93 6d 00 sts 0x006D, r18
5b6: 08 c0 rjmp .+16 ; 0x5c8 <main+0x74>
Pflag=0;
StepperStart();
break;
case 0x47: //微调-
Direction=1;
5b8: 20 93 6a 00 sts 0x006A, r18
SlowSpeed=1;
5bc: 50 93 6f 00 sts 0x006F, r21
5c0: 40 93 6e 00 sts 0x006E, r20
TuneFlag=2;
5c4: 30 93 6d 00 sts 0x006D, r19
Pflag=0;
5c8: 10 92 6c 00 sts 0x006C, r1
StepperStart();
5cc: 93 9a sbi 0x12, 3 ; 18
5ce: 9e bd out 0x2e, r25 ; 46
5d0: 89 b7 in r24, 0x39 ; 57
5d2: 84 60 ori r24, 0x04 ; 4
5d4: 89 bf out 0x39, r24 ; 57
5d6: c8 cf rjmp .-112 ; 0x568 <main+0x14>
break;
case 0x8D:
break;
case 0x8B: //连续微调+
TuneFlag=3;
5d8: 60 93 6d 00 sts 0x006D, r22
5dc: 02 c0 rjmp .+4 ; 0x5e2 <main+0x8e>
Pflag=0;
break;
case 0x87: //连续微调-
TuneFlag=4;
5de: 70 93 6d 00 sts 0x006D, r23
Pflag=0;
5e2: 10 92 6c 00 sts 0x006C, r1
5e6: c0 cf rjmp .-128 ; 0x568 <main+0x14>
000005e8 <__eerd_word>:
5e8: df 92 push r13
5ea: ef 92 push r14
5ec: ff 92 push r15
5ee: 0f 93 push r16
5f0: 1f 93 push r17
5f2: 7b 01 movw r14, r22
5f4: 8c 01 movw r16, r24
5f6: fb 01 movw r30, r22
5f8: 09 95 icall
5fa: d8 2e mov r13, r24
5fc: c8 01 movw r24, r16
5fe: 01 96 adiw r24, 0x01 ; 1
600: f7 01 movw r30, r14
602: 09 95 icall
604: 98 2f mov r25, r24
606: 8d 2d mov r24, r13
608: 1f 91 pop r17
60a: 0f 91 pop r16
60c: ff 90 pop r15
60e: ef 90 pop r14
610: df 90 pop r13
612: 08 95 ret
00000614 <__eewr_word>:
614: df 92 push r13
616: ef 92 push r14
618: ff 92 push r15
61a: 0f 93 push r16
61c: 1f 93 push r17
61e: d7 2e mov r13, r23
620: 7a 01 movw r14, r20
622: 8c 01 movw r16, r24
624: fa 01 movw r30, r20
626: 09 95 icall
628: 6d 2d mov r22, r13
62a: c8 01 movw r24, r16
62c: 01 96 adiw r24, 0x01 ; 1
62e: f7 01 movw r30, r14
630: 09 95 icall
632: 1f 91 pop r17
634: 0f 91 pop r16
636: ff 90 pop r15
638: ef 90 pop r14
63a: df 90 pop r13
63c: 08 95 ret
0000063e <__udivmodqi4>:
63e: 99 1b sub r25, r25
640: 79 e0 ldi r23, 0x09 ; 9
642: 04 c0 rjmp .+8 ; 0x64c <__udivmodqi4_ep>
00000644 <__udivmodqi4_loop>:
644: 99 1f adc r25, r25
646: 96 17 cp r25, r22
648: 08 f0 brcs .+2 ; 0x64c <__udivmodqi4_ep>
64a: 96 1b sub r25, r22
0000064c <__udivmodqi4_ep>:
64c: 88 1f adc r24, r24
64e: 7a 95 dec r23
650: c9 f7 brne .-14 ; 0x644 <__udivmodqi4_loop>
652: 80 95 com r24
654: 08 95 ret
00000656 <_exit>:
656: f8 94 cli
00000658 <__stop_program>:
658: ff cf rjmp .-2 ; 0x658 <__stop_program>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -