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

📄 macro915.h

📁 快速空间适量算法! 可以与适量控制接口! 用于F240系列
💻 H
字号:
;--------------------------------------------------------------------
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.
		SPLK		#0FFFFH,IFR 	;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                                    
        CLRC		INTM		;开总中断
        .ENDM      	
;--------------------------------------------------------------------       	
;=====================================================================
; EVA模块的初始化程序
;=====================================================================
EVAINI		.MACRO
                ;IO初始化
		LDP			#0E1H
		LACL		MCRA
		OR		#1FFFH
		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		#0842H,T1CON		;单个通用定时器控制寄存器
		;SPLK 	#0000100001000010b,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 + -