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

📄 bldc05_mat.asm

📁 spwm测试程序
💻 ASM
字号:
*FILE: BLDC05_mat.ASM
*日期:2005年9月28日*  
*******************************************
*******************************************
*   无位置和有位置通用,input=20MHZ,T1周期=10us启动AD中断* 
*   24LC16B读写
*   CAN通信 
*   18b20通信
*   温度设置:-19C--+40C 
*   ERR-1: 起动失败
*   ERR-2   电源电压<150VDC         
*   ERR-3   过流 
*   ERR-4   电源电压>350VDC 
*   ERR-5   24LC16B W/R错误
*   ERR-6   电机温度过高(转头设置错误) 
*   ERR-7   没有负载
*   ERR-8   功率管保护  
*   DATT46:  15-0=1 18B20_RUN    15-1=1  LCD_RUN
*            15-2=1 CAN_RUN  
*   DATT30:  =112,两秒步进测试;  =114,两极电机.再起动
*            =119,自动再起动  ;  =120 不计时.
*   DATT31:  DATT30=\114 速度加减量
*   DATT32:  DATT30=114  速度加减量
*   DATT33:  DATT30=\114 速度最大值
*   DATT34:  DATT30=114  速度最大值
*
*
*
*******************************************              
*******************************************
;AS1    .usect      "cur_mod",10	 
;AS2    .usect      "cur_mod",10
;       .ref        CAN_F
;       .ref        CAN_J
;       .ref        CAN_INIT	  
;       .ref        WR_EEPROM
;       .ref        I2C,I2C_WRITE,I2C_COUNT, 
;       .ref        DISPLAY1          ;LCD  
;       .ref        LCD_PLAY
;       .ref        LCD_INT        
;       .ref        DISPLAY2
;       .ref        LCD_CN 
;       .ref        LCD_DARW 
;       .ref        LCD_DASX  
;       .ref        LCD_CLEAR
;       .ref        LCD_CL  
       .ref        REST_18B20;,RD_DAT6,DS1820CRC1   
       .ref        I2C_R,I2C_W,I2C_W_INT,I2C_R_INT 
       .ref        PID,PID_INT
       .ref        RK,U,UK,UF,COMP
       .ref        PID_COUNT2,PID_COUNT4 
       .ref        R_MUN,READ,W_CNT
       .def        T3PRSET,BLDCTABLE1,OFFOUT
******************************************* 
*******************************************
       .sect    "VECTORS" 
*******************************************        
int0		B	    _c_int0		
int1		B		ADC_INT
int2		B	    BEGIN
int3		B		BEGIN 
int4		B		BEGIN
int5		B		SPIINT 
int6		B		BEGIN	
            B		BEGIN	
            B		BEGIN	
            B		BEGIN	
            B		BEGIN	
            B		BEGIN	
            B		BEGIN	
            B		BEGIN	
            B		BEGIN	
            B		BEGIN	
            B		BEGIN	
            B		BEGIN	
            B		BEGIN	
            B		BEGIN	
            B		BEGIN	
            B		BEGIN	
            B		BEGIN
            B		BEGIN	
            B		BEGIN	
            B		BEGIN	
            B		BEGIN	
            B		BEGIN	
            B		BEGIN	
            B		BEGIN	
            B		BEGIN 
            B		BEGIN           	                        
*******************************************		        
          .include "lf2407a.H"          
******************************************* 
DAT_SET   .set  0H
*版本编号:
VAR       .set  50922 ;5=2005;06=6月;26=26日
*T1 周期
T1PRSET   .set  400   ;400=100KHZ 
*PWM调制频率
T3PRSET   .set  2000  ;2000=20KHZ 
*低速起动运行时间设置:
LSRUN     .set  0     ;2500*2MS=5S   
*加减速时间常数设置:  
ASTIME    .set  5
*转头判别时间设置: 
ZHUANTOU1 .set  10  
ZHUANTOU2 .set  1300
ZHUANTOU3 .set  4600
ZHUANTOU4 .set  5600   
ZHUANTOU5 .set  8500  
ZHUANTOU6 .set  9500
ZHUANTOU7 .set  9600
ZHUANTOU8 .set  9700 
 
*初始时间设置:
FEN       .set  2     ;分   
MIAO      .set  30    ;秒  
*初始转速设置:  
SPEED0    .set  5000  ;转/分      
*最低转速设置:
SPEED1    .set  5000  ;转/分    1#类电机
SPEED2    .set  4000  ;转/分    2#类电机
SPEED3    .set  3000  ;转/分    3#类电机
SPEED4    .set  2000  ;转/分    4#类电机
*1#电机最高转速设置:
SP1_MAX1  .set  25000 ;转/分    1#转头
SP1_MAX2  .set  25000 ;转/分    2#转头
SP1_MAX3  .set  25000 ;转/分    3#转头
SP1_MAX4  .set  25000 ;转/分    4#转头   
SP1_MAX5  .set  25000 ;转/分    5#转头
SP1_MAX6  .set  25000 ;转/分    6#转头
SP1_MAX7  .set  25000 ;转/分    7#转头
SP1_MAX8  .set  25000 ;转/分    8#转头

*定位电流:          
I1MIX     .set  550   ;1#类电机
I2MIX     .set  550   ;2#类电机
I3MIX     .set  550   ;3#类电机
I4MIX     .set  550   ;4#类电机 
*切换点以下运行电流:          
I1MAX     .set  650   ;1#类电机
I2MAX     .set  650   ;2#类电机
I3MAX     .set  650   ;3#类电机
I4MAX     .set  650   ;4#类电机
*切换点以上运行电流:          
I1MAXUP   .set  1000  ;1000
I2MAXUP   .set  1000
I3MAXUP   .set  1000 
I4MAXUP   .set  1100  ;1000=3A(AC)    

*定位时间
T1SP      .set  500   ;1000=2秒
T2SP      .set  10000       
T3SP      .set  10000 
T4SP      .set  10000    
*1#电机同步起动初始转速设置
T1ST1     .set  1000   ;1#转头     
T1ST2     .set  2500  ;2#转头
T1ST3     .set  3000  ;3#转头
T1ST4     .set  3500  ;4#转头 3000=75 转/分           
*2#电机同步起动初始转速设置
T2ST1     .set  6000       
T2ST2     .set  6000
T2ST3     .set  6000
T2ST4     .set  6000  
*3#电机同步起动初始转速设置
T3ST1     .set  6000       
T3ST2     .set  6000
T3ST3     .set  6000
T3ST4     .set  6000  
*4#电机同步起动初始转速设置
T4ST1     .set  6000       
T4ST2     .set  6000
T4ST3     .set  6000
T4ST4     .set  6000  
************************************************
************************************************
     .text     
************************************************
	   
 .word   0FFFFh,0FFFFh,0FFFFh,0FFFFh  ;写保密区0040H-0043H 
 
********************************************  
  
_c_int0:
        CLRC        XF
    	CLRC		CNF
        CLRC        OVM    	  
    	CLRC		SXM  
    	SETC		INTM			;关中      
    	
		LDP 		#224
		SPLK		#0068H,WDCR     ;#002BH

******************清DRAM*********************

CLEAR1:	MAR 		*,AR6
		LAR 		AR6,#60H
		LACL		#0
		RPT 		#01FH
		SACL		*+,0,AR6
		LAR 		AR7,#0FFH
		LAR 		AR6,#300H
		MAR 		*,AR6
CLEAR2:	SPLK		#0H,*+,AR7
		BANZ		CLEAR2,AR6      
		     
		LAR 		AR7,#0FFH
		LAR 		AR6,#200H
		MAR 		*,AR6
CLEAR3:	SPLK		#0H,*+,AR7
		BANZ		CLEAR3,AR6   
		
		LAR 		AR7,#07FH
		LAR 		AR6,#800H
		MAR 		*,AR6
CLEAR4:	SPLK		#DAT_SET,*+,AR7
		BANZ		CLEAR4,AR6  
		
		LAR 		AR7,#780H
		LAR 		AR6,#880H
		MAR 		*,AR6
CLEAR5:	SPLK		#0H,*+,AR7
		BANZ		CLEAR5,AR6   			 		 		   
*********************************************  

******************系统初始化*****************
SYSINIT:
    	LDP 		#0
		SPLK		#0FFFFH,IFR
		SPLK		#00011H,IMR
        LAR         AR4,#060H
		LDP 		#6 
		SPLK        #VAR,IN7            ;版本编号5=2005;05=5月;18=18日
		SPLK		#00H,TEMP           ;#00H
		OUT 		TEMP,WSGR		    ;等待
		LDP 		#224             
		SPLK		#002ACH,SYSCR		;#00ACH ,PLL=*4 , #02ACH ,PLL=*2, 
		                                ;#02ACH:SCLK
		                                ;BIT7-ADC,BIT6-SCI,BIT5-SPI,BIT4-CAN
		                                ;BIT3-EVB,BIT2-EVA,BIT1-NC,BIT0-NC 
		LDP 		#225                
		SPLK		#00038H,MCRA		;除CAP1,CAP2,CAP3外,置为I/O方式
		SPLK		#00014H,MCRB		;#000D4H 除SPICLK,SPISOMO外,置为I/O方式
		SPLK		#0007EH,MCRC  		;除PWM7-12外,置为I/O方式
		SPLK		#00300H,PADATDIR	;除PA0PA1外 输入,低
		SPLK		#000FFH,PBDATDIR	;PB输入,高
		SPLK		#0FF00H,PCDATDIR	;PC输出,低
		SPLK		#0FF00H,PDDATDIR	;PD输出,低
		SPLK		#0FF00H,PEDATDIR 	;PE输出, 低
		SPLK		#0FF00H,PFDATDIR 	;PF输出, 低    
        
		LDP 		#232
		SPLK		#00100H,GPTCONA     ;#00000H  OFF T1PIN,T2PIN
		SPLK		#0A600H,COMCONA		;#0CA07H 
		SPLK		#00000H,T1CNT
		SPLK		#T1PRSET,T1PR       ; 

		SPLK		#00000H,ATCRA		;全关断     
		SPLK		#00FFFH,ATCRB		;全关断  
		SPLK		#09046H,T1CON       ;#9046H,
		SPLK		#0FFFFH,EVAIFRA	    ;清中断标志
		SPLK		#0FFFFH,EVAIFRB
		SPLK		#0FFFFH,EVAIFRC
		SPLK		#00000H,EVAIMRA	    ;#0180H,允许T1周期,比较中断,其余屏蔽
		SPLK		#00000H,EVAIMRB	    ;不允许T2\T3中断,屏蔽 
		 
		LDP 		#232                ;捕捉
		SPLK		#00000H,EVAIMRC     ;允许CAP1,CAP2,CAP3中断,其余屏蔽
        SPLK		#00000H,T2CNT       ;T2
        SPLK		#0FFFFH,T2PR        ;   
        SPLK		#007FFH,T2CMPR
        SPLK		#0D740H,T2CON       ;#0D740H
        SPLK		#030FCH,CAPCONA     ;
        SPLK		#00000H,CAPFIFOA    ; 
        
        LDP 		#234 
    	SPLK		#09046H,T3CON	    ;T3CON      
		SPLK		#00000H,T3CNT	    ;T3CNT       
		SPLK		#T3PRSET,T3PR	    ;#3000=10KHZ 30MHZ
	    SPLK		#00041H,GPTCONB	    ;#00041H  OPEN T3PIN
		SPLK		#0A600H,COMCONB	    ;#0A600H   
		
        SPLK	    #09646H,T4CON	     ;#09646H 1/64 CLOCK      
		SPLK	    #00000H,T4CNT	     ;T4CNT       
		SPLK	    #0FFFFH,T4PR	     ;         		
	    
		SPLK		#0FFFFH,EVBIFRA	    ;EVBIFRA清中断标志
		SPLK		#0FFFFH,EVBIFRB	    ;EVBIFRB
		SPLK		#0FFFFH,EVBIFRC	    ;EVBIFRC
		SPLK		#00000H,EVBIMRA	    ;EVBIMRA不允许T3周期中断,其余屏蔽
		SPLK		#00000H,EVBIMRB	    ;EVBIMRB允许T4周期中断,其余屏蔽
		SPLK		#00000H,EVBIMRC	    ;EVBIMRC   

*SPI_INIT:
		LDP 		#224
		SPLK		#0007H,SPICCR
		SPLK		#0006H,SPICTL
		SPLK		#0013h,SPIBRR       ;#07h
		SPLK		#0040H,SPIPRI
		SPLK		#00C7H,SPICCR       ;#00C7h
		SPLK		#8000H,XINT1CR 
		SPLK		#8000H,XINT2CR    

*DACINIT:
		LDP 		#225
		SPLK		#04000H,ADCTRL1		;ADCTRL1
		NOP
		NOP
		NOP
		SPLK		#03200H,ADCTRL1		;#03200H:4*Tclk  #3000H:2*Tclk  
		SPLK		#00500H,ADCTRL2
		SPLK		#00032H,MAXCONV		;#00032H  #7
		SPLK		#00D3CH,CHSELSEQ1	;#00D3CH  
        SPLK		#0BB22H,CHSELSEQ3	;#0BBBBH  
        
        CALL        OFFOUT     

*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@                          
HEL00:
        LDP         #0
        LACL        #W_CNT
        SACL        I2C_CNT
        LAR         AR0,#R_MUN       ;AR0:读写的字节数(16BIT)

⌨️ 快捷键说明

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