MSP430(2)

MSP430芯片采用的是RISC精简指令集指令长度固定(严格上讲不固定,但是只要认识到各种指令周期的变化,就可以当成固定的),格式类似,时钟周期一致,并且采用冯•诺依曼存储结构,指令存储器和数据存储器位于同一存储器的不同物理地址,指令和数据的宽度相同。

一般程序采用

while(1)//死循环

{

         {

…….//程序主体

}

}

程序不会退出main函数,在while循环中结合中断来实现具体的功能。

 

POR 上电复位

PUC 上电清除

GIE中断使能位

NMI不可屏蔽中断

RETI中断返回指令

MCLK 系统时钟

SMCLK子系统时钟

ACLK辅助时钟

                                                          

 

MSP430有三种中断

(1)       系统复位:PORPUC产生

(2)       不可屏蔽中断:只能被各自的中断使能位屏蔽

(3)       可屏蔽中断

 

 

 

430进入功耗模式后CPUMCLK都是禁止的,CPU总是由中断唤醒,必须保持GIE有效。

在低功耗模式下,中断发生后进入中断服务程序,系统将PCSR压入栈,由于SR更新自动取消了了低功耗模式,进行中断处理,最后退出中断时恢复SR出栈,恢复原来的低功耗模式。

 

 

#include "msp430x54x.h"

 

//延时函数

 

void dealy600ms()                     //延时函数

{

  unsigned char m,n;

  for(m=0;m<100;m++)

    for(n=0;n<200;n++);

}

 

void main( void )

{

 

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

  WDTCTL=WDT_ADLY_1000;

  SFRIE1|=WDTIE;

 

  P10DIR|=0Xff;

  P10OUT=0Xff;         //设置P10口为输出,并输出高电平关闭LED

  _EINT();

  unsigned char temp,i;         

  temp=0x01;

  while(1)

  { 

 

/*

    for(i=0;i<8;i++)

    {

    P10OUT = ~(0xff&(temp<<i));   //循环点亮LED

 

     dealy600ms();              //调用延时

    }

 

   }

  */

    _BIS_SR(LPM3_bits);

    P10OUT=0x00;

    dealy600ms();

    P10OUT=0xff;

 

 }

}

#pragma vector = WDT_VECTOR

__interrupt void watchdog_timer(void)

{

  _BIC_SR_IRQ(LPM3_bits);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值