📄 dasquare.asm
字号:
;/******************************************************************************/
;generate 1khz square wave
;/******************************************************************************/
leddata .usect ".data0",1
SQUARE .set 0
.include "F2407REGS.H" ;引用头部文件
.def _c_int0
;(1)建立中断向量表
.sect ".vectors" ;定义主向量段
RSVECT B _c_int0 ;PM 0 复位向量1
INT1 B PHANTOM ;PM 2 中断优先级 14
INT2 B GISR2 ;PM 4 中断优先级2 5
INT3 B PHANTOM ;PM 6 中断优先级 36
INT4 B PHANTOM ;PM 8 中断优先级 47
INT5 B PHANTOM ; A 中断优先级 58
INT6 B PHANTOM ;PM C 中断优先级 69
RESERVED B PHANTOM ;PM E (保留位)10
SW_INT8 B PHANTOM ;PM 10 用户定义软件中断 -
INT7 B PHANTOM
INT8 B PHANTOM
INT9 B PHANTOM
INTa B PHANTOM
INTb B PHANTOM
INTc B PHANTOM
INTd B PHANTOM
INTe B PHANTOM
INTf B PHANTOM
SW_INT31 B PHANTOM ;PM 3E 用户定义软件中断 -
;中断子向量入口定义pvecs
.sect ".pvecs" ;定义子向量段
PVECTORS B PHANTOM ;保留向量地址偏移量0000h
B PHANTOM ;1
B PHANTOM ;2
B PHANTOM ;3
B PHANTOM ;4
B PHANTOM ;5
B PHANTOM ;6
B PHANTOM ;7
B PHANTOM ;8
B PHANTOM ;9
B PHANTOM ;a
B PHANTOM ;b
B PHANTOM ;c
B PHANTOM ;d
B PHANTOM ;e
B PHANTOM ;f
B PHANTOM ;10
B PHANTOM ;11
B PHANTOM ;12
B PHANTOM ;13
B PHANTOM ;14
B PHANTOM ;15
B PHANTOM ;16
B PHANTOM ;17
B PHANTOM ;18
B PHANTOM ;19
B PHANTOM ;1a
B PHANTOM ;1b
B PHANTOM ;1c
B PHANTOM ;1d
B PHANTOM ;1e
B PHANTOM ;1f
B PHANTOM ;20
B PHANTOM ;21
B PHANTOM ;22
B PHANTOM ;23
B PHANTOM ;24
B PHANTOM ;25
B PHANTOM ;26
B T1PINT_ISR ;27
B PHANTOM ;28
B PHANTOM ;29
B PHANTOM ;2A
B PHANTOM ;2B
B PHANTOM ;2C
B PHANTOM ;2D
B PHANTOM ;2E
B PHANTOM ;2F
B PHANTOM ;30H
;(2)主程序
.text
_c_int0 CALL SYSINIT ;系统初始化程序
CALL T1_SETUP
CALL IOPE_SETUP
LDP #200H>>7
SPLK #0000H,SQUARE
SPLK #0000H,SQUARE+1
SPLK #0080H,SQUARE+2
WAIT: B WAIT
;ENABLE lvc245 AND DIRECTION
IOPF_TODSP: LDP #MCRC>>7
LACL MCRC
AND #0FCFFH
SACL MCRC
LACL PFDATDIR
OR #0300H
AND #0FFFCH
SACL PFDATDIR
NOP
RET
;ENABLE LVC245 FROM DSP TO LED
IOPF_TOLED: LDP #MCRC>>7
LACL MCRC
AND #0FCFFH
SACL MCRC
LACL PFDATDIR
OR #0302H
AND #0FFFEH
SACL PFDATDIR
NOP
RET
IOPE_SETUP: LDP #MCRC>>7 ;IOPE7为output low
LACL MCRC
AND #0FF7FH
SACL MCRC
LACL PEDATDIR
OR #8000H
AND #0FF7FH
SACL PEDATDIR
RET
;(3)系统初始化程序
SYSINIT:
SETC INTM
CLRC SXM
CLRC OVM
CLRC CNF
LDP #0E0H
SPLK #86FEH,SCSR1 ;CLKIN=10M,CLKOUT=10M
SPLK #0E8h,WDCR
LDP #0
SPLK #02h,IMR ;开中断优先级5
SPLK #0FFFFh,IFR
NOP ;清中断标志
;------------
;---------
NOP
NOP
RET
T1_SETUP: LDP #DP_EVA
SPLK #80H,EVAIMRA
SPLK #0FFFFH,EVAIFRA
SPLK #0,GPTCONA
SPLK #2710H>>7,T1PR ;c350h produce 0.64s
;0f42H=50MS
SPLK #0,T1CNT
SPLK #104CH,T1CON ;10M/64=
CLRC INTM
RET
;(5)中断程序
GISR2: ;优先级INT5中断人口
LDP #0E0H
LACC PIVR,1
ADD #PVECTORS
BACC
T1PINT_ISR: LDP #200H>>7
BIT SQUARE,15
BCND HIGH,NTC
OUT SQUARE+1,300H ;generate square wave!
B FINISH
HIGH: OUT SQUARE+2,300H
FINISH: LDP #0200H>>7
LACL SQUARE
ADD #01H
SACL SQUARE
CALL T1_SETUP
GISR_RET CLRC INTM ;开总中断,因为一进中断就自动关闭总中断
RET
;(6)假中断程序
PHANTOM
KICK_DOG ;复位看门狗
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -