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

📄 timer.asm

📁 dsp芯片TMS320C5416实验程序
💻 ASM
字号:
**************************************************************************
*	timer.asm
*	利用定时器timer0在XF脚产生周期2ms的的方波
**************************************************************************
			.title	"timer.asm"
			.mmregs
			.def	CodeEntry			;程序入口
			.def 	Tint0_ISR			;Timer0中断服务程序
										
STACK		.usect	"STACK",10H			;分配堆栈空间	

;设定定时器0控制寄存器的内容
K_TCR_SOFT  .set	0b<<11				;TCR第11位soft=0
K_TCR_FREE  .set	0b<<10				;TCR第10位free=0
K_TCR_PSC	.set	0b<<6				;TCR第9-6位,可不设自动加载
K_TCR_TRB	.set	1b<<5				;TCR第5位TRB=1此位置1,PSC会自动加载
K_TCR_TSS	.set	0b<<4				;TCR第4位TSS=0
K_TCR_TDDR	.set	1001b<<0			;TCR第3-0位TDDR=1001b
K_TCR		.set	K_TCR_SOFT|K_TCR_FREE|K_TCR_PSC|K_TCR_TRB|K_TCR_TSS|K_TCR_TDDR
K_TCR_STOP  .set 	1b<<4				;TSS=1时计数器停止
			
			.data
DATA_DP:								;数据区指针
Flag:		.word	1					;当前XF的电平标志,如果Flag=1,则XF=1

**************************************************************************
*主程序:
**************************************************************************			
			.text
CodeEntry:
			STM		#STACK+10H,SP		;设堆栈指针SP
			LD 		#DATA_DP,DP			;设数据地址DP
			STM		#Flag,AR2			;AR指向XF标志

			;设置中断向量表位置
V_IPTR		.set	0080h				;指向0080H,默认是FF80
			LDM		PMST,A
			AND		#7FH,A				;保留低7位,清掉高位
			OR		#V_IPTR,A			;
			STLM 	A,PMST

**************************************************************************
*初始化定时器0,f=50MHz,定时2ms时:
* 
*根据定时器长度计算公式:Tt=T*(1+TDDR)*(1+PRD)
*给定TDDR=9,PRD=9999,CLKOUT主频f=40MHz,T=25ns
*Tt=20ns*(1+9)*(1+9999)=2000us=2ms
*f=100Mhz,定时最大是:10ns*2^4*2^16=10ms,
**************************************************************************

PERIOD		.set 	9999				;定义计数周期
			STM		K_TCR_STOP,TCR		;停止计数器0
			STM		#PERIOD,TIM			;可设成跟PRD一样,也可不设自动加载
			STM		#PERIOD,PRD			;设定计数周期
			STM		#K_TCR,TCR 			;开始Timer0
			stm 	#0008h,IMR			;允许Timer0中断
			STM		#0008h,IFR			;清除挂起的中断
			RSBX 	INTM				;开中断
end:		NOP
			B		end				

**************************************************************************
*Timer0中断服务程序:TIN0_ISR
**************************************************************************
Tint0_ISR:		
			PSHM	ST0 				;本中断程序影响TC,位于ST0中

										;判断当前XF状态并作电平变化
			BITF	*AR2,#1				;IF XF_Flag=1 then TC=1  else TC=0
			BC		ResetXF,TC			;IF	TC=1 then XF=0 else XF=1
SetXF:		
			SSBX	XF					;置XF为高电平
			ST		#1,*AR2				;相应修改标志
			B		Next
ResetXF:
			RSBX	XF					;置XF为高电平
			ST		#0,*AR2				;相应修改标志
Next:
			POPM	ST0
			RETE		
			.end	

⌨️ 快捷键说明

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