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

📄 spi.asm

📁 2407asm文件夹包括第8~13章的汇编语言代码及使用说明。有如下子文件夹: &#61548 第8章数字输入输出模块(led); &#61548 第8章数字输入输出模块(LED+KEY);
💻 ASM
字号:
;用户寄存器定义
SPI_DATA	  .usect 	".data0",1		;临时数据寄存器
SPI_FLAG	  .usect 	".data0",1		;SPI 标志位
SPI_CON	  .usect 	".data0",1		;MAX5741的控制字
DP_USER	  .set 	 5 			;用户寄存器存放页指针
;MAX5121 的控制字宏定义
DACOUT	  .set 	0000H		;0
UPINREG	  .set 	07FEH		;
UPDACREG .set 	0FFCH		;1
;(1) 主程序
			.include  "F2407REGS.H" 
			.def  _c_int0
         	.text
_c_int0    
		CALL  SYSINIT		;调系统初始化程序
		CALL  SPI_INIT 		;调SPI初始化程序
LOOP:	CALL  SPI_SEND		;调输出三角波程序
		NOP
WAIT:	LDP	  #DP_USER
		SPLK  #00H, SPI_FLAG 		;清标志
		SPLK  #00H, SPI_DATA		;重置初值
		B	  LOOP
;(2) 系统初始化程序
SYSINIT:
		SETC   INTM
         	CLRC   SXM
       	CLRC   OVM
		CLRC   CNF	
        	LDP    #0E0H
	    	SPLK   #81FEH,SCSR1		;四倍频CLKIN=6M,CLKOUT=24M
         	SPLK   #0E8h,WDCR 		;关看门狗
	    	LDP	   #0
		SPLK   #0001h,IMR  		;使能中断1
		SPLK   #0FFFFh,IFR 		;清中断标志
       	RET
;(3) SPI初始化程序
SPI_INIT:	
		LDP    #DP_PF2
		LACL  MCRB
		OR	  #00014H				;配置SPISIMO和SPICLK引脚为特殊功能方式
		SACL  MCRB	
		LACL  MCRB	 
		AND	  #0FFF7H 			;配置IOPC3为一般的I/O口功能
		SACL  MCRC	  			;CS=IOPC3
		LDP	  #DP_PF1 
		SPLK  #004FH,SPICCR 		;配置SPI寄存器允许初始化,16位数据输出
		SPLK  #0006H,SPICTL		;主机方式,时钟方式为无延时的下降沿
		SPLK  #0002H,SPIBRR		;SPI波特率为6MHZ
		SPLK  #00CFh,SPICCR		;初始化结束,并关闭初始化使能位
		LDP	  #DP_USER
		SPLK  #00H,SPI_DATA		;置发送数据初值
		SPLK  #00H,SPI_FLAG		;SPI_FLAG=00H,执行三角波上升
								;SPI_FLAG=01H,执行三角波下降
		SPLK  #DACOUT,SPI_CON	;送MAX5741的控制字
RET
;(4) 输出三角波程序
SPI_SEND:
SPI_TX:	LDP	  #DP_PF2
		LACL  PCDATDIR
		OR	  #0800H				;IOPC3 脚为输出方式
		AND	  #0FFF7H				;CS= IOPC3=0
		SACL  PCDATDIR
		NOP
		NOP
		LDP	  #DP_USER
		LACC  SPI_DATA
		AND	  #01FFEH 			;S0=0
		OR	  SPI_CON
		SACL  SPI_DATA			;规格化发送的数据
		LDP	  #DP_PF1
		SACL  SPITXBUF			;数据写入到SPI发送缓冲区
XMIT_RDY:BIT  SPISTS,BIT6	     ;等待数据
		BCND  XMIT_RDY,NTC 		;发送完
		NOP
		NOP
		NOP
		LDP	  #DP_PF2
		LACL  PCDATDIR
		OR	  #0808H				;CS=IOPC3=1
		SACL  PCDATDIR			;锁存数据
		LDP	  #DP_USER
		BIT	  SPI_FLAG,BIT0
		BCND  SPI_FALL,TC
		LDP	  #DP_USER  			;三角波上升段程序
		LACC  SPI_DATA
		AND	  #01FFEH
		ADD	  #04H	   			;递增
		SACL  SPI_DATA
		SUB	  #01FFEH
		BCND  SPI_FALL,EQ
		B	  SPI_TX
SPI_FALL:LDP   #DP_USER			;三角波下降段程序
		SPLK  #01, SPI_FLAG
		LACC  SPI_DATA
		AND	  #01FFEH
		SUB	  #04H				;递减
		SACL  SPI_DATA
		BCND  SPI_RET,EQ
		B	  SPI_TX
SPI_RET:RET

⌨️ 快捷键说明

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