📄 timeciir.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 + -