📄 lsvpwm.asm
字号:
;================================================================
;编译开关
scope_Enable .set 1 ;如名
Tc_short .set 1 ;1-小采样周期(约120us),0-大采样周期(约700us)
SVPWM_load .set 0 ;SVPWM中是否load CMPRx
immediate .set 0 ;死区补偿是否立即载入,0-中末,1-立即
ENSCMP .set 0 ;SCMP是否发同样的脉冲
DEADCON .set 1 ;是否进行死区补偿
;*********************************************************************
; 文件名: lsvpwm.ASM
; 目标系统: F240主控板
; 功能描述: SVPWM,死区补偿,有电压电流AD输入,与scope通信
; 版本号: 1.1
; 最新调整时间: 2003.6.15
;*************************头文件*************************************
.INCLUDE F240.h
.INCLUDE constdef.h
.INCLUDE Macro.h
.INCLUDE ScopeREF.h
.INCLUDE varinit.h
.INCLUDE vardef.h
.INCLUDE mathtb.h
;**********************定标及公式声明********************************
;**********************常数声明**************************************
;***********************变量定义*************************************
variable_def
;***********************向量地址声明***************************************
.SECT ".VECTORS"
RSVECT B START
INT1 B IPM_FAIL ;IPM的FO保护
INT2 B GISR2 ;GISR2包括TIMER1和PDPINT
INT3 B PHANTOM ;INTERRUPT LEVEL 3
INT4 B PHANTOM ;INTERRUPT LEVEL 4
INT5 B SERIAL ;INTERRUPT LEVEL 5
INT6 B PHANTOM ;INTERRUPT LEVEL 6
RESERVED B PHANTOM ;RESERVED
SW_INT8 B PHANTOM ;USER S/W INTERRUPT
SW_INT9 B PHANTOM ;USER S/W INTERRUPT
SW_INT10 B PHANTOM ;USER S/W INTERRUPT
SW_INT11 B PHANTOM ;USER S/W INTERRUPT
SW_INT12 B PHANTOM ;USER S/W INTERRUPT
SW_INT13 B PHANTOM ;USER S/W INTERRUPT
SW_INT14 B PHANTOM ;USER S/W INTERRUPT
SW_INT15 B PHANTOM ;USER S/W INTERRUPT
SW_INT16 B PHANTOM ;USER S/W INTERRUPT
TRAP B PHANTOM ;TRAP VECTOR
NMINT B PHANTOM ;NON-MASKABLE INTERRUPT
EMU_TRAP B PHANTOM ;EMULATOR TRAP
SW_INT20 B PHANTOM ;USER S/W INTERRUPT
SW_INT21 B PHANTOM ;USER S/W INTERRUPT
SW_INT22 B PHANTOM ;USER S/W INTERRUPT
SW_INT23 B PHANTOM ;USER S/W INTERRUPT
;***********************************************************************
;***************************主程序开始**********************************
;***********************************************************************
.TEXT
;************************F240初始化模块开始*****************************
;---------------------初始化ST0,ST1,IMR,IFR-----------------------------
START: LDP #00H ;0000H-007FH
SETC INTM ;DISABLE INTERRUPTS
splk #0000H,IMR ;MASK ALL CORE INTERRUPTS
LACC IFR ;READ INTERRUPT FLAGS
SACL IFR ;CLEAR ALL INTERRUPT FLAGS
CLRC SXM ;SUPPRESSES SIGN EXTENSION
CLRC OVM ;RESET OVERFLOW MODE
CLRC CNF ;CONFIG BLOCK B0 TO DATA MEM
SPM 0 ;SUPPRESSES SHIFT ACTION
;------------------------设置CLOCK与PLL--------------------------------
INICLOCKPLL: LDP #0E0H ;7000H-707FH
splk #00BBh,CKCR1 ;CLKIN(OSC)=10MHz,CPUCLK=20MHz
splk #00C3h,CKCR0 ;CLKMD=PLL Enable,SYSCLK=CPUCLK/2
splk #4000H,SYSCR ;0100 0000 0000 0000
;CLKOUT PIN =Digital I/O mode
LDP #00E0h ;DP for addresses 7000h-707Fh
lacc SYSSR
and #69FFh ;and 0110100111111111, clear 15,12,10,9
sacl SYSSR ;可靠的初始化,清非法故障标志
;------------------------关看门狗和设置等待周期------------------------
LDP #0E0H
INIRTICR splk #0007H,RTICR ;DISABLE RTI
INIWDCR splk #006FH,WDCNTR
splk #05555H,WDKEY
splk #0AAAAH,WDKEY
splk #006FH,WDCNTR
SPLK #006FH, WDCR ;DISABLE WD IF VCCP=5V (JP5 IN POS. 2-3)
;Overflow TIME=1s
KICK_DOG ;RESET WATCHDOG
LDP #4
SPLK #4H,TEMP ;SET WAIT STATE GENERATOR FOR:
OUT TEMP,WSGR ;PROGRAM SPACE, 0 WAIT STATES
;DATA SPACE, 0 WAIT STATES
;I/O SPACE, 1 WAIT STATES
;----------------------I/O引脚的初始化---------------------------------
;I/O引脚的初始化
;注意:用户程序务必参照此段初始化程序
;DP=0E1H
;PADATDIR.0(IOPA0)=CS(93C46)
;PADATDIR.1(IOPA1)=CLK(93C46)
;PADATDIR.2(IOPA2)=UNCLOCK
;PADATDIR.3(IOPA3)=/DISDRIVE
;PBDATDIR.5(IOPB5)=BRAKE
;PBDATDIR.6(IOPB6)=FAN
;PBDATDIR.7(IOPB7)=SHORT
;PCDATDIR.0(IOPC0)=FAI(Y2)
;PCDATDIR.1(IOPC1)=RUN(Y1)
;PCDATDIR.2(IOPC2)=DO(93C46)
;PCDATDIR.3(IOPC3)=DI(93C46)
;PCDATDIR.6(IOPC6)=ALARM
;PCDATDIR.7(IOPC7)=FDT(Y3)
NOP
NOP
NOP
NOP
NOP
INIIOPIN: LDP #0E1H ;7080H-70FFH
INIOCRA splk #0001111100000000B,OCRA ;
INIOCRB splk #00111100B,OCRB ;
INIPADATDIR splk #0000111100000000B,PADATDIR
INIPBDATDIR splk #1110000000000000B,PBDATDIR
INIPCDATDIR splk #1100101100000000B,PCDATDIR
LDP #0E0H ;7000H-707FH
ININMI splk #0014H,NMI ;0000 0001 0000 0100B
;NMI,上升沿触发
INIXINT1 splk #0005H,XINT1 ;0000 0000 0000 0101B
;XINT1上升沿触发,HIGH优先级
INIXINT2 splk #0000H,XINT2 ;作为输入
INIXINT3 splk #0000H,XINT3 ;作为输入
;-----------------------EV中断初始化-------------------------------------------
INIEV: LDP #0E8H ;DP =>EV REGISTERS,7400H-747FH
INIEVIMRA splk #00000H,EVIMRA ;MASK ALL GROUP A INTERRUPT FLAGS
INIEVIMRB splk #00000H,EVIMRB ;MASK ALL GROUP B INTERRUPT FLAGS
INIEVIMRC splk #00000H,EVIMRC ;MASK ALL GROUP C INTERRUPT FLAGS
INIEVIFRA splk #0FFFFH,EVIFRA ;CLEAR ALL GROUP A INTERRUPT FLAGS
INIEVIFRB splk #0FFFFH,EVIFRB ;CLEAR ALL GROUP B INTERRUPT FLAGS
INIEVIFRC splk #0FFFFH,EVIFRC ;CLEAR ALL GROUP C INTERRUPT FLAGS
INIEVIVRA LACC EVIVRA
INIEVIVRB LACC EVIVRB
INIEVIVRC LACC EVIVRC
;------------------------A/D 初始化------------------------------------------
INIAD: LDP #0E0H
INIADCTRL2 splk #0004H, ADCTRL2 ;CONVERSION TIME 7.2US
ADCINIFIFO1 LACL ADCFIFO1
LACL ADCFIFO1
INIADCFIFO2 LACL ADCFIFO2
LACL ADCFIFO2
;-----------------------------------SCI的初始化-------------------------------
;注意:用户程序务必参照此段初始化程序
SCI_INIT: LDP #00E0h
splk #0017h, SCICCR ;1 stop bit,disable parity,8 char bits,
;async mode, idle–line protocol
splk #0013h, SCICTL1 ;Enable TX, RX, internal SCICLK,
;Disable RX ERR, SLEEP, TXWAKE
splk #0003, SCICTL2 ;disable RX INT,enable TX INT
splk #0000h, SCIHBAUD
splk #000ah, SCILBAUD ;Baud Rate=115200 b/s (10 MHz SYSCLK)
;splk #0040h, SCILBAUD ;Baud Rate=19200 b/s (10 MHz SYSCLK)
splk #0022h, SCIPC2 ;Enable TXD & RXD pins
splk #0033h, SCICTL1 ;Relinquish SCI from Reset.
splk #0060H,SCIPRI ;RX,TX皆为LOW 优先级
;=========================PWM中断初始化===============================================
;--------------------------清零-------------------------------------------------------
zac
ldp #0E8H
sacl GPTCON ;gptcon=0
sacl T1CNT
sacl T1CMPR
sacl T1PR
sacl T1CON
sacl T2CNT
sacl T2CMPR
sacl T2PR
sacl T2CON
sacl T3CNT
sacl T3CMPR
sacl T3PR
sacl T3CON
sacl COMCON
sacl ACTR
sacl SACTR
sacl DBTCON
sacl CMPR1
sacl CMPR2
sacl CMPR3
sacl SCMPR1
sacl SCMPR2
sacl SCMPR3
sacl CAPCON
sacl CAPFIFO
sacl CAP1FIFO
sacl CAP2FIFO
sacl CAP3FIFO
sacl CAP4FIFO
;-------------------------系统寄存器初始化---------------------------------------------
splk #1010101B,GPTCON;允许三个定时器比较输出,ACTIVE LOW
LACC #Sample_PRD
SACL T1PR ;微秒,采样周期
SPLK #0, T1CNT
SPLK #0, T2CNT
SPLK #1, T1CMPR
SPLK #1, T2CMPR
;SPLK #0666H, ACTR ;禁止 SPACE VECTOR PWM,高有效
;0000 0110 0110 0110
;SPLK #0666H, ACTR ;ACTR IS DOUBLE BUFFERED
splk #0999H,ACTR ;PWM compare actionsn,no space vector
;0000 1001 1001 1001
;6,4,2,high 5,3,1,low
;SPLK #002AH,SACTR ;简单比较单元高有效
;0000 0000 0010 1010
splk #002Ah,SACTR ;X,Y,Z,active high
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -