📄 bldcmmain.lis
字号:
.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 + -