《无刷直流电动机调速控制程序》
.include "240x.h"
.global _c_int0
;--------------------------------------以下定义变量和常数----------------------------------------------------
.data
KP .set 015 ;速度调节比例系数
KI .set 004 ;速度调节积分系数
.bss CAPT,1 ;换相控制字
.bss COMP,1 ;比较值
.bss IDC,1 ;线电流
.bss IDC_REF,1 ;电流参考值
.bss SPEED_REF,1 ;速度参考值
.bss SPEED_COUNT,1 ;速度调节循环计数器
.bss STACK,6 ;软堆栈初始地址
;--------------------------------------定义主向量-------------------------------------------------------------
.sect "vectors"
RSVECT B _c_int0 ;复位
INT1 B PHANTOM ;INT1
INT2 B PHANTOM ;INT2
INT3 B PHANTOM ;INT3
INT4 B CAPINT ;捕捉中断
INT5 B PHANTOM ;INT5
INT6 B ADCINT ;ADC中断
… ;略
;--------------------------------------以下是程序-------------------------------------------------------------
.text
;--------------------------------------初始化程序--------------------------------------------------------------
_C_INT0
SETC CNF
CLRC OVM
SETC SXM ;符号扩展
SETC INTM ;关中断
MAR *,AR2 ;速度调节变量区指针
LAR AR2,#0300H ;速度调节变量区初始化
SPLK #0,*+
SPLK #0,*+
SPLK #0FFFFH,*+
SPLK #029H,*+
SPLK #029H,*+
SPLK #0,*
LAR AR2,#0300H
LAR AR1,#STACK ;软堆栈指针
LDP #0E0H
SPLK #68H, WDCR ;不用看门狗
SPLK #0284H,SCSR1 ;10MCLKIN,20MCLKOUT
LDP #0E8H
SPLK #0FFFFH,T2PR ;最大周期
SPLK #00000H,T2CNT
SPLK #17C0H,T2CON ;连续增计数,128分频,T1启动
SPLK #500,T1PR ;PWM设置,周期50微秒