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

📄 bldcmmain.lis

📁 三相无刷电机的PWM控制
💻 LIS
📖 第 1 页 / 共 3 页
字号:
                        .module bldcmmain.c
                        .area text(rom, con, rel)
 0000                   .dbfile F:\avrprojs\bldcm\bldcmmain.c
 0000                   .dbfunc e port_init _port_init fV
                        .even
 0000           _port_init::
 0000                   .dbline -1
 0000                   .dbline 10
 0000           ;                                                                        //********************************************************///////////////
 0000           ; ///**purpose:  use PWM to control BLDCM**********/////
 0000           ; ///***data: 2008.8.20***********///
 0000           ; ///***author: XieZu Su********//////
 0000           ; #include <iom48v.h>
 0000           ; #include <macros.h>           
 0000           ; #define speed0 0x20
 0000           ; 
 0000           ; void port_init(void)
 0000           ; {
 0000                   .dbline 11
 0000           ;  PORTB = 0x00;         //PB1~PB3输出,对应3个下桥臂的通断
 0000 2224              clr R2
 0002 25B8              out 0x5,R2
 0004                   .dbline 12
 0004           ;  DDRB  = 0x0E;        
 0004 8EE0              ldi R24,14
 0006 84B9              out 0x4,R24
 0008                   .dbline 13
 0008           ;  PORTC = 0x07; //PC0,PC1,PC2霍尔位置传感器输入,上拉
 0008 87E0              ldi R24,7
 000A 88B9              out 0x8,R24
 000C                   .dbline 14
 000C           ;  DDRC  = 0x00;
 000C 27B8              out 0x7,R2
 000E                   .dbline 15
 000E           ;  PORTD = 0x00;
 000E 2BB8              out 0xb,R2
 0010                   .dbline 16
 0010           ;  DDRD  = 0x68;        //PD6 PD5 PD3分别对应上桥臂的通断信号PWM
 0010 88E6              ldi R24,104
 0012 8AB9              out 0xa,R24
 0014                   .dbline -2
 0014           L1:
 0014                   .dbline 0 ; func end
 0014 0895              ret
 0016                   .dbend
 0016                   .dbfunc e timer0_init _timer0_init fV
                        .even
 0016           _timer0_init::
 0016                   .dbline -1
 0016                   .dbline 22
 0016           ; }
 0016           ; 
 0016           ; 
 0016           ; 
 0016           ; void timer0_init(void)
 0016           ; {
 0016                   .dbline 31
 0016           ;      //TCCR0B = 0x00; //stop
 0016           ;     // TCNT0 = 0x01; //set count
 0016           ;        
 0016           ;     // TCCR0A = 0xA3;          //              快速PWM
 0016           ;     // TCCR0B = 0x01; //start timer            选择分频系数                    
 0016           ;               // OCR0A = 0x30;
 0016           ;       // OCR0B = 0x30;                                
 0016           ;               
 0016           ;  TCCR0B = 0x00; //stop
 0016 2224              clr R2
 0018 25BC              out 0x25,R2
 001A                   .dbline 32
 001A           ;  TCNT0 = 0x01; //set count
 001A 81E0              ldi R24,1
 001C 86BD              out 0x26,R24
 001E                   .dbline 35
 001E           ;  //TCCR0A = 0xa3;   //CTC mode 
 001E           ;  //TCCR0B = 0x01; //start timer               
 001E           ;  OCR0A = speed0;
 001E 80E2              ldi R24,32
 0020 87BD              out 0x27,R24
 0022                   .dbline 36
 0022           ;  OCR0B = speed0;
 0022 88BD              out 0x28,R24
 0024                   .dbline -2
 0024           L2:
 0024                   .dbline 0 ; func end
 0024 0895              ret
 0026                   .dbend
 0026                   .dbfunc e timer2_init _timer2_init fV
                        .even
 0026           _timer2_init::
 0026                   .dbline -1
 0026                   .dbline 40
 0026           ; }
 0026           ; 
 0026           ; void timer2_init(void)
 0026           ; {
 0026                   .dbline 42
 0026           ; 
 0026           ;     TCCR2B = 0x00; //stop
 0026 2224              clr R2
 0028 2092B100          sts 177,R2
 002C                   .dbline 43
 002C           ;     ASSR  = 0x00; //set async mode
 002C 2092B600          sts 182,R2
 0030                   .dbline 44
 0030           ;     TCNT2 = 0x01; //setup
 0030 81E0              ldi R24,1
 0032 8093B200          sts 178,R24
 0036                   .dbline 45
 0036           ;     OCR2A = speed0;
 0036 80E2              ldi R24,32
 0038 8093B300          sts 179,R24
 003C                   .dbline 46
 003C           ;     OCR2B = speed0;
 003C 8093B400          sts 180,R24
 0040                   .dbline -2
 0040           L3:
 0040                   .dbline 0 ; func end
 0040 0895              ret
 0042                   .dbend
 0042                   .dbfunc e Start_PWMAB _Start_PWMAB fV
                        .even
 0042           _Start_PWMAB::
 0042                   .dbline -1
 0042                   .dbline 50
 0042           ; }
 0042           ; 
 0042           ; void Start_PWMAB(void)
 0042           ; {
 0042                   .dbline 51
 0042           ;         TCCR0B = 0x00;
 0042 2224              clr R2
 0044 25BC              out 0x25,R2
 0046                   .dbline 52
 0046           ;         TCCR0A = 0xA3;                //
 0046 83EA              ldi R24,163
 0048 84BD              out 0x24,R24
 004A                   .dbline 53
 004A           ;       TCCR0B = 0x01; //start Timer
 004A 81E0              ldi R24,1
 004C 85BD              out 0x25,R24
 004E                   .dbline -2
 004E           L4:
 004E                   .dbline 0 ; func end
 004E 0895              ret
 0050                   .dbend
 0050                   .dbfunc e Start_PWMA_Close_PWMB _Start_PWMA_Close_PWMB fV
                        .even
 0050           _Start_PWMA_Close_PWMB::
 0050                   .dbline -1
 0050                   .dbline 57
 0050           ; }
 0050           ; 
 0050           ; void Start_PWMA_Close_PWMB(void)
 0050           ; {
 0050                   .dbline 58
 0050           ;         TCCR0B = 0x00;
 0050 2224              clr R2
 0052 25BC              out 0x25,R2
 0054                   .dbline 59
 0054           ;         TCCR0A = 0x83;                //
 0054 83E8              ldi R24,131
 0056 84BD              out 0x24,R24
 0058                   .dbline 60
 0058           ;       TCCR0B = 0x01; //start Timer
 0058 81E0              ldi R24,1
 005A 85BD              out 0x25,R24
 005C                   .dbline -2
 005C           L5:
 005C                   .dbline 0 ; func end
 005C 0895              ret
 005E                   .dbend
 005E                   .dbfunc e Start_PWMB_Close_PWMA _Start_PWMB_Close_PWMA fV
                        .even
 005E           _Start_PWMB_Close_PWMA::
 005E                   .dbline -1
 005E                   .dbline 64
 005E           ; }
 005E           ; 
 005E           ; void Start_PWMB_Close_PWMA(void)
 005E           ; {
 005E                   .dbline 65
 005E           ;         TCCR0B = 0x00;
 005E 2224              clr R2
 0060 25BC              out 0x25,R2
 0062                   .dbline 66
 0062           ;         TCCR0A = 0x23;                //
 0062 83E2              ldi R24,35
 0064 84BD              out 0x24,R24
 0066                   .dbline 67
 0066           ;       TCCR0B = 0x01; //start Timer
 0066 81E0              ldi R24,1
 0068 85BD              out 0x25,R24
 006A                   .dbline -2
 006A           L6:
 006A                   .dbline 0 ; func end
 006A 0895              ret
 006C                   .dbend
 006C                   .dbfunc e Shut_PWMAB _Shut_PWMAB fV
                        .even
 006C           _Shut_PWMAB::
 006C                   .dbline -1
 006C                   .dbline 71
 006C           ; }
 006C           ; 
 006C           ; void Shut_PWMAB(void)
 006C           ; {
 006C                   .dbline 72
 006C           ;        TCCR0B = 0x00;
 006C 2224              clr R2
 006E 25BC              out 0x25,R2
 0070                   .dbline 73
 0070           ;        TCCR0A = 0x02;
 0070 82E0              ldi R24,2
 0072 84BD              out 0x24,R24
 0074                   .dbline -2
 0074           L7:
 0074                   .dbline 0 ; func end
 0074 0895              ret
 0076                   .dbend
 0076                   .dbfunc e Start_PWMC _Start_PWMC fV
                        .even
 0076           _Start_PWMC::
 0076                   .dbline -1
 0076                   .dbline 77
 0076           ; }
 0076           ; 
 0076           ; void Start_PWMC(void)
 0076           ; {
 0076                   .dbline 78
 0076           ;                TCCR2B = 0x00; //stop
 0076 2224              clr R2
 0078 2092B100          sts 177,R2
 007C                   .dbline 79
 007C           ;                TCCR2A = 0x23; 
 007C 83E2              ldi R24,35
 007E 8093B000          sts 176,R24
 0082                   .dbline 80
 0082           ;      TCCR2B = 0x01; //start
 0082 81E0              ldi R24,1
 0084 8093B100          sts 177,R24
 0088                   .dbline -2
 0088           L8:
 0088                   .dbline 0 ; func end
 0088 0895              ret
 008A                   .dbend
 008A                   .dbfunc e Shut_PWMC _Shut_PWMC fV
                        .even
 008A           _Shut_PWMC::
 008A                   .dbline -1
 008A                   .dbline 84
 008A           ; }     
 008A           ; 
 008A           ; void Shut_PWMC(void)
 008A           ; {
 008A                   .dbline 85
 008A           ;                TCCR2B = 0x00; //stop
 008A 2224              clr R2
 008C 2092B100          sts 177,R2
 0090                   .dbline 86
 0090           ;                TCCR2A = 0x03; 
 0090 83E0              ldi R24,3
 0092 8093B000          sts 176,R24
 0096                   .dbline -2
 0096           L9:
 0096                   .dbline 0 ; func end
 0096 0895              ret
 0098                   .dbend
 0098                   .dbfunc e phase_one_five _phase_one_five fV
                        .even
 0098           _phase_one_five::

⌨️ 快捷键说明

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