📄 lsvpwm.asm
字号:
SPLK #1EEFH,DBTCON ;3us
;SPLK 1CEFH,DBTCON ;2.8us;
SPLK #0, CMPR1 ;
SPLK #0, CMPR2 ;
SPLK #0, CMPR3 ;再一次清零
LDP #0E1H
SPLK #1800H,OCRA ;使能T1PWM,T2PWM引脚
LDP #0E8H
SPLK #0000000001100101B,GPTCON ;
splk #0,T1CNT ;T1计数器初值
SPLK #0307H, COMCON ;COMCON NEED TO BE WRITTEN TWICE
SPLK #8307H, COMCON ;FOR PROPER OPERATION
splk #0010100011000011B,T2CON;使用T1,忽略本身
SPLK #0010100011000010B,T2CON ;13-11连续增减计数,10-8预定标1,
SPLK #0010100000000010B,T1CON ;13-11连续增减计数,10-8预定标1,
SPLK #0010100001000010B,T1CON
;SPLK #2802H,T1CON ;CONTINUOUS UP/DOWN COUNT MODE
;0010 1000 0000 0010
;SPLK #2802H,T1CON ;CONTINUOUS UP/DOWN COUNT MODE
;lacc T1CON
;or #40h
;sacl T1CON ;(T1CON)=02842H
;sacl T1CON ;(T1CON)=02842H
SPLK #0200H, EVIMRA ;只有下溢中断有效
LACC EVIVRA
SPLK #0H, EVIMRB
LACC EVIVRB
;---------------------------scope 初始化--------------------------
LDP #0
splk #0,FailFlag
SPLK #1,RunFlag
splk #1,RunEnable
LAR AR1,#60H ;栈底
setc OVM
setc sxm ;sign extension mode
;=================================================================
;示波器初始化
.if (scope_Enable==1)
call ScopeInitNoLoop
.endif
;---------------------------------
; ENABLE USED INTERRUPT
;-------------------------------------------------------------------
LDP #0E8H
;splk #1H, EVIMRB
splk #0200H, EVIMRA ;ENABAL T1 UNDERFLAW
LDP #00H
splk #12H, IMR ;ENABLE TIMER1 INTERRUPT(INT2) and INT5
CLRC INTM ;开中断
;LAR AR7,#8000H
;==================================================================
MENU NOP
.if (scope_Enable==1)
call ModifyOnline
call MultiSingle_online
.endif
B MENU
;======================================================================
;INT2中断服务程序,包括TIMER1中断
;======================================================================
GISR2: Store1
LDP #EVIVRA/128 ;
LACC EVIVRA ;读中断向量寄存器
SUB #29H ;29H代表T1UFINT
BCND SINE,EQ ;是TIMER1下溢中断,跳转到SINE
B GISR2_OUT ;否则跳出中断
SINE LDP #TETA/128
LACC TETA ;LOAD TETA角度 to ACC
ADD STEP ;加上角度增量STEP
AND #0FFH ;保证低八位为正
SACL TETA ;付新值给TETA
LACC TETA ;TETA->ACC
ADD #SINTAB ;加上SIN表入口地址
TBLR SINTETA ;将对应的SIN值存入SINTETA中
LT SINTETA ;LOAD SINTETA到 TREG
MPY MAG_A ;乘上幅值
PAC ;加载到ACC
SACH RESULT,1 ;RESULT=M*SIN(TETA)
LACC PERIOD ;RESULT=RERIOD/2+M*SIN(TETA)
SFR
ADD RESULT
SACL RESULT
LACC RESULT
LDP #0E8H
SACL CMPR1 ;RESULT->CMPR1
SACL T1CMPR ;输出模拟量
SACL T2CMPR
;SPLK #750,CMPR1
;SPLK #250,T1CMPR
;===========================================================================
.if (scope_Enable==1)
call SaveToBuffer ;数据存入缓存
.endif
Clock_S01 S01,S01_K,Clock
;========================================================================
GISR2_OUT
LDP #EVIFRA/128
LACC EVIFRA ;
SACL EVIFRA ;清中断标志位
Restore1
CLRC INTM
RET
;=====================================================================
PHANTOM KICK_DOG ;RESETS WD COUNTER
B PHANTOM
;===============================================================================
SERIAL: Store3
ldp #IMR/128
SBIT0 IMR,B4_MSK ;在ScopeTX使SCI中断禁止
CLRC INTM ;开中断
LDP #SYSIVR/128
LACl SYSIVR
SUB #6
BCND RXINT,EQ
B TXINT
;---------------------------------------------------------------------
RXINT call ScopeRX
b SERIAL_end
;---------------------------------------------------------------------
TXINT call ScopeTX
;---------------------------------------------------------------------
SERIAL_end SETC INTM
ldp #IMR/128
SBIT1 IMR,B4_MSK ;SCI中断使能
Restore3
CLRC INTM ;开中断
RET
;---------------------------------------------------------------------
;-------------------------------------------------------
; Sine look-up table
; No. Entries : 256
; Angle Range : 360 deg
; Number format : Q15 with range -1 < N < +1
;-------------------------------------------------------
;SINVAL ; Index Angle Sin(Angle)
SINTAB .word 0 ; 0 0 0.0000
.word 804 ; 1 1.41 0.0245
.word 1608 ; 2 2.81 0.0491
.word 2410 ; 3 4.22 0.0736
.word 3212 ; 4 5.63 0.0980
.word 4011 ; 5 7.03 0.1224
.word 4808 ; 6 8.44 0.1467
.word 5602 ; 7 9.84 0.1710
.word 6393 ; 8 11.25 0.1951
.word 7179 ; 9 12.66 0.2191
.word 7962 ; 10 14.06 0.2430
.word 8739 ; 11 15.47 0.2667
.word 9512 ; 12 16.88 0.2903
.word 10278 ; 13 18.28 0.3137
.word 11039 ; 14 19.69 0.3369
.word 11793 ; 15 21.09 0.3599
.word 12539 ; 16 22.50 0.3827
.word 13279 ; 17 23.91 0.4052
.word 14010 ; 18 25.31 0.4276
.word 14732 ; 19 26.72 0.4496
.word 15446 ; 20 28.13 0.4714
.word 16151 ; 21 29.53 0.4929
.word 16846 ; 22 30.94 0.5141
.word 17530 ; 23 32.34 0.5350
.word 18204 ; 24 33.75 0.5556
.word 18868 ; 25 35.16 0.5758
.word 19519 ; 26 36.56 0.5957
.word 20159 ; 27 37.97 0.6152
.word 20787 ; 28 39.38 0.6344
.word 21403 ; 29 40.78 0.6532
.word 22005 ; 30 42.19 0.6716
.word 22594 ; 31 43.59 0.6895
.word 23170 ; 32 45.00 0.7071
.word 23731 ; 33 46.41 0.7242
.word 24279 ; 34 47.81 0.7410
.word 24811 ; 35 49.22 0.7572
.word 25329 ; 36 50.63 0.7730
.word 25832 ; 37 52.03 0.7883
.word 26319 ; 38 53.44 0.8032
.word 26790 ; 39 54.84 0.8176
.word 27245 ; 40 56.25 0.8315
.word 27683 ; 41 57.66 0.8449
.word 28105 ; 42 59.06 0.8577
.word 28510 ; 43 60.47 0.8701
.word 28898 ; 44 61.88 0.8819
.word 29268 ; 45 63.28 0.8932
.word 29621 ; 46 64.69 0.9040
.word 29956 ; 47 66.09 0.9142
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -