是学习外部中断的范例
/******************************************************************************
// MSP430F20xx Demo - Software Port Interrupt Service on P1.4 from LPM4
// 软件使能P1.4端口的中断服务
// Description: A hi/low transition on P1.4 will trigger P1_ISR which,
// toggles P1.0. Normal mode is LPM4 ~ 0.1uA. LPM4 current can be measured
// with the LED removed, all unused P1.x/P2.x configured as output or inputs
// pulled high or low, and ensure the P1.4 interrupt input does not float.
// ACLK = n/a, MCLK = SMCLK = default DCO
// 在P1.4端口上的高低电平转变会触发P1的中断服务程序,就翻转P1.0的状态。正常模式下是LP4_0.1UA。
* LED移走的时候LM4的电流可以测量。所有的没有用到的其他的P1和P2端口配置为输出或者配置为上拉/下拉输入,
* 检测P1.4的中断状态的时候P1.4不能为浮空状态。 ACLK = n/a, MCLK = SMCLK = default DCO
// MSP430F20xx
// -----------------
// /|\| XIN|-
// | | |
// --|RST XOUT|-
// /|\ | |
// --o--|P1.4 P1.0|-->LED
// \|/
//
// M.Buccini / L. Westlund
// Texas Instruments, Inc
// October 2005
// Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.40A
******************************************************************************/
#include // MSP430G2231头文件
//主函数
//
/***************************************************************************
* LPM4_bits:Low Power Modes coded with Bits 4-7 in STATUS REGISTER BITS
* IO外部中断学习
***************************************************************************/
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // 禁止看门狗定时器
P1DIR |= 0x01; // 设置P1.0为输出方向
P1IE |= 0x10; // P1.4中断使能
P1IES |= 0x10; // P1.4设置为高低边沿中断
P1IFG &= ~0x10; // P1.4中断标志位清零
_BIS_SR(LPM4_bits + GIE); // 进入LPM4中断
while(1) // 等待中断
{
}
}
// 端口1的中断服务历程
#pragma vector=PORT1_VECTOR
__interrupt void Port_1(void)
{
P1OUT ^= 0x01; // P1.0 状态翻转
P1IFG &= ~0x10; // P1.4 中断标志清零
} |