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

📄 bldcmmain.lis

📁 三相无刷电机的PWM控制
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 0144                   .dbline 0 ; func end
 0144 0895              ret
 0146                   .dbend
 0146                   .dbfunc e USART_Transmit _USART_Transmit fV
 0146           ;           data -> R16
                        .even
 0146           _USART_Transmit::
 0146                   .dbline -1
 0146                   .dbline 177
 0146           ;        //all peripherals are now initialized
 0146           ; }
 0146           ; 
 0146           ; 
 0146           ; void USART_Transmit(unsigned char data)
 0146           ; {
 0146           L19:
 0146                   .dbline 180
 0146           L20:
 0146                   .dbline 179
 0146           ;      //等待发送器缓冲为空
 0146           ;        while(!(UCSR0A&(1<<UDRE0)))
 0146 2090C000          lds R2,192
 014A 25FE              sbrs R2,5
 014C FCCF              rjmp L19
 014E                   .dbline 183
 014E           ;        ;
 014E           ;        
 014E           ;        //发送数据
 014E           ;        UDR0 = data;
 014E 0093C600          sts 198,R16
 0152                   .dbline -2
 0152           L18:
 0152                   .dbline 0 ; func end
 0152 0895              ret
 0154                   .dbsym r data 16 c
 0154                   .dbend
 0154                   .dbfunc e USART_Receive _USART_Receive fc
                        .even
 0154           _USART_Receive::
 0154                   .dbline -1
 0154                   .dbline 188
 0154           ; }
 0154           ; 
 0154           ; 
 0154           ; unsigned char USART_Receive(void)
 0154           ; {
 0154           L23:
 0154                   .dbline 191
 0154           L24:
 0154                   .dbline 190
 0154           ;     //等待接收数据
 0154           ;       while(!(UCSR0A&(1<<RXC0)))
 0154 2090C000          lds R2,192
 0158 27FE              sbrs R2,7
 015A FCCF              rjmp L23
 015C                   .dbline 192
 015C           ;       ;
 015C           ;       return UDR0;
 015C 0091C600          lds R16,198
 0160                   .dbline -2
 0160           L22:
 0160                   .dbline 0 ; func end
 0160 0895              ret
 0162                   .dbend
 0162                   .dbfunc e set_speed _set_speed fV
 0162           ;          speed -> R16
                        .even
 0162           _set_speed::
 0162                   .dbline -1
 0162                   .dbline 196
 0162           ; }
 0162           ; 
 0162           ; void set_speed(unsigned char speed)
 0162           ; {
 0162                   .dbline 197
 0162           ;        OCR0A = speed;
 0162 07BD              out 0x27,R16
 0164                   .dbline 198
 0164           ;        OCR0B = speed;
 0164 08BD              out 0x28,R16
 0166                   .dbline 199
 0166           ;        OCR2B = speed;
 0166 0093B400          sts 180,R16
 016A                   .dbline -2
 016A           L26:
 016A                   .dbline 0 ; func end
 016A 0895              ret
 016C                   .dbsym r speed 16 c
 016C                   .dbend
 016C                   .dbfunc e main _main fV
 016C           ;      Speed_Val -> R20,R21
 016C           ;        Pos_Val -> R22,R23
                        .even
 016C           _main::
 016C                   .dbline -1
 016C                   .dbline 203
 016C           ; }
 016C           ; 
 016C           ; void main(void)
 016C           ; {
 016C                   .dbline 205
 016C           ;      unsigned int Pos_Val,Speed_Val;
 016C           ;         init_devices();
 016C D0DF              rcall _init_devices
 016E 33C0              rjmp L29
 0170           L28:
 0170                   .dbline 216
 0170           ;         //Start_PWMA_Close_PWMB();
 0170           ;       // Start_PWMC();
 0170           ;       // Start_PWMAB();
 0170           ;         
 0170           ;        /* while(1)
 0170           ;         {
 0170           ;                                       Speed_Val = USART_Receive();
 0170           ;                                                       set_speed(Speed_Val);
 0170           ;         }*/
 0170           ;         while(1)
 0170           ;         {
 0170                   .dbline 218
 0170           ; 
 0170           ;                       if((UCSR0A&0x80)!=0)
 0170 2090C000          lds R2,192
 0174 27FE              sbrs R2,7
 0176 07C0              rjmp L31
 0178                   .dbline 219
 0178           ;                       {
 0178                   .dbline 220
 0178           ;                                                       Speed_Val = UDR0;
 0178 4091C600          lds R20,198
 017C 5527              clr R21
 017E                   .dbline 221
 017E           ;                                                       OCR0A = Speed_Val;
 017E 47BD              out 0x27,R20
 0180                   .dbline 222
 0180           ;                                                       OCR0B = Speed_Val;
 0180 48BD              out 0x28,R20
 0182                   .dbline 223
 0182           ;                                                       OCR2B = Speed_Val;
 0182 4093B400          sts 180,R20
 0186                   .dbline 224
 0186           ;                       }
 0186           L31:
 0186                   .dbline 225
 0186           ;                       Pos_Val = PINC&0x07;
 0186 66B1              in R22,0x6
 0188 7727              clr R23
 018A 6770              andi R22,7
 018C 7070              andi R23,0
 018E                   .dbline 254
 018E           ; /* //   500w轮毂电机                  
 018E           ;                       switch(Pos_Val)
 018E           ;                       {
 018E           ;                           case 3:
 018E           ;                                        phase_three_five();
 018E           ;                               break;
 018E           ;                               case 2:
 018E           ;                                        phase_one_five();
 018E           ;                               break;
 018E           ;                               case 6:
 018E           ;                                        phase_one_six();
 018E           ;                               break;
 018E           ;                               case 4:
 018E           ;                                        phase_two_six();
 018E           ;                               break;
 018E           ;                               case 5:
 018E           ;                                        phase_two_four();
 018E           ;                               break;
 018E           ;                               case 1:
 018E           ;                                        phase_three_four();
 018E           ;                               break;          
 018E           ;                               default:
 018E           ;                               break;
 018E           ;                               
 018E           ;                       }
 018E           ; */                    
 018E           ; 
 018E           ; //   2.2kw电机                        
 018E           ;                       switch(Pos_Val)
 018E 6130              cpi R22,1
 0190 E0E0              ldi R30,0
 0192 7E07              cpc R23,R30
 0194 A9F0              breq L35
 0196 6230              cpi R22,2
 0198 E0E0              ldi R30,0
 019A 7E07              cpc R23,R30
 019C A9F0              breq L37
 019E 6330              cpi R22,3
 01A0 E0E0              ldi R30,0
 01A2 7E07              cpc R23,R30
 01A4 79F0              breq L36
 01A6 6430              cpi R22,4
 01A8 E0E0              ldi R30,0
 01AA 7E07              cpc R23,R30
 01AC 89F0              breq L39
 01AE 6530              cpi R22,5
 01B0 E0E0              ldi R30,0
 01B2 7E07              cpc R23,R30
 01B4 79F0              breq L40
 01B6 6630              cpi R22,6
 01B8 E0E0              ldi R30,0
 01BA 7E07              cpc R23,R30
 01BC 39F0              breq L38
 01BE 0BC0              rjmp L34
 01C0           X0:
 01C0                   .dbline 255
 01C0           ;                       {
 01C0           L35:
 01C0                   .dbline 257
 01C0           ;                           case 1:  
 01C0           ;                                        phase_three_five();   //C+   B-
 01C0 8EDF              rcall _phase_three_five
 01C2                   .dbline 258
 01C2           ;                               break;
 01C2 09C0              rjmp L34
 01C4           L36:
 01C4                   .dbline 260
 01C4           ;                               case 3:
 01C4           ;                                        phase_one_five();     //A+   B-
 01C4 69DF              rcall _phase_one_five
 01C6                   .dbline 261
 01C6           ;                               break;
 01C6 07C0              rjmp L34
 01C8           L37:
 01C8                   .dbline 263
 01C8           ;                               case 2:
 01C8           ;                                        phase_one_six();      //A+   C-
 01C8 6EDF              rcall _phase_one_six
 01CA                   .dbline 264
 01CA           ;                               break;
 01CA 05C0              rjmp L34
 01CC           L38:
 01CC                   .dbline 266
 01CC           ;                               case 6:
 01CC           ;                                        phase_two_six();      //B+   C-
 01CC 73DF              rcall _phase_two_six
 01CE                   .dbline 267
 01CE           ;                               break;
 01CE 03C0              rjmp L34
 01D0           L39:
 01D0                   .dbline 269
 01D0           ;                               case 4:
 01D0           ;                                        phase_two_four();      //B+   A-
 01D0 78DF              rcall _phase_two_four
 01D2                   .dbline 270
 01D2           ;                               break;
 01D2 01C0              rjmp L34
 01D4           L40:
 01D4                   .dbline 272
 01D4           ;                               case 5:
 01D4           ;                                        phase_three_four();    //C+   B-
 01D4 7DDF              rcall _phase_three_four
 01D6                   .dbline 273
 01D6           ;                               break;          
 01D6                   .dbline 275
 01D6           ;                               default:
 01D6           ;                               break;
 01D6           L34:
 01D6                   .dbline 280
 01D6           L29:
 01D6                   .dbline 215
 01D6 CCCF              rjmp L28
 01D8           X1:
 01D8                   .dbline -2
 01D8           L27:
 01D8                   .dbline 0 ; func end
 01D8 0895              ret
 01DA                   .dbsym r Speed_Val 20 i
 01DA                   .dbsym r Pos_Val 22 i
 01DA                   .dbend

⌨️ 快捷键说明

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