现在要接收红外信号,将红外接收头的OUT引脚插到了P2.3,打算一遇到跳变就进入中断并计时,不知道程序怎么写了。单片机新手求指导,我的程序现成这样:
main(void)
{
WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer
P1DIR = BIT0;
P1OUT = 0X01;
int_IR();
}
//初始化Timer
void int_Timer()
{
TACCTL1 |=CM_3+SCS+CAP+CCIE;//上下沿都触发捕捉,同步模式、使能中断
TACTL |= TASSEL1+MC_2+ TACLR;//选择SMCLK时钟作为计数时钟源,连续计数模式
}
//有关端口初始化
void int_io()
{
P2IFG &=~ BIT3;
P2SEL |= BIT3;
}
//初始化红外相关资源
void int_IR()
{
int_io();
int_Timer();
}
//识别出红外信号后处理LED灯
void dealLED()
{
int i;
while(1){
for(i=0;i<20000;i++){
P1OUT=0x01;
}
for(i=0;i<20000;i++)
{
P1OUT=0x00;
}
}
}
#pragma vector=TIMER1_A0_VECTOR
__interrupt void Timer_A(void)
{
dealLED();
}
发个程序给你参考,解码并用led指示的,你修改编码规则即可