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

📄 pwmdac.s

📁 周立功easyarm2200平台第三章试验源码
💻 S
字号:
;****************************************************************************** 
; 文件名: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


⌨️ 快捷键说明

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