MSP430 中断问题

你好,我这里有430f149的程序,有点不明白,希望你能给我解释一下。#include<msp430g2211.h>voidmain(void){WDTCTL=WDTPW... 你好,我这里有430f149的程序,有点不明白,希望你能给我解释一下。
#include <msp430g2211.h>

void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer
P1DIR |= 0x01; // Set P1.0 to output direction

P1IE |= 0x08; // P1.3 interrupt enabled
P1IES |= 0x08; // P1.3 Hi/lo edge
P1IFG &= ~0x08; // P1.3 IFG cleared

_BIS_SR(LPM4_bits + GIE); // Enter LPM4 w/interrupt
}

// Port 1 interrupt service routine
#pragma vector=PORT1_VECTOR
__interrupt void Port_1(void)
{
P1OUT ^= 0x01; // P1.0 = toggle
P1IFG &= ~0x08; // P1.3 IFG cleared
}

在上面的代码中,有个 P1IES |= 0x08; ---------------后面的注释为P1.3 Hi/lo edge,我不明白,为啥
0x08代表p1.3,我在msp430g2211.h头文件里找到,bit3的值为#define BIT3 (0x0008u),这中间少个0,值肯定不一样,
那P1IES |= 0x08;代表啥?
展开
 我来答
粤琛非z
2015-06-08 · TA获得超过1564个赞
知道小有建树答主
回答量:866
采纳率:100%
帮助的人:622万
展开全部
f149要用f149的头文件啦,不过在你这个IO中断程序里用g2211的貌似不影响;
P1IES |= 0x08是把P1IES的第4位置1,第4位刚好对应P1.3,P1IES是中断中断触发方向寄存器,置1是下降沿触发中断;
0x08是0b00001000,对应P1.3;
类似的:
0x01是0b00000001,对应P1.0;
0x02是0b00000010,对应P1.1;
0x04是0b00000100,对应P1.2依次类推,规律挺明显的。
追问
能不能在再问一个问题?
我在看MP430的书时,关于ADC12那章,上面有一段话:
“用看门狗间隔定时器,时钟用ACLK=32768Hz,8分频,间隔时间8s”,
1---这里ACLK=32768Hz,8分频是不是32768/8?
2---而那个间隔时间8s怎样计算出来的?能不能举例说明一下分频的计算。。谢谢
追答
有点乱,没太看明白...
我猜应该是ACLK时钟是32768Hz,将ACLK设为看门狗时钟源,然后用看门狗的定时器模式,定时时间选了时钟源/32768,就是1s一次,然后再做8分频,时间间隔就是8s一次了。
也不清楚你看的书里的8分频是怎么做的,反正看门狗定时器只能做64,512,8192,32768这四种整数分频。可能是软件实现的8分频吧...
来自:求助得到的回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式