⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 digphone.asm

📁 基于DSP的数字电话的实现 汇编代码的在ccs平台上实现
💻 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 + -