📄 bldc05_mat.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 + -