基于MSP430G2553的按键测试程序
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#define LED_OUT P1OUT
#define BUTTON_REN P1REN
#define BUTTON_ON (P1IN&BIT3)
#define BUTTON_OFF !(P1IN&BIT3)
#define BIT_SET(x , y) x |= (y)
#define BIT_CLR(x , y) x &=~(y)
/*****************************************************/
else
{
BIT_SET(LED_OUT ,LED_RED+LED_GREEN);
i=10;
while(i--)
_delay_cycles(50000);
/*****************************************************/
/*****************************************************/
BIT_SET(LED_OUT , LED_GREEN);
i=10;
while(i--)
_delay_cycles(50000);
BIT_CLR(LED_OUT , LED_GREEN);
}
volatile unsigned char i=0,flag=1;
void main(void)
{
WDTCTL = WDTPW + WDTHOLD;
BIT_CLR(BUTTON_DIR , BUTTON);
BIT_SET(LED_DIR , LED_RED+LED_GREEN);
BIT_SET(BUTTON_REN , BUTTON);
BIT_SET(BUTTON_OUT , BUTTON);
/********************************************************/
while(1)
{
/*通过按键改变选择标志位*/
if(BUTTON_OFF)
{
flag=!flag;
while(BUTTON_OFF);
3)4×4键盘3:控制LED蜂鸣器
#include <msp430g2452.h>
#define BUTTON BIT3
#define LED_RED BIT0
#define LED_GREEN BIT6
#define LED_DIR P1DIR
#define BUTTON_DIR P1DIR
#define BUTTON_OUT P1OUT
i=10;
while(i--)
_delay_cycles(50000);
LED_OUT ^= (LED_RED+LED_GREEN);
i=10;
whi百度文库e(i--)
_delay_cycles(50000);
}
}
}
/**************该版本编译后的代码与第一个版本是一致的,请看差别在哪儿************/
#include <msp430g2452.h>
#define BUTTON BIT3
#define LED_RED BIT0
#define LED_GREEN BIT6
#define LED_DIR P1DIR
#define BUTTON_DIR P1DIR
#define BUTTON_OUT P1OUT
i=10;
while(i--)
_delay_cycles(50000);
LED_RED_OFF();
LED_GREEN_ON();
i=10;
while(i--)
_delay_cycles(50000);
LED_GREEN_OFF();
}
else
{
LED_OUT |= LED_RED+LED_GREEN;
#define LED_OUT P1OUT
#define BUTTON_REN P1REN
#define BUTTON_ON (P1IN&BIT3)
#define BUTTON_OFF !(P1IN&BIT3)
#define LED_RED_ON() P1OUT|=BIT0
#define LED_RED_OFF() P1OUT&=~BIT0
#define LED_GREEN_ON() P1OUT|=BIT6
#define LED_GREEN_OFF() P1OUT&=~BIT6
volatile unsigned char i=0,flag=0;
void main(void)
{
WDTCTL = WDTPW + WDTHOLD;
BUTTON_DIR &= ~BUTTON;
}
/*****************************************************/
if(flag)
{
BIT_SET(LED_OUT , LED_RED);
i=10;
while(i--)
_delay_cycles(50000);
BIT_CLR(LED_OUT , LED_RED);
基于msp430G2系列的按键测试程序
本程序有扫描和中断两种方式,代码均附后。
4、4×1独立按键实验
(1)4×1键盘1:扫描数码管显示
(2)4×1键盘2:中断数码管显示
(3)4×1键盘3:控制LED
(4)4×1键盘4:控制蜂鸣器
5、4×4矩阵键盘实验
(1)4×4键盘1:行列扫描数码管显示
(2)4×4键盘2:行列扫描1602液晶显示
LED_DIR |= LED_RED+LED_GREEN;
BUTTON_REN |= BUTTON;
BUTTON_OUT = BUTTON;
while(1)
{
/*通过按键改变选择标志位*/
if(BUTTON_OFF)
{
flag=!flag;
while(BUTTON_OFF);
}
if(flag)
{
LED_RED_ON();
BIT_CLR(LED_OUT , LED_RED+LED_GREEN);
i=10;
while(i--)
_delay_cycles(50000);
}
}
}
#define BUTTON_REN P1REN
#define BUTTON_ON (P1IN&BIT3)
#define BUTTON_OFF !(P1IN&BIT3)
#define BIT_SET(x , y) x |= (y)
#define BIT_CLR(x , y) x &=~(y)
/*****************************************************/
else
{
BIT_SET(LED_OUT ,LED_RED+LED_GREEN);
i=10;
while(i--)
_delay_cycles(50000);
/*****************************************************/
/*****************************************************/
BIT_SET(LED_OUT , LED_GREEN);
i=10;
while(i--)
_delay_cycles(50000);
BIT_CLR(LED_OUT , LED_GREEN);
}
volatile unsigned char i=0,flag=1;
void main(void)
{
WDTCTL = WDTPW + WDTHOLD;
BIT_CLR(BUTTON_DIR , BUTTON);
BIT_SET(LED_DIR , LED_RED+LED_GREEN);
BIT_SET(BUTTON_REN , BUTTON);
BIT_SET(BUTTON_OUT , BUTTON);
/********************************************************/
while(1)
{
/*通过按键改变选择标志位*/
if(BUTTON_OFF)
{
flag=!flag;
while(BUTTON_OFF);
3)4×4键盘3:控制LED蜂鸣器
#include <msp430g2452.h>
#define BUTTON BIT3
#define LED_RED BIT0
#define LED_GREEN BIT6
#define LED_DIR P1DIR
#define BUTTON_DIR P1DIR
#define BUTTON_OUT P1OUT
i=10;
while(i--)
_delay_cycles(50000);
LED_OUT ^= (LED_RED+LED_GREEN);
i=10;
whi百度文库e(i--)
_delay_cycles(50000);
}
}
}
/**************该版本编译后的代码与第一个版本是一致的,请看差别在哪儿************/
#include <msp430g2452.h>
#define BUTTON BIT3
#define LED_RED BIT0
#define LED_GREEN BIT6
#define LED_DIR P1DIR
#define BUTTON_DIR P1DIR
#define BUTTON_OUT P1OUT
i=10;
while(i--)
_delay_cycles(50000);
LED_RED_OFF();
LED_GREEN_ON();
i=10;
while(i--)
_delay_cycles(50000);
LED_GREEN_OFF();
}
else
{
LED_OUT |= LED_RED+LED_GREEN;
#define LED_OUT P1OUT
#define BUTTON_REN P1REN
#define BUTTON_ON (P1IN&BIT3)
#define BUTTON_OFF !(P1IN&BIT3)
#define LED_RED_ON() P1OUT|=BIT0
#define LED_RED_OFF() P1OUT&=~BIT0
#define LED_GREEN_ON() P1OUT|=BIT6
#define LED_GREEN_OFF() P1OUT&=~BIT6
volatile unsigned char i=0,flag=0;
void main(void)
{
WDTCTL = WDTPW + WDTHOLD;
BUTTON_DIR &= ~BUTTON;
}
/*****************************************************/
if(flag)
{
BIT_SET(LED_OUT , LED_RED);
i=10;
while(i--)
_delay_cycles(50000);
BIT_CLR(LED_OUT , LED_RED);
基于msp430G2系列的按键测试程序
本程序有扫描和中断两种方式,代码均附后。
4、4×1独立按键实验
(1)4×1键盘1:扫描数码管显示
(2)4×1键盘2:中断数码管显示
(3)4×1键盘3:控制LED
(4)4×1键盘4:控制蜂鸣器
5、4×4矩阵键盘实验
(1)4×4键盘1:行列扫描数码管显示
(2)4×4键盘2:行列扫描1602液晶显示
LED_DIR |= LED_RED+LED_GREEN;
BUTTON_REN |= BUTTON;
BUTTON_OUT = BUTTON;
while(1)
{
/*通过按键改变选择标志位*/
if(BUTTON_OFF)
{
flag=!flag;
while(BUTTON_OFF);
}
if(flag)
{
LED_RED_ON();
BIT_CLR(LED_OUT , LED_RED+LED_GREEN);
i=10;
while(i--)
_delay_cycles(50000);
}
}
}