📄 main.c
字号:
#include <msp430x14x.h>
#include <in430.h>
#include <string.h>
#include <stdio.h>
#include "xtype.h"
#define IRDA (uint8)0x01 //P1_0
uint8 ifg;
uint8 index=0,value;
uint8 bitValue;
uint8 flag;
uint8 Buf[128],i;
void main( void )
{
WDTCTL = WDTPW + WDTHOLD;// Stop WDT
BCSCTL1&=~XT2OFF; //XT2 available
BCSCTL2|=SELM1; //Mclk,SMCLK=8M
BCSCTL2|=SELS;
do
{
int k = 0xff;
IFG1 &= ~OFIFG;
for(k=0xff; k>0;k--);
}
while((IFG1&OFIFG)!=0);
P1DIR &= ~IRDA;
P1IE |= IRDA;
P1IES &= ~IRDA;
CCTL0 =CCIE; //CCR0 interrrupt enable
CCR0= 0xffff; //
TACTL = TACLR;
TACTL = TASSEL_2 + MC_1; //SMCLK, Up mode, interrupt enable
memset(Buf,0,sizeof(Buf));
i = 0;
value = 0;
flag = 0;
P1IFG = 0;
_BIS_SR(GIE);
while(1)
{
if(ifg&IRDA)
{
ifg = 0;
if(index<8)
{
value = value<<1;
value |= bitValue;
index++;
};
if(index==8)
{
Buf[i] = value;
i++;
index = 0;
value = 0;
};
};
};
}
#pragma vector = PORT1_VECTOR
__interrupt void PORT1_ISR(void)
{
ifg = P1IFG;
P1IFG = 0;
TACTL = MC_0; //SMCLK, halt
if(TAR>=14000)
{
bitValue = 1;
}
else
{
bitValue = 0;
};
TACTL = TACLR;
TACTL = TASSEL_2 + MC_1; //SMCLK, Up mode
if(flag == 0)
{
ifg=0;
flag = 1;
};
}
#pragma vector = TIMERA0_VECTOR
__interrupt void T0_ISR(void)
{
index = 0;
value = 0;
flag = 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -