×
单片机 > 单片机程序设计 > 详情

独立按键使流水灯逐个亮,学习使用

发布时间:2020-08-21 发布时间:
|

#include "msp430x54x.h"

#include

#include


//***************************************************************************//

//                                                                           //

//  Init_Port(void): 设置IO端口                                              //

//                                                                           //

//***************************************************************************//


unsigned int button = 0X01;

unsigned int button_cup = 0X01;


void Init_Port(void)//定义端口初始化函数

{

  P1DIR &= ~(BIT3+BIT7);        //设置p1.3和p1.7为输入

  P8DIR = 0XFF;         //设置p8为输出

  P1DIR |= BIT6;        //设置P1.6为输出

  

  P1OUT |= BIT6;        //设置p1.6为高电平

  P8OUT = 0XFF;

}


void delay(unsigned int num)    //延时函数,非精准延时,定义一个num变量

{

  unsigned int i,j;     //定义两个无符号整型变量

  for(i = 0; i < 200; i++)      //给I赋值为零,让I自加(每自加一次执行一次{}内的代码),当I到200,跳出循环

  {

    for(j = 0; j < num; j++)      //给j赋值为零,让j自加,当j到定义的num值时候,跳出循环

    {

      

    }

  }

}


void Scan_Button (void) //按键扫描函数

{  

  if(!(P1IN & BIT3)) //判断独立按键p1.3是否被按下

  {

    button_cup = button >> 1; //流水灯右移的值给一个容器

    P8OUT = ~(button_cup);//把容器内的值按位取反给P8

    button = button_cup;//把容器内的值,替换掉按钮的值

    delay(300);

     

  }

  if(!(P1IN & BIT7))//同上,只是按钮不同

  {

    button_cup = button << 1;

    P8OUT = ~(button_cup);

    button = button_cup;

    delay(300);   

        

  }

    

}



//***************************************************************************//

//                 主程序                                                    //

//***************************************************************************//

void main( void )

{

  

  WDTCTL = WDTPW + WDTHOLD; // 关闭看门狗

  Init_Port();//初始化端口

  

  

  while(1)//无限循环,外接的LED是低电平有效

  {

    

    Scan_Button ();//扫描按键



   

  }

}



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
STM32中断向量表的位置.重定向