📄 macro915.h.bak
字号:
;----------------------------------------------------------
STOP .MACRO ;停机模块
;LDP ??? ;7080H-70FFH
;LACL ???
;AND ???
;1111111110111111B
;SACL ??? ;???=/DISDRIVE(DP=0E1H)
LDP #0E8H
LACL COMCONA
AND #1111110111111111B
SACL COMCONA ;禁止PWM输出,COMCONA.9=0,PWM输出引脚处于高阻态,即禁止
LDP #0E8H
SPLK #0,CMPR1 ;设置PWM占空比
SPLK #0,CMPR2 ;设置PWM占空比
LDP #4 ;200H-027FH
SPLK #0,RunFlag ;运行标志置0,停机
.ENDM
;--------------------------------------------------------------------
RUN: .MACRO ;运行宏
LDP #4 ;200H-027FH
SPLK #1,RunFlag
LDP #0E1H ;7080H-70FFH
LACL ??? ;PADATDIR.3(IOPA3)=/DISDRIVE(DP=0E1H)
OR ???
SACL ??? ;PADATDIR.3(IOPA3)=/DISDRIVE(DP=0E1H)
LDP #0E1H ;7080H-70FFH
LACC #1111111111111011B
AND PADATDIR
SACL PADATDIR ;PADATDIR.2(IOPA2)=UNCLOCK
LACC #100B
OR PADATDIR
SACL PADATDIR ;将UNLOCK置低再置高???
LDP #0E8H
LACL COMCONA
OR #1000000000B
SACL COMCONA ;允许PWM输出,COMCONA.9=1
.ENDM
;----------------------------------------------------------------------------------
ALARM .MACRO ;ALARM模块
LDP #0E1H ;7080H-70FFH
LACL PFDATDIR ;PFDATDIR.0(IOPF0)=ALARM
OR #00000001B
SACL PFDATDIR ;PFDATDIR.0(IOPF0)=ALARM,IOPF0输出为高电平代表发出警告
.ENDM
;-----------------------------------------------------------------------
DISALARM: .MACRO ;DISALARM模块
LDP #0E1H ;7080H-70FFH
LACL PFDATDIR ;PFDATDIR.0(IOPF0)=ALARM
AND #1111111111111110B
SACL PFDATDIR ;PFDATDIR.0(IOPF0)=ALARM
.ENDM
;------------------------------------------------------------------------
SHORT: .MACRO
LDP #0E1H
LACC PFDATDIR
OR #00000100B ;PFDATDIR.2(IOPF2)=SHORT输出高电平表示接入母线充电电容
SACL PFDATDIR
.ENDM
;-----------------------------------------------------------------------
DISSHORT: .MACRO
LDP #0E1H
LACC PFDATDIR
AND #1111111111111011B ;PFDATDIR.2(IOPF2),输出低电平表示母线充电电容不接入
SACL PFDATDIR
.ENDM
;========================================================================
BREAK: .MACRO
LDP #0E1H
LACC PFDATDIR
OR #00001000B ;PFDATDIR.3(IOPF3)=BREAK输出高电平表示接入制动电阻
SACL PFDATDIR
.ENDM
;========================================================================
DISBREAK: .MACRO
LDP #0E1H
LACC PFDATDIR
AND #1111111111110111B ;PFDATDIR.3(IOPF3),输出低电平表示断开制动电阻
SACL PFDATDIR
.ENDM
;========================================================================
FAN: .MACRO
LDP #0E1H
LACC PCDATDIR
OR #10000000B ;PCDATDIR.7(IOPC7)=FAN,输出高电平表示采用冷却风扇运行
SACL PCDATDIR
.ENDM
;========================================================================
DISFAN: .MACRO
LDP #0E1H
LACC PCDATDIR
AND #1111111101111111B ;PCDATDIR.7(IOPC7),输出低电平表示采用风扇运行
SACL PCDATDIR
.ENDM
;========================================================================
Y1ON .MACRO
LDP #0E1H
LACC PCDATDIR
OR #01000000B ;PCDATDIR.6(IOPC6)=RUN(Y1),输出高电平变频器运行
SACL PCDATDIR
.ENDM
;========================================================================
Y1OFF .MACRO
LDP #0E1H
LACC PCDATDIR
AND #1111111110111111B ;PCDATDIR.6(IOPC6)=RUN(Y1),输出低电平变频器停止
SACL PCDATDIR
.ENDM
;--------------------------------------------------------------------
Store1 .macro ;保护现场模块1
MAR *,AR1
MAR *+
SST #1,*+
SST #0,*+
SACH *+
SACL *+
PAC
MPYK #1
SPL *+
SACH *+
SACL *+
SAR AR4,*+ ;for scope
SAR AR2,* ;for scope
.endm
;--------------------------------------------------------------------
Restore1 .macro ;恢复现场模块1
MAR *,AR1
lar AR2,*- ;for scope
lar AR4,*- ;for scope
LT *-
MPYK #1
LPH *-
LT *-
LACl *-
ADD *-,16
LST #0,*-
LST #1,*-
.endm
;===========================================================
Store3 .macro
MAR *,AR1
MAR *+
SST #1,*+
SST #0, *+
SACH *+
SACL *+
SAR AR2,*+ ;for scope
SAR AR4,* ;for scope
.endm
;===========================================================
Restore3 .macro
MAR *,AR1
lar AR4,*- ;for scope
lar AR2,*- ;for scope
LACL *-
ADDH *-
LST #0, *-
LST #1, *-
.endm
;--------------------------------------------------------------------
/*KICK_DOG .macro
LDP #0E0H
SPLK #05555H,WDKEY
SPLK #0AAAAH,WDKEY
LDP #0
.ENDM */
;=====================================================================
; /*---系统初始化程序*/
;=====================================================================
CPUINI .MACRO
LDP #0
SETC INTM
CLRC SXM ;Clear Sign Extension Mode
CLRC OVM ;Reset Overflow Mode
CLRC CNF ;Config Block B0 to Data mem.
;Disable interrupts during initialization.
LDP #0E0H
SPLK #02FDH,SCSR1 ;CLKIN=15M,CLKOUT=30M
;SPLK #0000001011111101b,SCSR1 ;2fd Enable clock to ADC,SCI,EVA module
;||||||||||||||||
;fedcba9876543210
;bit f: 0 Reserved
;bit e: 0 CLKOUT 引脚输出 CPU Clock
;bit d-c: 00 cpu 功耗模式选择
;bit b-9: 001 锁相环时钟选择倍频15MHz*2=30MHz
;bit 8: 0 Reserved
;bit 7: 1 ADC clock enabled
;bit 6: 1 SCI clock enabled
;bit 5: 1 SPI clock enabled
;bit 4: 1 CAN clock enabled
;bit 3: 1 EVB clock enabled
;bit 2: 1 EVA clock enabled
;bit 1: 0 Reserved
;bit 0: 1 无效地址检测
;LACC SCSR2
;OR #00101010B
;AND #00101110B
; ;||||||||
; ;00543210
; ;bit 7: 0 Reserved
; ;bit 6: 0 输入限定器锁存时间至少5个时钟周期长
; ;bit 5: 1 Enable WD
; ;bit 4: 0 XMIF外部存储器正常工作模式
; ;bit 3: 1 禁止引导rom
; ;bit 2: 1/0 程序地址映射到片外
; ;bit 1-0: 10 SARAM 被映射到片内程序和数据空间
;SACL SCSR2
;SPLK #08001H,XINT1CR
;SPLK #08001H,XINT1CR
SPLK #06FH,WDCR ;禁止WDT
LDP #0H
SPLK #0013H,IMR ;使能INT1,INT2,INT5
;SPLK #0FFFFH,IFR ;清所有中断标志
CLRC INTM ;开总中断
.ENDM
;--------------------------------------------------------------------
;=====================================================================
; EVA模块的初始化程序
;=====================================================================
EVAINI .MACRO
;IO初始化
LDP #0E1H
LACL MCRA
OR #0FFFH
SACL MCRA ;TIME1比较输出,pwm口使能
;SPLK #0000111111111111b,MCRA ;TIME1比较输出,pwm口使能
;||||||||||||||||
;fedcba9876543210
;bit f-c: 0 IOPB7-IOPB4
;bit b-6: 1 PWM6-PWM1
;bit 5: 1 CAP3(PGA)
;bit 4: 1 CAP2/QEP2(PGB)
;bit 3: 1 CAP1/QEP1(PGC)
;bit 2-0: 1 XINT1,SCIRXD,SCITXD
;不用设置PADATDIR,因为A端口均为基本功能,不是一般IO口
LACL PBDATDIR
AND #3FFFH
SACL PBDATDIR
;SPLK #0011111111111111,PBDATDIR
;||||||||||||||||
;fedcba9876543210
;bit f: 0 IOPB7 input,read high(Two_P)
;bit e: 0 IOPB6 input,read high(JOG)
;bit d: 1 IOPB5 output,high(FPM)
;bit c: 1 IOPB4 output,high(FAM)
;others: 1
SPLK #0FF03H,MCRB
;SPLK #1111111100000011B,MCRB
;||||||||||||||||
;fedcba9876543210
;bit f-9: 1 保留位
;bit 8: 1 XINT2/ADCSOC
;bit 7-2: 0 IOPC7-IOPC2为一般I/O口
;bit 1-0: 11 BIO,W/R 这两位设成11是因为硬件上这两个管脚接了线,默认为BIO,W/R功能
SPLK #0F8F8H,PCDATDIR
;SPLK #1111100011111000B,PCDATDIR
;||||||||||||||||
;fedcba9876543210
;bit f: 1 IOPC7 output(FAN)
;bit e: 1 IOPC6 output(RUN)
;bit d: 1 IOPC5 output(EEPROMCS)
;bit c: 1 IOPC4 output(EEPROMCLK)
;bit b: 1 IOPC3 output(EEPROMDI)
;bit a: 0 IOPC2 input (EEPROMDO)
;bit 9-8: 0
;bit 7-2: 1 HIGH
;others: 0 LOW
SPLK #8000H,MCRC
;SPLK #1000000000000000,MCRC
;||||||||||||||||
;fedcba9876543210
;bit f: 1 remain
;bit e-0: 0 IOPE0-IOPE7,IOPF0-IOPF6
SPLK #00FFH,PEDATDIR
;SPLK #0000000011111111B,PEDATDIR
;||||||||||||||||
;fedcba9876543210
;bit f: 0 IOPE7,input(REV)
;bit e: 0 IOPE6,input(FWR)
;bit d: 0 IOPE5,input(HLD)
;bit c: 0 IOPE4,input(ACC2)
;bit b: 0 IOPE3,input(ACC1)
;bit a: 0 IOPE2,input(SP3)
;bit 9: 0 IOPE1,input(SP2)
;bit 8: 0 IOPE0,input(SP1)
;bit 7-0: 1 read high
SPLK #0FFFFH,PFDATDIR
;SPLK #1111111111111111B,PFDATDIR
;||||||||||||||||
;fedcba9876543210
;bit f: 1 remain
;bit e: 1 IOPF6,output(C/1)
;bit d: 1 IOPF5,output(B/1)
;bit c: 1 IOPF4,output(A/1)
;bit b: 1 IOPF3,output(BREAK)
;bit a: 1 IOPF2,output(SHORT)
;bit 9: 1 IOPF1,output(SPEED)
;bit 8: 1 IOPF0,output(TA,TB,TC)
;bit 7-0: 1 high
;IO初始化完毕
LDP #0E8H
SPLK #8842H,T1CON ;单个通用定时器控制寄存器
;SPLK #1000100001000010b,T1CON ;SET TIMER1
;||||||||||||||||
;fedcba9876543210
;bit f-e: 10 操作不受仿真器挂起影响
;bit d: 0 reserved
;bit c-b: 01 连续增/减计数模式
;bit a-8: 000 输入时钟预分频1
;bit 7: 0 定时器2、4使用自身周期寄存器
;bit 6: 1 使能定时器操作
;bit 5-4: 00 使用内部cpu时钟
;bit 3-2: 00 定时器比较寄存器重载条件为当计数值为0时
;bit 1: 1 使能定时器比较操作
;bit 0: 0 使用自身的周期寄存器
SPLK #0CAH,GPTCONA ;全局通用定时器控制寄存器
;SPLK #0000000011001010b,GPTCONA;
;||||||||||||||||
;fedcba9876543210
;bit f: 0 reserved
;bit e: 0 T2 减计数
;bit d: 0 T1 减计数
;bit c-b: 00 reserved
;bit a-9: 00 T2无事件启动ADC
;bit 8-7: 01 T1下溢事件启动ADC
;bit 6: 1 使能所有通用寄存器比较输出
;bit 5-4: 00 reserved
;bit 3-2: 10 T2 比较输出高有效
;bit 1-0: 10 T1 比较输出高有效
SPLK #8200H,COMCONA ;比较控制寄存器
;SPLK #1000001000000000b,COMCONA ;设置比较模式
;||||||||||||||||
;fedcba9876543210
;bit f: 1 使能比较操作
;bit e-d: 00 T1CNT=0(下溢)重载CMPRx(比较寄存器)
;bit c: 0 禁止空间矢量模式
;bit b-a: 00 ACTRLD1/ACTRLD0.方式控制寄存器重载条件为下溢
;bit 9: 0 PWM输出禁止
;bit 8: 0 PDPINTA状态位
;bit 7-0: 000000000 reserved
SPLK #0666H,ACTRA ;比较方式控制寄存器
;SPLK #00000100110011001b,ACTRA ;Set PWM output mode
;||||||||||||||||
;fedcba9876543210
;bit f: 0 SVPWM旋转方向(正向CCW)
;bit e-c: 000 基本矢量位
;bit b-a: 10 Set PWM6 to active high
;bit 9-8: 01 Set PWM5 to active low
;bit 7-6: 10 Set PWM4 to active high
;bit 5-4: 01 Set PWM3 to active low
;bit 3-2: 10 Set PWM2 to active high
;bit 1-0: 01 Set PWM1 to active low
SPLK #0CECH,DBTCONA ;死区控制寄存器,死区时间为3.2uS
;SPLK #0000110011101100b,DBTCONA ;死区时间3.2uS
;||||||||||||||||
;fedcba9876543210 0CECH
;bit f-c: 0000 reserved
;bit b-8: 1100 死区时间周期为12(死区定时器1,2,3的周期为12)
;bit 7: 1 死区定时器3使能
;bit 6: 1 死区定时器2使能
;bit 5: 1 死区定时器1使能
;bit 4-2: 011 死区定时器预分频为8
;bit 1-0: 00 Reserved
SPLK #0FFFFH,EVAIFRA ;清除中断标志
SPLK #0201H,EVAIMRA
;SPLK #0000001000000001b,EVAIMRA ;T1中断下溢使能,功率驱动
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -