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

📄 fangbo.asm

📁 初学者入门--- 方波程序 初学者入门--- 方波程序 一个非常经典的初学者入门的程序,上CCS直接运行吧! 看这个程序后
💻 ASM
字号:
;==============================================
; fangbo1.asm
; 利用定时器Timer0在XF脚产生周期2ms的的方波
;==============================================
			.title "fangbo1.asm"
			.mmregs
			.global codestart 			;程序入口
			.global 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 000B<<6 			;TCR第9-6位,可设TDDR一样,也可不设自动加载
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: 				;数据区指针
XF_Flag: 	.word 1 	;当前XF的电平标志,如果XF_Flag=1,则XF=1

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

;改变中断向量表位置
K_IPTR 		.set 0080h 				;指向0080H,默认是FF80
			LDM 	PMST,A
			AND 	#7FH,A 			;保留低7位,清掉高位
			OR 		#K_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 + -