打印

求教 怎么用p1.5做数据通信。

[复制链接]
1414|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
我想用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();
      
    }
}

相关帖子

沙发
dirtwillfly| | 2015-5-6 19:15 | 只看该作者
你怎么改的程序?

使用特权

评论回复
板凳
陌上言语·小白|  楼主 | 2015-5-6 19:53 | 只看该作者
dirtwillfly 发表于 2015-5-6 19:15
你怎么改的程序?

P1DIR = 0X30;     我就是把这句改成P1DIR = 0X20; 了

使用特权

评论回复
地板
陌上言语·小白|  楼主 | 2015-5-6 19:53 | 只看该作者

使用特权

评论回复
5
dirtwillfly| | 2015-5-6 21:22 | 只看该作者
陌上言语·小白 发表于 2015-5-6 19:53
P1DIR = 0X30;     我就是把这句改成P1DIR = 0X20; 了

没添加对P1OUT寄存器赋值的语句啊?
那肯定就没有输出信号

使用特权

评论回复
6
陌上言语·小白|  楼主 | 2015-5-6 21:41 | 只看该作者
dirtwillfly 发表于 2015-5-6 21:22
没添加对P1OUT寄存器赋值的语句啊?
那肯定就没有输出信号

那你能帮我改一下么:(?谢谢~:hug:

使用特权

评论回复
7
dirtwillfly| | 2015-5-7 15:39 | 只看该作者
陌上言语·小白 发表于 2015-5-6 21:41
那你能帮我改一下么?谢谢~

1、PxDIR,Px口方向寄存器
0 端口配置为输入(默认)
1 端口配置为输入

2、PxOUT,Px口输出寄存器(输入、输出两种模式)
当IO口配置为输出模式时:
0 输出低电平
1 输出高电平

3、PxSEL,Px功能选择寄存器(IO中断只有在普通IO下才能使用)
0普通的I/O(默认)
1有连接外围电路的特殊用途

使用特权

评论回复
8
dirtwillfly| | 2015-5-7 15:39 | 只看该作者

使用特权

评论回复
9
FireRiver9| | 2015-5-8 15:21 | 只看该作者
P1.5做输入的话,P1DIR &= ~BIT5;
P1的其他IO准备怎么用
建议你把硬件原理图上来,大家集思广益

使用特权

评论回复
10
陌上言语·小白|  楼主 | 2015-5-8 23:18 | 只看该作者
FireRiver9 发表于 2015-5-8 15:21
P1.5做输入的话,P1DIR &= ~BIT5;
P1的其他IO准备怎么用
建议你把硬件原理图上来,大家集思广益

现在的问题是我把程序烧到这块板子里后,一直发送01(高电平)信号, 我想做的是红外对射检测,就是当红外光束被遮挡就会有一个高电平变成低电平的信号产生。 上面那个程序我在开发板上试过P1.0~P1.3 是可以正常使用的,红外不被遮挡发送的是00,被遮挡后发送01,但是在我焊的这块板子上就是一直发送01,不知道什么原因。

360截图20150508231258947.jpg (97.79 KB )

360截图20150508231258947.jpg

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

11

帖子

0

粉丝