📄 pcm.asm
字号:
;PCM编解码器驱动程序,可观察到电话直通。
.mmregs
.def _c_int00
.data
TEMP .usect "TEMP", 20H
TMP .set 6AH
K_SPCR10 .set 0000000010100001b ;串口0的初始化数据
K_SPCR20 .set 0000001011100001b
K_RCR10 .set 0001111100000000b
K_RCR20 .set 0001111100000000b
K_XCR10 .set 0001111100000000b
K_XCR20 .set 0001111100000000b
K_SRGR10 .set 0000000000000111b
K_SRGR20 .set 0011000011111111b
; ;
K_PCR0 .set 0000101000000000b
K_MCR10 .set 0000000000000000b ;PCM编解码器的初始化数据
K_MCR20 .set 0000000000000010b
K_RCERA0 .set 0000000000000001b
K_RCERB0 .set 0000000000000000b
K_XCERA0 .set 0000000000000001b
K_XCERB0 .set 0000000000000000b
SPSA0 .set 38h
McBSP0 .set 39h
DXR10 .set 23h
DXR20 .set 22h
DRR10 .set 21h
DRR20 .set 20h
SPCR10 .set 00h
SPCR20 .set 01h
RCR10 .set 02h
RCR20 .set 03h
XCR10 .set 04h
XCR20 .set 05h
SRGR10 .set 06h
SRGR20 .set 07h
MCR10 .set 08h
MCR20 .set 09h
RCERA0 .set 0ah
RCERB0 .set 0bh
XCERA0 .set 0ch
XCERB0 .set 0dh
PCR0 .set 0Eh
.text
_c_int00
b start
nop
nop
NMI rete
nop
nop
nop
SINT17 .space 4*16
SINT18 .space 4*16
SINT19 .space 4*16
SINT20 .space 4*16
SINT21 .space 4*16
SINT22 .space 4*16
SINT23 .space 4*16
SINT24 .space 4*16
SINT25 .space 4*16
SINT26 .space 4*16
SINT27 .space 4*16
SINT28 .space 4*16
SINT29 .space 4*16
SINT30 .space 4*16
INT0 rsbx intm
rete
nop
nop
INT1 rsbx intm
rete
nop
nop
INT2 rsbx intm
rete
nop
nop
TINT: RETE
nop
nop
nop
RINT0: BD RECIV ;RINT0接收中断向量
nop
nop
nop
XINT0: BD XT ;XINT0发送中断向量
nop
nop
nop
SINT6 .space 4*16
SINT7 .space 4*16
INT3: rete
nop
nop
nop
HPINT: rete
nop
nop
nop
RINT1: RETE
nop
nop
nop
XINT1: RETE
nop
nop
nop
;*************************
start: LD #0,DP
STM #200h,SP
STM #07FFFh,SWWSR
STM #1060h,PMST
STM #3FFFH,IFR
LD #0AH,A
STL A,TMP
PORTW TMP,7H ;选通串口0给PCM编解码器用
STM #4000H,AR0
STM #1000H,AR2
CALL INBSP ;串口0和PCM编解码器初始化
STM #3FFFH,IFR
STM #0010H,IMR ;ENABLE RINT0 INTERRUPT
RSBX INTM ;开中断
;*************************
WAIT: B WAIT
;*************************
INBSP STM #SPCR10,SPSA0
STM #0000h,McBSP0 ;RESET R
NOP
NOP
STM #SPCR20,SPSA0
STM #0000h,McBSP0 ;RESET X
NOP
NOP
STM #RCR10,SPSA0
STM #K_RCR10,McBSP0
NOP
NOP
STM #XCR10,SPSA0
STM #K_XCR10,McBSP0
NOP
NOP
STM #PCR0,SPSA0
STM #K_PCR0,McBSP0
NOP
NOP
STM SRGR10,SPSA0
STM #K_SRGR10,McBSP0
NOP
NOP
STM SRGR20,SPSA0
STM #K_SRGR20,McBSP0
NOP
NOP
STM #RCR20,SPSA0
STM #K_RCR20,McBSP0
NOP
NOP
STM #XCR20,SPSA0
STM #K_XCR20,McBSP0
NOP
NOP
STM #MCR10,SPSA0
STM #K_MCR10,McBSP0
NOP
NOP
STM #MCR20,SPSA0
STM #K_MCR20,McBSP0
NOP
NOP
STM #RCERA0,SPSA0
STM #K_RCERA0,McBSP0
NOP
NOP
STM #RCERB0,SPSA0
STM #K_RCERB0,McBSP0
NOP
NOP
STM #XCERA0,SPSA0
STM #K_XCERA0,McBSP0
NOP
NOP
STM #XCERB0,SPSA0
STM #K_XCERB0,McBSP0
NOP
NOP
STM #SPCR10,SPSA0
STM #K_SPCR10,McBSP0 ;ENBLE R
NOP
NOP
STM #SPCR20,SPSA0
STM #K_SPCR20,McBSP0 ;ENBLE X
NOP
NOP
RET
;*********************************
RECIV: STM #3FFFH,IFR ;串口0的接收中断服务程序
LDM DRR10,A
STLM A,DXR10
STL A,*AR0+
BANZ RECIV1,*AR2-
STM #4000H,AR0
STM #1000H,AR2
RECIV1: RETE
;***************
XT: RETE
;***************
.end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -