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

📄 timeciir.s

📁 基于ARM7的LPC21XX系列的部分汇编源码
💻 S
字号:
;****************************************************************************** 
; 文件名:TIMECIIR.S
; 功能:利用RTC的增量功能进行1S的定时,当定时时间到时,取反蜂鸣器控制I/O。
; 说明:将跳线器JP7短接。
;****************************************************************************** 
			INCLUDE		LPC2294.INC
			EXPORT  	MAIN
			
RTC_BASE    EQU		0xE0024000
				
BEEPCON  	EQU		0x00000080				; P0.7引脚控制B1,低电平蜂鸣

FPCLK		EQU		11059200

			AREA   	TIMECIIRC,CODE,READONLY 								
		
MAIN 		LDR		R0,=PINSEL0				
			MOV		R1,#0x00000000			
			STR		R1,[R0]					; 设置管脚连接
			LDR		R0,=IO0DIR				
			LDR		R1,=BEEPCON
			STR		R1,[R0]	
			BL		SYSCLK_INI				; 设置系统时钟
			
			BL		RTC_INI
			
MAIN_LOOP	LDR		R0,=IO0SET
			MOV		R1,#BEEPCON
			STR		R1,[R0]					; IO0SET=BEEPCON
			
			LDR		R0,=ILR
WAIT1		LDR		R1,[R0]
			ANDS	R1,R1,#0x01
			BEQ		WAIT1					; 等待RTC增量中断标志
			MOV		R1,#0x01
			STR		R1,[R0]					; ILR=0x01,清除中断标志
			
			LDR		R0,=IO0CLR
			MOV		R1,#BEEPCON
			STR		R1,[R0]					; IO0SET=BEEPCON
			
			LDR		R0,=ILR
WAIT2		LDR		R1,[R0]
			ANDS	R1,R1,#0x01
			BEQ		WAIT2					; 等待RTC增量中断标志
			MOV		R1,#0x01
			STR		R1,[R0]					; ILR=0x01,清除中断标志			
			
			B		MAIN_LOOP
			

;******************************************************************************		
; 名称:RTC_INI
; 功能:初始化实时时钟,并启动。
; 入口参数:无
; 出口参数:无
; 占用资源:R0、R1		
;******************************************************************************
RTC_INI
			LDR		R0,=RTC_BASE
			
			; 设置基准时钟分频器(PREINT、PREFRAC)
			LDR		R1,=FPCLK/32768-1
			STR		R1,[R0,#0x80]			
			LDR		R1,=FPCLK-(FPCLK/32768)*32768

			; 初始化时钟值
			LDR		R1,=2004
			STR		R1,[R0,#0x3C] 			; YEAR=2004
			MOV		R1,#2
			STR		R1,[R0,#0x38]			; MONTH=2
			MOV		R1,#20
			STR		R1,[R0,#0x2C]			; DOM=20
  			MOV		R1,#0x01
  			STR		R1,[R0,#0x0C]			; CIIR=0x01,设置秒值的增量产生一次中断
  			MOV		R1,#0x01
  			STR		R1,[R0,#0x08]			; CCR=0x01,启动RTC

			MOV		PC,LR 	


;******************************************************************************		
; 名称: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 + -