MSP430_Family_Users_Guide(中文版)_430单片机__极端详细__应用(7)

2019-04-01 17:43

{

unsigned char i;

WDTCTL=WDTPW+WDTHOLD; // 关看门狗

P4DIR |= 0X10; // P4.0作输出?在实验系统板中P4.0接有一个发光二极管? While(1) {

i=50000;

P4OUT ^=0X01;

While(i--); // 软件定时 } }

例二?在系统板上实现按一次按键?对应的发光二极管状态改变一次。 void main(void) {

WDTCTL=WDTPW+WDTHOLD; P4DIR = 0XfF; P4OUT = 0Xff;

P1OUT = 0xff;

P1DIR = 0xf0 ; // All pins but button to output P1IES = 0x0f; // Button int on falling edge P1IFG = 0;

P1IE = 0x0f; // enable P1.0--P1_3 interrupt _EINT(); // 开总中断 while(1)

_BIS_SR(LPM4_bits); // 进入低功耗模式4 }

#pragma vector = PORT1_VECTOR

__interrupt void PORT1_ISR(void) // 键盘中断 {

unsigned int i; unsigned char temp; temp = P1IFG;

for(i=0;i<0x1fff;i++); // 消抖 if((P1IN&temp)==(!temp)) {

switch(temp) {

case 1: P4OUT ^=0X01;break; //P4.4状态改变?即LED1状态改变 case 2: P4OUT ^=0X02;break; //P4.4状态改变?即LED2状态改变 case 4: P4OUT ^=0X04;break; //P4.4状态改变?即LED2状态改变 case 8: P4OUT ^=0X08;break; //P4.4状态改变?即LED2状态改变 }

#include }

P1IFG = 0; // 清除中断请求位

} www.docin.com 44 第六章WDT看门狗定时器 Watchdog Timer Module

6.1 看门狗定时器概述 看门狗定时器?WDT?是MSP430系列单片机中常用的一种部件。 在工业现场?往往会由于供电电源、空间电磁干扰或其他原因引起强烈的干扰噪声。这些干扰作用于

数字器件?极易使其产生误动作?从而失去应有的控制功能?引起MSP430发生“程序跑飞”事故。若不

进行有效的处理?程序就不能回到正常的状态?从而失去应有的控制功能。

看门狗定时器正是为了解放这类问题而产生的?尤其是在具有循环结构的程序任务中更为有效。

在正常操作器件?一次WDT定时时间到?将产生一次器件复位。如果通过编制程序使WDT定时时

间稍大于程序执行一遍所用的时间时?并且程序执行过程中都有对看门狗定时器清零的指令?使计数器重

新计数?则程序正常执行时?就会在WDT定时时间到达之前对WDT清零?不会产生WDT溢出?如果由

于干扰使程序跑飞?则不会在WDT定时时间到达之前执行WDT清零指令?WDT就会产生溢出?从而产

生系统复位CPU需用重新运行用户程序?这样程序就可以又恢复正常运行状态。

MSP430看门狗除了具有上述系统监测的特定用途之外?还可以作为内部定时器来使用?当选择的时

间到达之后?和其他定时器一样产生一个定时中断。此外WDT还可以被完全停止活动以支持超低功耗应 用。

www.docin.com 45 6.2 看门狗定时器结构

www.docin.com 46 6.3 看门狗定时器寄存器 [1] WDTCTL 看门狗控制寄存器

WDTCTL由两部分组成?

高8位是对WDT操作的控制命令。要写入操作WDT的控制命令?出于安全原因必须先正确写入高字节

看门狗口令。口令位5AH?如果口令写错将导致系统复位。

读WDTCTL时?不需要口令?可直接读取地址120H中的内容?读出数据低字节位WDTCTL的值?高字

节始终位69H。WDTCTL除了看门狗定时器的控制位之外?还有两个用于设置NMI引脚功能。 WDTISx?选择看门狗定时器的计时输出 其中T是WDTCNT的输入时钟源周期。

0 T×215 1 T×213 2 T×29 3 T×26 WDTSSEL?选择WDTCNT的时钟源 0 SMCLK 1 ACLK

由WDTISx及WDTSSEL位便可确定WDT定时时间?因此通过软件对计数器设置不同的初始值就可实现

不同时间的定时。与其他定时器不同之处在于?WDT最多只能定时8种和时钟源相关的时间。 下表列出了WDT可选的定时时间?晶振为32.768KHz?SMCLK=1MHz?。 WDTSSEL WDTIS1 WDTIS0 定时时间/ms 0 1 1 0.064 Tsmclk×26

0 1 0 0.51 Tsmclk×29

1 1 1 1.95 Taclk×26 0 0 1 8.19 Tsmclk×213 1 1 0 15.63 Taclk×29 0 0 0 32.77 Taclk×215 1 0 1 250 Taclk×213 1 0 0 1000 Taclk×215

www.docin.com 47 WDTCNTCL?看门狗计数器清零位 0? 无操作

1? 将WDTCTL的值清零

当该位为1时?清除WDTCNT。 WDTTMSEL?工作模式选择 0 看门狗模式? 1 定时器模式。

WDTNMI?选择RST/NMI引脚功能?在PUC后被复位? 0 RST/NMI引脚为复位端?

1 RST/NMI引脚为边沿触发的非屏蔽中断输入。 WDTNMIES?选择中断的边沿触发方式 0 WDT功能激活?

1 时钟禁止输入?计数停止。 WDTHOLD?停止看门狗计数器 0 WDT功能激活

1 时钟禁止输入?计数停止

[2] WDTCNT 计数单元

WDTCNT时16位增计数器?由于MSP430所选定的时钟电路产生的固定周期脉冲信号对计数器进行加

法计数。如果计数器事先被预置的初始状态不同?那么从开始计数到计数溢出为止的时间就不同。WDTCNT

不能直接通过软件直接通过软件存取?必须通过看门狗定时器的控制寄存器WDTCTL来控制。

[3] IE1 中断允许寄存器

WDTIE?看门狗定时器模式中断允许控制位 0 看门狗定时器中断禁止 1 看门狗定时器中断允许

NMIIE?非屏蔽中断允许控制位 0 禁止非屏蔽中断 1 允许非屏蔽中断

www.docin.com 48 [4] IFG1 中断标志寄存器 WDTIFG?看门狗定时器模式中断标志 0 无看门狗定时器中断标志 1 有看门狗定时器中断标志 NMIIFG?非屏蔽中断标志

0 无非屏蔽中断标志 1 有非屏蔽中断标志

6.4 看门狗定时器操作 用户可以通过WDTCTL寄存器中的WDTTMSEL和WDTHOLD控制位设置WDT工作在看门狗模式、定 时器模式和低功耗模式。

[1] 看门狗模式 由于在上电复位或系统复位时?WDTCNT和WDTCL两寄存器内容被全部清除?晶振为32768Hz? SMCLK=1MHz??

复位后?工作在看门狗模式?以ACLK为时钟?WDT定时时间为32ms。

上述情况将导致WDT的运行自动进入看门狗模式。 所以?用户软件一般都需要进行如下操作?

n 进行WDT的初始化?设置合适的时间?通过SSEL、IS0、IS1位来选定?。 n 周期性的对WDTCNT清零?防止WDT溢出?保证WDT的正确使用。

n 在看门狗模式下?如果计数器超过了定时时间?就会产生复位和激活系统上电清除信号?系统从上电

复位的地址重启动。

n 如果系统不用看门狗功能?应该在程序开始处禁止看门狗功能。 [2] 定时器模式 WDTCTL的WDTTMSEL位置位选择定时器模式。这一模式产生选定时间的周期性中断。定时时间

可以通过WDTCTL的WDTCNCTL位置位来开始。

n 改变定时时间而不同时清楚WDTCNT将导致不可预料的系统立即复位或中断。定时时间可以通过

WDTCTL的CNCTL位置位来开始。

n 如果先后分别进行清除和定时时间选择?则可能立即引起不可预料的系统复位或中断。 n 另外?在终场工作时。改变时钟源可能导致WDTCNT额外的计数时钟。

[3] 低功耗模式 当系统不需要WDT做看门狗和定时器时?可关闭WDT以减小功耗。 控制位WDTHOLD=1时关闭WDT?这时看门狗停止工作。 www.docin.com 49 6.5 看门狗定时器头文件定义 在msp430x14x.h头文件中定义如下? /************************************************************ * WATCHDOG TIMER

************************************************************/

#define WDTCTL_ (0x0120) /* Watchdog Timer Control */ DEFW( WDTCTL , WDTCTL_)

/* The bit names have been prefixed with \#define WDTIS0 (0x0001) #define WDTIS1 (0x0002) #define WDTSSEL (0x0004) #define WDTCNTCL (0x0008) #define WDTTMSEL (0x0010) #define WDTNMI (0x0020) #define WDTNMIES (0x0040) #define WDTHOLD (0x0080)


MSP430_Family_Users_Guide(中文版)_430单片机__极端详细__应用(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:C语言学习

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: