msp430编程问题
下面这段咋错了,P1.0有个LED,P2设为中断模式,P2中断为上升沿,在P2.0口接上VCC,不就应该LED亮吗?测试时为啥就是不亮呢?#include<msp430x...
下面这段咋错了,P1.0有个LED,P2设为中断模式,P2中断为上升沿,在P2.0口接上VCC,不就应该LED亮吗?测试时为啥就是不亮呢?
#include <msp430x14x.h>
void main(void)
{
WDTCTL=WDTPW+WDTHOLD;
P1DIR|=BIT0;
P1OUT=0;
P2DIR=0;
P2IES=0;
P2IE=0;
P2IFG=0;
_EINT();
while(1);
}
#pragma vector=PORT1_VECTOR
__interrupt void SetV(void)
{
unsigned char key;
key=P2IFG;
if(key) P1OUT=1;
P2IFG=0;
return;
} 展开
#include <msp430x14x.h>
void main(void)
{
WDTCTL=WDTPW+WDTHOLD;
P1DIR|=BIT0;
P1OUT=0;
P2DIR=0;
P2IES=0;
P2IE=0;
P2IFG=0;
_EINT();
while(1);
}
#pragma vector=PORT1_VECTOR
__interrupt void SetV(void)
{
unsigned char key;
key=P2IFG;
if(key) P1OUT=1;
P2IFG=0;
return;
} 展开
2个回答
展开全部
中断向量错了
#pragma vector=PORT2_VECTOR
P2.0口仅接VCC,初始化时清了P2IFG,也没有上升沿信号啊,接个按键到地。
#pragma vector=PORT2_VECTOR
P2.0口仅接VCC,初始化时清了P2IFG,也没有上升沿信号啊,接个按键到地。
追问
上面程序我改过了,程序没问题了。我把P2.0口直接接VCC以获得上升沿,问题就出在这里。如果是导线另一端接上电源,再将另一端接触P2.0,就可以中断。如果导线接在P2.0,另一端什么都不接,他也会持续的中断。用手碰P2.0口,也会持续中断,也就是说只要有导体接触P2.0口就会持续产生了上升沿。很令人费解啊?
追答
I/O口设为输入状态,输入阻抗理论上是无穷大的,极易受到干扰,一个能量很小的瞬变干扰就能导至端口捕获到一个上升沿,导致中断标志位置位。所以要注意的是:内部不带或不设置为上、下拉的单片机输入端口像HC逻辑门输入端一样不要浮空。你所描述的试验(开关瞬间接通、静电、外部干扰传导或辐射)恰恰在P2.0上引起干扰导致进入中断。
意法半导体(中国)投资有限公司
2023-06-12 广告
2023-06-12 广告
stm32怎么样?这个问题不能一概而论,要根据您的具体情况进行分析。意法半导体单片机产品线拥有业界很宽广、极具创新力的32位产品系列 – STM32,覆盖超低功耗、超高性能方向,同时兼具很强的市场竞争力。STM32是ARM Cortex内核...
点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
2011-05-26
展开全部
void main(void)
{
WDTCTL=WDTPW+WDTHOLD;
P1DIR |= BIT0;
P1OUT &= ~BIT0;//P1输出低电平
P2DIR = 0;
P2SEL = 0;//p2初始化
P2IE=0;
P2IES=0;
P2IFG=0;
P2IE |=BIT0;
P2IE &=~BIT0;//对应的管脚由低到高跳变时使相应的标志置位
_EINT();
while(1);
}
#pragma vector=PORT2_VECTOR
__interrupt void SetV(void)
{
if((P2IN& BIT0)==1)
{
P2IFG |= BIT0;
P1OUT |= BIT0;
}
}
{
WDTCTL=WDTPW+WDTHOLD;
P1DIR |= BIT0;
P1OUT &= ~BIT0;//P1输出低电平
P2DIR = 0;
P2SEL = 0;//p2初始化
P2IE=0;
P2IES=0;
P2IFG=0;
P2IE |=BIT0;
P2IE &=~BIT0;//对应的管脚由低到高跳变时使相应的标志置位
_EINT();
while(1);
}
#pragma vector=PORT2_VECTOR
__interrupt void SetV(void)
{
if((P2IN& BIT0)==1)
{
P2IFG |= BIT0;
P1OUT |= BIT0;
}
}
追问
上面程序我改过了,程序没问题了。我把P2.0口直接接VCC以获得上升沿,问题就出在这里。如果是导线另一端接上电源,再将另一端接触P2.0,就可以中断。如果导线接在P2.0,另一端什么都不接,他也会持续的中断。用手碰P2.0口,也会持续中断,也就是说只要有导体接触P2.0就会持续产生上升沿。很令人费解啊?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询