微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于MSP430F11X的低功耗低成本实时时钟

基于MSP430F11X的低功耗低成本实时时钟

时间:02-22 来源:互联网 点击:

模拟比较器)、最小128B的RAM、最小2Kb的ROM和最少14个脚通用 I/O口。很明显MSP430能提供其它专用RTC所无法比拟的灵活性。

除此之外,定时器A模块能提供斜率A/D转换、PWM输出和工作速率高达115200波特率的UART。看门狗定时器也能作为一个简单的定时器,并且通用I/O口和所有外围设备具有可扩展的中断能力。

软件设计

RTC的应用程序代码相当简单,包括一个初始化子程序、一个主循环、一个计算时、分、秒的时钟计数子程序和一个处理来自定时器A的1s中断的中断服务子程序。

初始化子程序可初始化MSP430的的不同部分。看门狗定时器被禁止,定时器A模块被配置为可连续从0数到32768,每次到达32768时便给出一个中断。基本时钟模块也被设置。

主循环是一个无穷循环,每当定时器A发出一个中断时,它便调用时钟计数子程序,否则将CPU置于休眠方式。当CPU休眠时,定时器A继续计数。

定时器A中断服务程序(ISR)处理状态寄存器(SR)位,该位在进入ISR之前被压入堆栈。这可使CPU在刚从ISR返回时处于有效方式,而不是休眠方式。ISR也可清零定时器A中断标志。

时钟计数子程序将每一个定时器A中断计为1秒。

源程序

STARTMOV#Stack,SP
CALL#Setup;初始化设置
MainloopBIS#LPM3,SR;CPU进入低功耗模式3
CALL#Clock;中断处理后进入时钟计算
JMPMainloop;再次进入省电模式
ClockSETC;设进位位
DADC.bSECOND;秒加1
CMP.b#060d,SECOND;判断是否满1分钟
JLOClockend;若不满则跳出
CLR.bSECOND;清空秒计数器
DADC.bMINUTE;分加1
CMP.b#60d,MINUTE;判断是否满1小时
JLOClockend;若不满则跳出
CLR.bMINUTE;清空分钟计数器
DADC.bHOUR;小时加1
CMP.b#024d,HOUR;判断是否满24小时
JLOClockend;若不满则跳出
CLR.bHOUR;清空小时计数器
ClockendRET
;设置模块和控制寄存器
SetupMOV#WDTPW+WDTHOLD,WDTCTL;禁止看门狗
MOV.b#08Ch,BCSCTL1;设置振荡器和时钟控制寄存器
MOV.b#000h,BCSCTL2;选择DCOCLK为MCLK时钟源
SetupTAMOV#0106h,TACTL;设置定时器A控制寄存器
MOV#CCRE0,CCTL0;中断使能
MOV#8000h,CCR0;设置时间间隔
BIS#10h,TACTL;启动TA,开始增计数模式
ClearRAMMOV.b#00h,SECOND;清空秒、分、时计数器
MOV.b#00h,MINUTE
MOV.b#00h,HOUR
EINT ;中断使能
RET

定时器A中断服务程序(ISR)
TAintBIC#SCG0+CPUOFF,0 (SP);处理状态寄存器(SR)位
BIC#TAIFG,TACTL;清零定时器A中断标志
RETI

结语

整个系统结构简单,可扩展性强,成本低(一片'F111才10多元),另外系统在大多数时间都处于低功耗模式。因此,在无人值守的情况和恶劣环境下适合采用本系统实现实时时钟,而无须考虑供电问题。

参考文献
1 胡大可 MSP430系列FLASH型超低功耗16位单片机 北京航空航天大学出版社 2001年

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top