#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 ();//扫描按键
}
}
『本文转载自网络,版权归原作者所有,如有侵权请联系删除』