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

📄 main.s54

📁 TMS320C54系列在CCS3.1 下实验教程
💻 S54
字号:
;******************************************************************************
;               		SJTU DSP Tech. Center
;        Copyright (c) 2003 SJTU DSP Tech. Center. All Rights Reserved.
;
;  Description:
;  		TMS320C54x Program for Students Experiment
;
;  History:
;		Date		Authors			
;		2003/08/07	Zheng Yigang	
;******************************************************************************
	.mmregs

	.include "uartasm.h54"
	
	.bss 	databuffer, 100
	.bss 	dataready, 1
	.bss	numberofdata, 1
	.bss 	temp, 1
	
	
;==============================================================================
;==============================================================================
;	begin of text															===
;==============================================================================
;==============================================================================
	.text
main:
	stm		#STACK_ADDR, SP
	;initialtion of dsp and rs232
	call	DSP_Init
	call    UART_Init
	
	rsbx	INTM 			;open interrupt
	
	st		#0, *(dataready)
dead_loop:
	stm 	#dataready, AR2
	bitf  	*AR2, #1
	bc 		continue, NTC   ;判断是否有数据在缓冲区
	
	st 		#0, *(dataready);先恢复标志位
	
	call 	light_led 		;亮指示灯
	call	write_out 		;将缓冲区的数据全部读出
	
continue:
	b 		dead_loop
	

;===================================================================
;===================================================================
;	to light leds for a few seconds                                =
;===================================================================
;===================================================================
light_led:
	;when begin to read data, light led once
	stm 	#temp, AR3
	portr	ADDR_CNTL1, *AR3							
	orm		#0x07, *AR3									
	portw	*AR3, ADDR_CNTL1							
	;delay some time,then disable led;							
	stm		#500, AR2							
delay2_out_loop:						
	stm		#1000, BRC
	rptb	delay2_inner_loop-1
	rpt 	#100-1
	nop
delay2_inner_loop:
	banz	delay2_out_loop, *AR2-
	;end of delay
	portr	ADDR_CNTL1, *AR3
	andm	#0xF8, *AR3
	portw	*AR3, ADDR_CNTL1
	ret
	;end of light_led

;===================================================================
;===================================================================
;	to write out all data in FIFO								====
;===================================================================
;===================================================================	
write_out:
	stm		#databuffer, AR2
	rpt 	*(numberofdata)
	portw 	*AR2+, ADDR_THR
	ret
	;end of write_out	

;===========================================================
;===========================================================
;	RS232_ISR											====
;===========================================================
;===========================================================
RS232_ISR: 
	pshm 	AR2
	pshm 	AR3
	pshm 	AR4
	stm 	#temp, AR3
	portr 	ADDR_IIR, *AR3
	bitf	*AR3, #0x04 	;判断寄存器IIR的第二位是否为1
	bc		outint, NTC
	
	bitf 	*AR3, #0x02 	;判断寄存器IIR的第1位是否为0
	bc 		fifoarrive, NTC ;IIR_bit2=1,bit1=0,表明是接受数据就绪中断,开始读数据
	portr 	ADDR_LSR, *AR3  ;否则,是线路状态中断,不读数据,读LSR,然后退出中断
	b 		outint
	
fifoarrive:
	st	 	#0x01, *(dataready)
	
	stm		#databuffer, AR2
	stm 	#0, AR4
	 
read_all:
	portr 	ADDR_RBR, *AR2+
	portr	ADDR_LSR, *AR3
	
	mar 	*AR4+		    ;记下读取数据的个数
	
	bitf	*AR3, #0x01
	bc		read_all, TC 	;判断数据有没有读完
	
	mar 	*AR4-
	mvmd 	AR4, numberofdata		;存放的值比实际个数少1
	
outint:
	popm 	AR4
	popm 	AR3
	popm 	AR2
	popm	ST1
	popm	ST0
	rete
		
;===================================================================
;===================================================================
	;vector table												====
;===================================================================
;===================================================================
	.sect "vectors"
int_reset:
	b		main		
	nop
	nop
   	.space	64*16

int_int1:
	bd		RS232_ISR	;进入中断程序
	pshm	ST0
	pshm	ST1
	.space  56*16

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -