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

📄 sysreg.asm

📁 利用C语言和汇编的混合编程在DSP平台上实现定时器
💻 ASM
字号:
*********************************************************************************
*  SYSREG.ASM	v1.00								                            *
*  版权(c) 	2003-		北京合众达电子技术有限责任公司			                *
*  设计者:	段立锋								                                *
*********************************************************************************
		.file	"sysreg.asm"
		.c_mode
		.mmregs
		

		.copy	"vc54x.inc"	; VC5402 Memory-Mapped	Register Declaration
		.copy   "dec5416.inc" ; SEED DEC5416 Memory-Mapped Register Declaration
		
		.def _sys_set
		.def _memory_set
		.def _sysreg_read
		.def _sysint_enable
		.def _sysint_disable
		.def _sys_clk
		.def _sys_wait
		
		.ref _sys_statbuff
		.text
*********************************************************************************
*	系统设置操作函数                                                            *
*********************************************************************************
*********************************************************************************
*																				*
* 函数定义:void _sys_set(uint portdata)					  					*
* 功    能:系统设置                											*
*																				*
* 入口参数:	A---- 要写入的数据												*
* 出口参数:	无																	*
* 资源使用:AR0,B	       														*
*																				*
*********************************************************************************
_sys_set:			STM #0,AH
					STM #_sys_statbuff,AR0
					STL A,*AR0(SYSB0)			    ;保存要写入的数据
					PORTW *AR0(SYSB0),syscntl		;将数据写入到第一个寄存器
					.if	__far_mode
					FRET
					.else
					RET
					.endif
*********************************************************************************
*																				*
* 函数定义:void _memory_set(uint portdata)					  					*
* 功    能:存贮区设置                											*
*																				*
* 入口参数:	A---- 要写入的数据												*
* 出口参数:无																	*
* 资源使用:AR0,B	       														*
*																				*
*********************************************************************************
_memory_set:        STM #0,AH
					STM #_sys_statbuff,AR0
					STL A,*AR0(SYSB0)			    ;保存要写入的数据
					PORTW *AR0(SYSB0),memcntl		;将数据写入到第二个寄存器
			       .if	__far_mode
					FRET
					.else
					RET
					.endif
*********************************************************************************
*																				*
* 函数定义:uint _sysint_read(uint port)  				  						*
* 功    能:串口初始化                											*
*																				*
* 入口参数:	A---- port:IO空间寄存器的地址									*
* 出口参数:		A---- 回读值													*
* 资源使用:AR0,B	       														*
*																				*
*********************************************************************************
_sysreg_read:		STM #0,AH
					STM #_sys_statbuff,AR0
					BC sysstat,ANEQ 		;判断是哪个寄存器
					PORTR sysstat0,*AR0(SYSB1)		;读第一个寄存器
					LD *AR0(SYSB1),A          		;读回值写入寄存器A,做为返回值
					B sysregrexit
					
sysstat:			PORTR sysstat1,*AR0(SYSB1)	;读第二个寄存器
					LD *AR0(SYSB1),A          		;读回值写入寄存器A,做为返回值

sysregrexit:        .if	__far_mode
					FRET
					.else
					RET
					.endif
*********************************************************************************
*																				*
* 函数定义:uint _sysint_enable(uint setdata) 				  						*
* 功    能:串口初始化                											*
*																				*
* 入口参数:	A---- port:IO空间寄存器的地址									*
* 出口参数:		A---- 回读值													*
* 资源使用:B	       															*
*																				*
*********************************************************************************
_sysint_enable:		STM #0,AH
					STM #0,BH
					LDM IMR,B
					nop
					nop
					nop
					OR B,A
					nop
					nop
					nop
					STLM A,IMR
					nop
					nop
					.if	__far_mode
					FRET
					.else
					RET
					.endif
*********************************************************************************
*																				*
* 函数定义:uint _sysint_disable(uint setdata)  		  						*
* 功    能:串口初始化                											*
*																				*
* 入口参数:	A---- port:IO空间寄存器的地址									*
* 出口参数:		A---- 回读值													*
* 资源使用:B	       															*
*																				*
*********************************************************************************						  					
_sysint_disable:	STM #0,AH
					STM #0,BH
					LDM IMR,B
					AND B,A
					STL A,IMR
					.if	__far_mode
					FRET
					.else
					RET
					.endif
*********************************************************************************
*																				*
* 函数定义:uint _sysint_clk(uint setdata)  		  						*
* 功    能:串口初始化                											*
*																				*
* 入口参数:	A---- port:IO空间寄存器的地址									*
* 出口参数:		A---- 回读值													*
* 资源使用:B	       															*
*																				*
*********************************************************************************
_sys_clk:			STM #0,AH
					STM #0B,CLKMD                     ;switch to DIV mode
TstSatu:    		LDM CLKMD,B              
            		AND #01B,B                        ;poll STATUS bit
            		BC TstSatu,BNEQ
            		STLM A,CLKMD                       ;switch to PLL X 10 mode
PllSatu:    		LDM CLKMD,B              
            		AND #01B,B                        ;poll STATUS bit
            		BC PllSatu,BEQ            		
					.if	__far_mode
					FRET
					.else
					RET
					.endif
*********************************************************************************
*																				*
* 函数定义:uint _sys_wait(uint set data)  				                     	*
* 功    能:串口初始化                											*
*																				*
* 入口参数:	A---- port:IO空间寄存器的地址									*
* 出口参数:		A---- 回读值													*
* 资源使用:B	       															*
*																				*
*********************************************************************************
_sys_wait:			STM #0,AH
					STLM A,BL
					STM #0,BH
					.if	__far_mode
					LD	2H,A				;获取要写入寄存器的数据
					.else
					LD	1H,A
					.endif
					STLM A,SWCR
					STLM B,SWWSR
					.if	__far_mode
					FRET
					.else
					RET
					.endif
					.end					
						
             					             					

⌨️ 快捷键说明

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