⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.lis

📁 一个正在应用的步进电机控制程序,包括电机的调速,正反,细分,通讯控制
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 028C                   .dbline 319
 028C           ; }
 028C           ; 
 028C           ; 
 028C           ; /****************************************************************
 028C           ; 端口初始化
 028C           ; ****************************************************************/
 028C           ; void port_init(void)
 028C           ; {
 028C                   .dbline 328
 028C           ;  //PORTA = 0xff;
 028C           ;  //DDRA  = 0xdf;
 028C           ;  //PORTB = 0x00;
 028C           ;  //DDRB  = 0x00;
 028C           ;  //PORTC = 0b01111110;             
 028C           ;  //DDRC  = 0b10000001;
 028C           ;  //PORTD = 0xff;
 028C           ;  //DDRD  = 0x00;
 028C           ; PORTC&=~(1<<INT);
 028C A998              cbi 0x15,1
 028E                   .dbline 329
 028E           ; DDRC |=(1<<INT);
 028E A19A              sbi 0x14,1
 0290                   .dbline -2
 0290           L53:
 0290                   .dbline 0 ; func end
 0290 0895              ret
 0292                   .dbend
 0292                   .dbfunc e pull_start _pull_start fV
                        .even
 0292           _pull_start::
 0292                   .dbline -1
 0292                   .dbline 336
 0292           ; }
 0292           ; 
 0292           ; /******************************************************
 0292           ; 脉冲输入开始函数
 0292           ; ******************************************************/
 0292           ; void pull_start(void)
 0292           ; {
 0292                   .dbline 337
 0292           ; GICR|=(1<<INT0);
 0292 8BB7              in R24,0x3b
 0294 8064              ori R24,64
 0296 8BBF              out 0x3b,R24
 0298                   .dbline 338
 0298           ; TIMSK|=(1<<OCIE2);
 0298 89B7              in R24,0x39
 029A 8068              ori R24,128
 029C 89BF              out 0x39,R24
 029E                   .dbline 339
 029E           ; pull_number=0;
 029E 2224              clr R2
 02A0 3324              clr R3
 02A2 30921E00          sts _pull_number+1,R3
 02A6 20921D00          sts _pull_number,R2
 02AA                   .dbline 340
 02AA           ; counter=0;
 02AA 20920200          sts _counter,R2
 02AE                   .dbline 341
 02AE           ; OCR2=0XFF;
 02AE 8FEF              ldi R24,255
 02B0 83BD              out 0x23,R24
 02B2                   .dbline -2
 02B2           L54:
 02B2                   .dbline 0 ; func end
 02B2 0895              ret
 02B4                   .dbend
 02B4                   .dbfunc e pull_stop _pull_stop fV
                        .even
 02B4           _pull_stop::
 02B4                   .dbline -1
 02B4                   .dbline 347
 02B4           ; }
 02B4           ; /******************************************************
 02B4           ; 脉冲输入开始函数
 02B4           ; ******************************************************/
 02B4           ; void pull_stop(void)
 02B4           ; {
 02B4                   .dbline 348
 02B4           ; GICR&=~(1<<INT0);
 02B4 8BB7              in R24,0x3b
 02B6 8F7B              andi R24,191
 02B8 8BBF              out 0x3b,R24
 02BA                   .dbline 349
 02BA           ; TIMSK&=~(1<<OCIE2);
 02BA 89B7              in R24,0x39
 02BC 8F77              andi R24,127
 02BE 89BF              out 0x39,R24
 02C0                   .dbline -2
 02C0           L55:
 02C0                   .dbline 0 ; func end
 02C0 0895              ret
 02C2                   .dbend
 02C2                   .dbfunc e da_init _da_init fV
                        .even
 02C2           _da_init::
 02C2                   .dbline -1
 02C2                   .dbline 355
 02C2           ; }
 02C2           ; /******************************************************
 02C2           ; D/A初始化函数
 02C2           ; ******************************************************/
 02C2           ; void da_init(void)
 02C2           ; {
 02C2                   .dbline 356
 02C2           ; cal_timer1(speed);
 02C2 00912100          lds R16,_speed
 02C6 10912200          lds R17,_speed+1
 02CA 02D1              xcall _cal_timer1
 02CC                   .dbline 357
 02CC           ; PORTA|=(1<<DA_WR);
 02CC D99A              sbi 0x1b,1
 02CE                   .dbline 358
 02CE           ; PORTD|=(1<<DA_CS);
 02CE 969A              sbi 0x12,6
 02D0                   .dbline 359
 02D0           ; DDRA|=(1<<DA_WR);
 02D0 D19A              sbi 0x1a,1
 02D2                   .dbline 360
 02D2           ; DDRD|=(1<<DA_CS)|(1<<DA_AB);
 02D2 81B3              in R24,0x11
 02D4 806C              ori R24,192
 02D6 81BB              out 0x11,R24
 02D8                   .dbline 361
 02D8           ; DDRC|=(1<<DA_SIN)|(1<<DA_COS);
 02D8 84B3              in R24,0x14
 02DA 806C              ori R24,192
 02DC 84BB              out 0x14,R24
 02DE                   .dbline 362
 02DE           ; DATA_OUT=0x00;
 02DE 2224              clr R2
 02E0 28BA              out 0x18,R2
 02E2                   .dbline 363
 02E2           ; DATA_IO=0xff;
 02E2 8FEF              ldi R24,255
 02E4 87BB              out 0x17,R24
 02E6                   .dbline 364
 02E6           ; timer1_init();
 02E6 C3DF              xcall _timer1_init
 02E8                   .dbline -2
 02E8           L56:
 02E8                   .dbline 0 ; func end
 02E8 0895              ret
 02EA                   .dbend
 02EA                   .dbfunc e adc_init _adc_init fV
                        .even
 02EA           _adc_init::
 02EA                   .dbline -1
 02EA                   .dbline 372
 02EA           ; }
 02EA           ; 
 02EA           ; 
 02EA           ; /****************************************************************
 02EA           ; A/D初始化
 02EA           ; ****************************************************************/
 02EA           ; void adc_init(void)
 02EA           ; {
 02EA                   .dbline 373
 02EA           ; ADMUX=0b00000000;       //选择ADC0做AD输入                                             
 02EA 2224              clr R2
 02EC 27B8              out 0x7,R2
 02EE                   .dbline 374
 02EE           ; ADCSRA=(1<<ADEN)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0)|(1<<ADATE);  //允许AD转换,128分频
 02EE 87EA              ldi R24,167
 02F0 86B9              out 0x6,R24
 02F2                   .dbline -2
 02F2           L57:
 02F2                   .dbline 0 ; func end
 02F2 0895              ret
 02F4                   .dbend
 02F4                   .dbfunc e adc_change _adc_change fV
 02F4           ;              l -> R22
 02F4           ;              g -> R20,R21
 02F4           ;              s -> y+0
 02F4           ;              j -> R12,R13
 02F4           ;              k -> R10
 02F4           ;              i -> R14
                        .even
 02F4           _adc_change::
 02F4 0E940000          xcall push_gset5
 02F8 6497              sbiw R28,20
 02FA                   .dbline -1
 02FA                   .dbline 380
 02FA           ; }
 02FA           ; 
 02FA           ; 
 02FA           ; 
 02FA           ; void adc_change(void)
 02FA           ; {
 02FA                   .dbline 387
 02FA           ; unsigned char i;
 02FA           ; unsigned char k;
 02FA           ; unsigned int j;
 02FA           ; unsigned int g;
 02FA           ; unsigned char l;
 02FA           ; unsigned int s[10];
 02FA           ; g=0;
 02FA 4427              clr R20
 02FC 5527              clr R21
 02FE                   .dbline 388
 02FE           ; for (l=0;l<10;l++)
 02FE 6627              clr R22
 0300 36C0              xjmp L62
 0302           L59:
 0302                   .dbline 389
 0302           ;       {
 0302                   .dbline 390
 0302           ;       for (k=0;k<10;k++)
 0302 AA24              clr R10
 0304 12C0              xjmp L66
 0306           L63:
 0306                   .dbline 391
 0306           ;               {
 0306                   .dbline 392
 0306           ;               ADCSRA|=(1<<ADSC);
 0306 369A              sbi 0x6,6
 0308                   .dbline 393
 0308           ;               i=ADCSRA;
 0308 E6B0              in R14,0x6
 030A 01C0              xjmp L68
 030C           L67:
 030C                   .dbline 395
 030C                   .dbline 395
 030C E6B0              in R14,0x6
 030E                   .dbline 395
 030E           L68:
 030E                   .dbline 394
 030E E4FE              sbrs R14,4
 0310 FDCF              rjmp L67
 0312                   .dbline 396
 0312 C4B0              in R12,0x4
 0314 D5B0              in R13,0x5
 0316                   .dbline 397
 0316 82E0              ldi R24,2
 0318 8A9D              mul R24,R10
 031A F001              movw R30,R0
 031C CE01              movw R24,R28
 031E E80F              add R30,R24
 0320 F91F              adc R31,R25
 0322 D182              std z+1,R13
 0324 C082              std z+0,R12
 0326                   .dbline 398
 0326 349A              sbi 0x6,4
 0328                   .dbline 399
 0328           L64:
 0328                   .dbline 390
 0328 A394              inc R10
 032A           L66:
 032A                   .dbline 390
 032A 8A2D              mov R24,R10
 032C 8A30              cpi R24,10
 032E 58F3              brlo L63
 0330                   .dbline 400
 0330           ;               while ((i&(1<<ADIF))==0)
 0330           ;                         {i=ADCSRA;}
 0330           ;               j=ADC;
 0330           ;               s[k]=j; 
 0330           ;               ADCSRA|=(1<<ADIF);
 0330           ;               }
 0330           ;       ins(s,10);
 0330 2AE0              ldi R18,10
 0332 8E01              movw R16,R28
 0334 4ED0              xcall _ins
 0336                   .dbline 401
 0336           ;       j=0;
 0336 CC24              clr R12
 0338 DD24              clr R13
 033A                   .dbline 402
 033A           ;       for (k=0;k<5;k++)
 033A AA24              clr R10
 033C 0CC0              xjmp L73
 033E           L70:
 033E                   .dbline 403
 033E                   .dbline 404
 033E 82E0              ldi R24,2
 0340 8A9D              mul R24,R10
 0342 F001              movw R30,R0
 0344 CE01              movw R24,R28
 0346 0496              adiw R24,4
 0348 E80F              add R30,R24
 034A F91F              adc R31,R25
 034C 2080              ldd R2,z+0
 034E 3180              ldd R3,z+1
 0350 C20C              add R12,R2
 0352 D31C              adc R13,R3
 0354                   .dbline 405
 0354           L71:
 0354                   .dbline 402
 0354 A394              inc R10
 0356           L73:
 0356                   .dbline 402
 0356 8A2D              mov R24,R10
 0358 8530              cpi R24,5
 035A 88F3              brlo L70
 035C                   .dbline 406
 035C 25E0              ldi R18,5
 035E 30E0              ldi R19,0
 0360 8601              movw R16,R12
 0362 0E940000          xcall div16u
 0366 6801              movw R12,R16
 0368                   .dbline 407
 0368 400F              add R20,R16
 036A 511F              adc R21,R17
 036C                   .dbline 408
 036C           L60:
 036C                   .dbline 388
 036C 6395              inc R22
 036E           L62:
 036E                   .dbline 388
 036E 6A30              cpi R22,10
 0370 08F4              brsh X0
 0372 C7CF              xjmp L59
 0374           X0:
 0374                   .dbline 409
 0374           ;                {
 0374           ;                j=j+s[k+2];
 0374           ;                }
 0374           ;       j=j/5;
 0374           ;       g=g+j;
 0374           ;       }
 0374           ; g=g/10; 
 0374 2AE0              ldi R18,10
 0376 30E0              ldi R19,0
 0378 8A01              movw R16,R20
 037A 0E940000          xcall div16u
 037E A801              movw R20,R16
 0380                   .dbline 410

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -