ARM专辑-152M-pdf.zip

源代码在线查看: pwmdac.s

软件大小: 74715 K
上传用户: QQ
关键词: M-pdf ARM 152 zip
下载地址: 免注册下载 普通下载 VIP

相关代码

				;****************************************************************************** 
				; 文件名:PWMDAC.S
				; 功能:使用PWM6输出PWM信号,通过滤波电路实现DAC转换。
				; 说明:将跳线器JP2短接,JP3_RXD1断开。使用示波器观察测试点PWM和PWMDAC。
				;****************************************************************************** 
							INCLUDE		LPC2294.INC
							EXPORT  	MAIN
							
				PWM_BASE        	EQU	 	0xE0014000			
							
				; PWM周期及占空比设置值 
				CYCLE_DATA			EQU		2000
				DUTY_CYCLE_DATA		EQU		1000				
				
							AREA   	PWMDACC,CODE,READONLY 	
							ENTRY							
						
				MAIN 		MOV		R7,#0xFF0				; 系统上电延时
				DELAY_L1	SUBS	R7,R7,#1
							BNE		DELAY_L1
							
							LDR		R0,=PINSEL0				
							MOV		R1,#0x00080000			
							STR		R1,[R0]					; 设置PWM6连接到P0.9管脚
							BL		SYSCLK_INI				; 设置系统时钟
							
							; 设置PWM输出
							LDR		R0,=PWM_BASE
							MOV		R1,#0x00
							STR		R1,[R0,#0x0C]			; PWMPR=0x00,不分频,计数频率为Fpclk			
							MOV		R1,#0x02
							STR		R1,[R0,#0x14]			; PWMMCR=0x02,设置PWMMR0匹配时复位PWMTC			
				   			LDR		R1,=CYCLE_DATA			
				   			STR		R1,[R0,#0x18]			; PWMMR0=CYCLE_DATA,设置PWM周期
				   			LDR		R1,=DUTY_CYCLE_DATA
				   			STR		R1,[R0,#0x48]			; PWMMR6=DUTY_CYCLE_DATA,设置PWM占空比
				   
				   			MOV		R1,#0x41
				   			STR		R1,[R0,#0x50]			; PWMLER=0x41,PWMMR0、PWMMR6锁存
				   			MOV		R1,#0x4000
				   			STR		R1,[R0,#0x4C]			; PWMPCR=0x4000,允许PWM6输出,单边PWM
				   			MOV		R1,#0x09
				   			STR		R1,[R0,#0x04]			; PWMTCR=0x09,启动定时器,PWM使能
				   			
				HALT		B		HALT	
				 
				
				;******************************************************************************		
				; 名称:SYSCLK_INI
				; 功能:设置系统时钟。(M值为4,P值为2)
				; 入口参数:无
				; 出口参数:无
				; 占用资源:R0、R1		
				;******************************************************************************
				SYSCLK_INI	
							LDR		R0,=VPBDIV
							MOV		R1,#0x00
							STR		R1,[R0]					; VPBDIV=0x00
							
							LDR		R0,=PLLCFG
							MOV		R1,#0x23
							STR		R1,[R0]					; PLLCFG=0x23,设置M值为4,P值为2
							LDR		R0,=PLLCON
							MOV		R1,#0x01
							STR		R1,[R0]					; PLLCON=0x01
							LDR		R0,=PLLFEED
							MOV		R1,#0xAA
							STR		R1,[R0]					; PLLFEED=0xAA
							MOV		R1,#0x55
							STR		R1,[R0]					; PLLFEED=0x55
				WAIT_OK		LDR		R0,=PLLSTAT				
							LDR		R1,[R0]
							ANDS	R1,R1,#0x0400
							BEQ		WAIT_OK					; 等待PLL锁定
							
							LDR		R0,=PLLCON
							MOV		R1,#0x03
							STR		R1,[R0]
							LDR		R0,=PLLFEED
							MOV		R1,#0xAA
							STR		R1,[R0]
							MOV		R1,#0x55
							STR		R1,[R0]	
							
							MOV		PC,LR		  			
							
							END
				
				
							

相关资源