📄 main.asm
字号:
SPLK #15,LED1
SPLK #15,LED2
SPLK #15,LED3
CALL DIS
ret
;;-----------------------------------------------------------
PHANTOM
KICK_DOG
LDP #0
SST #ST0,ST0_save ; save status register ST0
SST #ST1,ST1_save ; save status register ST1
LDP #0 ; set DP
SACH ACCH ;
SACL ACCL
LDP #0
ZALH ACCH ;
ADDS ACCL
LST #ST1,ST1_save ; restore status register ST1
LST #ST0,ST0_save ; restore status register ST0
CLRC INTM ;
RET ; return
;-------------------------------------------------------------------------
; Interrupt driven inner loop for PWM
;-------------------------------------------------------------------
sine
KICK_DOG
LDP #0H
SST #ST0,ST0_save ; save status register ST0
SST #ST1,ST1_save ; save status register ST1
LDP #0H ; set DP
MAR *,AR0 ; set ARP
SACH ACCH ;
SACL ACCL ; save ACC
Sph P_hi ;
spl P_lo ; save P register
mpy #1 ; P<=T
spl T_save ; save T register
sar AR0,AR0_save ; save AR0
LDP #04H
lacc count_h,4
or count_l
sacl count_hl
lacc count_hl
SFL
SFL
SFL
ADD #0FFH ;;;;;;;;;;;;;;;;;;;
sacl vf_cen
lacc count_hl
SFL
sacl freqstep
CALL sine_pwm
LDP #0E8H
LACC EVIFRA
SACL EVIFRA
LDP #0H ; set DP
lar AR0, AR0_save ; restore AR0
lt P_lo ; T<=P_lo
mpy #1 ; P (low byte) <=1*P_lo
lph P_hi ; P high byte <=P_hi
lt T_save ; restore T
ZALH ACCH ;
ADDS ACCL ; restore ACC
LDP #0 ; point to B2
LST #ST1,ST1_save ; restore status register ST1
LST #ST0,ST0_save ; restore status register ST0
CLRC INTM
RET ; return
;Generate PWM sine wave
sine_pwm: ;sine interrupt service program
LDP #4h
LACC modreg
add freqstep
sacl modreg
lacc modreg,8
sach table
lacc table
sub #256
bcnd a_wor1,GT
a_wor:
add #256
a_wor1:
add toptable
tblr sineval
lt sineval ;V/F Control
mpy vf_cen ;multi a coeficient: count_hl/60h
pac
sach vf_cmp1
lacc vf_cmp1,6
sacl vf_cmp1
lt vf_cmp1
mpy #normal
pac
sach comparet1,1
lacc comparet1
add #normal
ldp #232
SACL CMPR1
;-----------------------------------------------------------------------------
ldp #4h
lacl table
add #b_phase
sub #256
bcnd b_wor1,GT
b_wor:
add #256
b_wor1:
add toptable
tblr b_sadd
lt b_sadd ;V/F Control
mpy vf_cen ;multi a coeficient: AD_SAMPLE/3FF
pac
sach vf_cmp2
lacc vf_cmp2,6
sacl vf_cmp2
lt vf_cmp2
mpy #normal
pac
sach comparet1,1
lacc comparet1
add #normal
ldp #232
SACL CMPR2
;---------------------------------------------------------------------------------
ldp #4h
lacl table
add #c_phase
sub #256
bcnd c_wor1,GT
c_wor:
add #256
c_wor1:
add toptable
tblr c_sadd
lt c_sadd ;V/F Control
mpy vf_cen ;multi a coeficient: AD_SAMPLE/3FF
pac
sach vf_cmp3
lacc vf_cmp3,6
sacl vf_cmp3
lt vf_cmp3
mpy #normal
pac
sach comparet1,1
lacc comparet1
add #normal
ldp #232
SACL CMPR3
kick_dog
ldp #0E1H ;
lacc PBDATDIR ;
OR #0FFH
NOP
sacl PBDATDIR ;
;-----------------------------------------------------------------------------------
RET
;-----------------------------------------------------------------------------------
; Console Input Routine
_ci:
LDP #0E0H
BIT SCIRXST, 9 ; test RXRDY bit
BCND _ci, NTC ; if RXRDY NEQ 1, loop back on input
KICK_DOG
RET
;------------------------------------------------------------------------------
; Console Output Routine
_co:
LDP #0E0H
BIT SCICTL2, 8 ; test TXRDY bit
BCND _co, NTC ; if TXRDY NEQ 1, loop back on output
KICK_DOG
RET
;-------------------------------------------------------------------------------
;---------------- HEX CONVERT TO BCD SUB_PROGRAM -------------------------------
hex_bcd ;hex to BCD convert sub_program
ldp #04h
lacl add_temp ;temp register
hb_loop
KICK_DOG
ldp #04h
lacl add_temp
sub #0ah ;decide if lagrer then 10
bcnd add_jixu,geq ;>0,jump to add_jixu
add #0ah ;<0,restore
sacl add_var_l ;
b add_ret
add_jixu
sacl add_pn ;
lacl add_cen
add #1h
sacl add_cen
lacl add_pn
sacl add_temp
lacl add_temp
LDP #0E0H ;clear the ERROR flags
BIT SCIRXST,8
BCND hb_loop,NTC
LACL SCICTL1 ;send 0 to the 8th bit of SCIRXST
AND #0FFDFH
SACL SCICTL1
LACL SCICTL1
OR #0020H ;send 1 to the 8th bit of SCIRXST
SACL SCICTL1
b hb_loop
add_ret
lacl add_cen
sacl add_var_h
splk #00h,add_cen
ret
;-----------------------------------------------------------------------------------
DIS ;display sub_program
LDP #0E1H
LACL PCDATDIR
AND #0FF7FH ;iopc7=0
SACL PCDATDIR
LDP #06H
MAR *,AR0
LAR AR0,#03H ;four displayers
MAR *,AR1
LAR AR1,#LED3
DIS1
MAR *,AR1
LACL *-,AR1
ADD #led_table
LDP #06H
TBLR TEMP
LACC TEMP,8
SACL TEMP
LACC TEMP,16
SACH TEMP
MAR *,AR2
LAR AR2,#07H ;eight sects
DIS2
CLRC C ;clear the c flag
NOP
SFL ;arithmatic left shift
SACH TEMP
BCND NEG_DATA,NC ;decide the c equal 0>?
LDP #0E1H ;no
LACL PCDATDIR
OR #040H ;iopc6=1
SACL PCDATDIR
B CONTINUE
NEG_DATA ;c=0
LDP #0E1H
LACL PCDATDIR
AND #0FFBFH ;iopc6=0
SACL PCDATDIR
CONTINUE
NOP
NOP
LACL PCDATDIR
OR #080H ;iopc7=1
SACL PCDATDIR
NOP
NOP
ldp #0e1h
lacc PCDATDIR
AND #0FF7FH ;iopc6=0,generate the clk signal
SACL PCDATDIR
NOP
LDP #06H
LACC TEMP,16
BANZ DIS2
MAR *,AR0
BANZ DIS1
MAR *,AR3
LAR AR3,#00H
LOOP
call delay_time
BANZ LOOP
KICK_DOG
RET
led_table:
.word 003FH ;"0"
.word 0006H ;"1"
.word 005BH ;"2"
.word 004FH ;"3"
.word 0066H ;"4"
.word 006DH ;"5"
.word 007DH ;"6"
.word 0007H ;"7"
.word 007FH ;"8"
.word 006FH ;"9"
.word 0077H ;"A"
.word 007CH ;"B"
.word 0039H ;"C"
.word 005EH ;"D"
.word 0079H ;"E"
.word 0071H ;"F""
delay_time:
KICK_DOG
CLRC SXM
LACC #020H
delay:
SUB #01
RPT #80h
nop
BCND delay,NEQ
NOP
NOP
RET
stable: ;Sine look_up table
.word 0
.word 804
.word 1608
.word 2410
.word 3212
.word 4011
.word 4808
.word 5602
.word 6393
.word 7179
.word 7962
.word 8739
.word 9512
.word 10278
.word 11039
.word 11793
.word 12539
.word 13279
.word 14010
.word 14732
.word 15446
.word 16151
.word 16846
.word 17530
.word 18204
.word 18868
.word 19519
.word 20159
.word 20787
.word 21403
.word 22005
.word 22594
.word 23170
.word 23731
.word 24279
.word 24811
.word 25329
.word 25832
.word 26319
.word 26790
.word 27245
.word 27683
.word 28105
.word 28510
.word 28898
.word 29268
.word 29621
.word 29956
.word 30273
.word 30571
.word 30852
.word 31113
.word 31356
.word 31580
.word 31785
.word 31971
.word 32137
.word 32285
.word 32412
.word 32521
.word 32609
.word 32678
.word 32728
.word 32757
.word 32767
.word 32757
.word 32728
.word 32678
.word 32609
.word 32521
.word 32412
.word 32285
.word 32137
.word 31971
.word 31785
.word 31580
.word 31356
.word 31113
.word 30852
.word 30571
.word 30273
.word 29956
.word 29621
.word 29268
.word 28898
.word 28510
.word 28105
.word 27683
.word 27245
.word 26790
.word 26319
.word 25832
.word 25329
.word 24811
.word 24279
.word 23731
.word 23170
.word 22594
.word 22005
.word 21403
.word 20787
.word 20159
.word 19519
.word 18868
.word 18204
.word 17530
.word 16846
.word 16151
.word 15546
.word 14732
.word 14010
.word 13279
.word 12539
.word 11793
.word 11039
.word 10278
.word 9512
.word 8739
.word 7962
.word 7179
.word 6393
.word 5602
.word 4808
.word 4011
.word 3212
.word 2410
.word 1608
.word 804
.word 0
.word 64731
.word 63927
.word 63125
.word 62323
.word 61524
.word 60727
.word 59933
.word 59142
.word 58356
.word 57573
.word 56796
.word 56023
.word 55257
.word 54496
.word 53742
.word 52996
.word 52256
.word 51525
.word 50803
.word 50089
.word 49384
.word 48689
.word 48005
.word 47331
.word 46667
.word 46016
.word 45376
.word 44748
.word 44132
.word 43530
.word 42941
.word 42365
.word 41804
.word 41256
.word 40724
.word 40206
.word 39703
.word 39216
.word 38745
.word 38290
.word 37852
.word 37430
.word 37025
.word 36637
.word 36267
.word 35914
.word 35579
.word 35262
.word 34964
.word 34683
.word 34422
.word 34179
.word 33955
.word 33750
.word 33564
.word 33398
.word 33250
.word 33123
.word 33014
.word 32926
.word 32857
.word 32807
.word 32778
.word 32768
.word 32778
.word 32807
.word 32857
.word 32926
.word 33014
.word 33123
.word 33250
.word 33398
.word 33564
.word 33750
.word 33955
.word 34179
.word 34422
.word 34683
.word 34964
.word 35262
.word 35579
.word 35914
.word 36267
.word 36637
.word 37025
.word 37430
.word 37852
.word 38290
.word 38745
.word 39216
.word 39703
.word 40206
.word 40724
.word 41256
.word 41804
.word 42365
.word 42941
.word 43530
.word 44132
.word 44748
.word 45376
.word 46016
.word 46667
.word 47331
.word 48005
.word 48689
.word 49384
.word 50089
.word 50803
.word 51525
.word 52256
.word 52996
.word 53742
.word 54496
.word 55257
.word 56023
.word 56796
.word 57573
.word 58356
.word 59142
.word 59933
.word 60727
.word 61524
.word 62323
.word 63125
.word 63927
.word 64731
.word 65535
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -