?? digphone.asm
字號:
;數字電話程序,錄音(不加密),錄音(加密),放(解密)
.mmregs
.def _c_int00
STACK: .usect "STACK",100
to_flag .usect "vars",1
to_cout .usect "vars",1
TMP .set 69h
TVAL .set 16384 ;定時常數(100ms)
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編解碼芯片TP3067的初始化數據
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
SWCR .set 2BH
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: BD TIMER
nop
nop
nop
RINT0: BD RECIV
nop
nop
nop
XINT0: BD XT
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 #1020h,PMST
STM #3FFFH,IFR
SSBX INTM
LD #0AH,A
STL A,TMP ;設置串口0的幀頻和同步時鐘由DSP產生
PORTW TMP,7H
ST #0,*(to_flag)
ST #10,*(to_cout)
STM #3001H,AR1 ;通過鍵盤選擇菜單,確定選項類型數據寫入3001H中
CALL INBSP
STM #4000H,AR0 ;存放錄音的存儲器起始地起址
STM #8000H,AR2 ;存放錄音的存儲器單元個數
LD #TIMES,A ;設置定時器
READA TIM
READA PRD
STM #269h,TCR
STM #18H,IMR ;開定時器和串口0的接收中斷
NOP
NOP
NOP
NOP
NOP
NOP
STM #3FFFH,IFR
NOP
NOP
NOP
NOP
NOP
NOP
RSBX INTM
;*************************
WAIT: IDLE 1
CMPM *(to_flag),#0 ; 接收等待
BC WAIT,TC
STM #4000H,AR0
STM #8000H,AR2
SSBX INTM
STM #0028H,IMR ;開定時器和串口0的發送中斷
NOP
NOP
NOP
NOP
NOP
NOP
STM #3FFFH,IFR
NOP
NOP
NOP
NOP
NOP
NOP
RSBX INTM
WAIT1 IDLE 1
CMPM *(to_flag),#1 ;發送等待
BC WAIT1,TC
STM #4000H,AR0
STM #8000H,AR2
SSBX INTM
STM #0018H,IMR ;開定時器和串口0的接收中斷
NOP
NOP
NOP
NOP
NOP
NOP
STM #3FFFH,IFR
NOP
NOP
NOP
NOP
NOP
NOP
RSBX INTM
B WAIT
;*************************
RECIV: ;SSBX INTM
;PSHM ST1 ;串口0的接收中斷服務程序
;PSHM ST0
LDM DRR10,A
CMPM *AR1,#0DH
BC RECIV1,NTC
LD A,B ;加密
RSBX C
ROL A
ROL A
ROL A
ROL A
ROR B
ROR B
ROR B
ROR B
OR B,A
AND #0FFH,A
STM #1,AR7 ;加密標志
B RECIV2
RECIV1: CMPM *AR1,#0CH
BC RECIV3,NTC
STM #0,AR7 ;不加密標志
RECIV2 STLM A,DXR10
STL A,*AR0+
BANZ RECIV3,*AR2-
STM #4000H,AR0
STM #8000H,AR2
RECIV3 ;POPM ST0
;POPM ST1
;RSBX INTM
RETE
;***************
XT: ;SSBX INTM
;PSHM ST1 ;串口0的發送中斷服務程序
;PSHM ST0
LD *AR0+,A
CMPM *AR1,#0EH
BC XT2,NTC
CMPM AR7,#1
BC XT1,NTC ;不解密
LD A,B ;解密
RSBX C
ROR A
ROR A
ROR A
ROR A
ROL B
ROL B
ROL B
ROL B
OR B,A
XT1: STLM A,DXR10
BANZ XT2,*AR2-
STM #4000H,AR0
STM #8000H,AR2
XT2: ;POPM ST0
;POPM ST1
;RSBX INTM
RETE
;**********************
TIMER ;SSBX INTM
;PSHM ST1 ;定時器的中斷服務程序,每秒采樣菜單的選擇情況
;PSHM ST0
ADDM #-1,*(to_cout)
CMPM *(to_cout),#0
BC TIM3,NTC ;不到一秒
ST #10,*(to_cout)
CMPM *AR1,#0CH ;(3001H)=0CH時為錄(不加密)
BC TIM1,TC
CMPM *AR1,#0DH ;(3001H)=0DH時為錄(加密)
BC TIM2,NTC
TIM1 ST #0,*(to_flag) ;置接收標志
B TIM3
TIM2 CMPM *AR1,#0EH ;(3001H)=0EH時為放(解密)
BC TIM3,NTC
ST #1,*(to_flag) ;置發送標志
TIM3 ;POPM ST0
;POPM ST1
;RSBX INTM
RETE
;******************************
INBSP STM #SPCR10,SPSA0 ;串口0和PCM編解碼器的初始化程序
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
;*************************
.text
TIMES .int TVAL
;*************************
.end
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -