我想用P1.5口做信号输入短,但是怎么写程序都是只能在P1.0~P1.3测到信号,求大神帮帮忙看看~
这个是程序~
#include<msp430x14x.h>
#define uint unsigned int
#define uchar unsigned char
void stop();
unsigned char TBuff[2]={1,2}; // 发送缓冲区
#define keyin (P1IN & 0x0F)
void delay(void);
/*******************************************
函数名称:delay
功 能:用于延时消抖
参 数:无
返回值 :无
********************************************/
void delay(void)
{
int tmp1;
int tmp2;
for(tmp1 =2000;tmp1 > 0;tmp1--)
{
for(tmp2=200;tmp2>0;tmp2--);
}
}
/****************************************************************************
* 名称:Sys_Ini()
* 功能:系统初始化
* 入口参数:无
* 出口参数:无
****************************************************************************/
void Sys_Ini(void)
{
unsigned int i;
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
BCSCTL1 &= ~XT2OFF; // XT2on
do
{
IFG1 &= ~OFIFG; // Clear OSCFault flag
for (i = 0xFF; i > 0; i--); // Time for flag to set
}
while ((IFG1 & OFIFG)); // OSCFault flag still set?
BCSCTL2 |= SELM_2 + SELS;
}
void ini_uart(void)
{
P3SEL |= 0xC0; // 选择P3.6和P3.7做UART通信端口
ME2 |= UTXE1 + URXE1; // 使能USART1的发送和接受
UCTL1 |= CHAR; // 选择8位字符
UTCTL1 |= SSEL1; // UCLK = ACLK
UBR01 = 0x03; // 波特率115200
UBR11 = 0x00; //
UMCTL1 = 0x049; // Modulation
UCTL1 &= ~SWRST; // 初始化UART状态机
IE2 |= URXIE1; // 使能USART1的接收中断
_EINT(); //打开全局中断
}
void sent_byte(uchar data)
{
while((IFG2&UTXIFG1)==0);
U1TXBUF=data;
}
#pragma vector=UART1RX_VECTOR
__interrupt void UART1_RX(void)
{
uchar data;
data=U1RXBUF;
sent_byte(data);
}
void PutString(char *ptr)
{
while(*ptr != '\0')
{
while (!(IFG2 & UTXIFG1)); // TX缓存空闲?
TXBUF1 = *ptr++; // 发送数据
}
while (!(IFG2 & UTXIFG1));
TXBUF1 = '\n';
}
/********************主函数********************/
void main( void )
{
Sys_Ini();
ini_uart();
_EINT();
WDTCTL = WDTPW + WDTHOLD; //关闭看门狗
P1DIR = 0X30; //设置P1.0~P.3为输入状态
P2DIR =0xff; //
P2OUT=0XFF; //
while(1)
{
if(keyin != 0x0F) //如果有入侵
{
sent_byte(1);
P2OUT =0XFE;
delay();
}
else
sent_byte(0);
P2OUT =0XFF;
delay();
}
}
|