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