📄 ad50.asm
字号:
;
; 版权归解放军理工大学通信工程学院所有
;
; ======== AD50.asm ========
; 串口测试程序
;
.title "AD50.asm"
.mmregs
; 定义中断标号
.def BRINT0_ISR
.ref fir_task
.ref cf_ad50
SPSA0 .set 38h
SPSD0 .set 39h
DXR10 .set 23h
DRR10 .set 21h
.data
temp .word 0
data_master .word 0 ;用于保存主数据
data_slave .word 0 ;用于保存从数据
.text
;-------------------------------------------
; 串口中断服务程序
;-------------------------------------------
.text
BRINT0_ISR:
; 压栈
PSHM AG
PSHM AH
PSHM AL
PSHM BG
PSHM BH
PSHM BL
PSHM AR0
PSHM AR1
PSHM AR2
PSHM AR3
PSHM AR4
PSHM AR5
;-------------------------------------------
; 配置AD50寄存器
;-------------------------------------------
RSBX CPL
NOP
NOP
NOP
NOP
; 读取配置次数
LD *(cf_ad50),A
AND #0fh,0,A,A
; 当配置计数减为0,配置结束
BC #tr_data,AEQ
pconf_ad50:
ADD #cf_ad50,0,A,A
STLM A,AR4
ADDM 0ffffh,*(cf_ad50)
NOP
NOP
LD *AR4,A
NOP
NOP
STLM A,DXR10
B #cf_end
;-------------------------------------------
; 配置结束,进行正常通信
;-------------------------------------------
tr_data:
;判断主从模式
LDM DRR10,A
;将直流偏置减掉
SUB #0x360e,A
;SUB #6a6eh,a
NOP
NOP
STL A,*(temp) ;zx.03.10.21
ANDM #1,*(temp) ;zx.03.10.21
NOP ;zx.03.10.21
NOP ;zx.03.10.21
CMPM *(temp),#1 ;zx.03.10.21
BC slavemode,TC ;zx.03.10.21
STL A,*(data_slave)
NOP
NOP
LD *(data_master),A
;进行FIR滤波
FIR_sub:
NOP
CALL fir_task
NOP
SFTA A,-16
NOP
NOP
AND #0xfffe,A
NOP
STLM A,DXR10
B cf_end
slavemode:
SUB #0x1,A
STL A,*(data_master)
NOP
NOP
LD *(data_slave),A
STLM A,DXR10
NOP
B cf_end
cf_end:
; 出栈
POPM AR5
POPM AR4
POPM AR3
POPM AR2
POPM AR1
POPM AR0
POPM BL
POPM BH
POPM BG
POPM AL
POPM AH
POPM AG
POPM ST1
POPM ST0
RETE
.end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -