历史上的今天
今天是:2025年02月07日(星期五)
2021年02月07日 | MSP430F5529火箭板 --> 按键中断控制LED实验
2021-02-07 来源:eefocus
实验目的:
测试评估板上的按键和LED
实验内容:
1、按下s1一次红灯亮1s后熄灭
2、快速按下s1两次绿灯亮1s后熄灭
bsp_led.h
#ifndef _BSP_LED_H
#define _BSP_LED_H
#include "msp430.h"
#define Set_Bit(val,bitn) (val |= (/*1 << */(bitn)))
#define Clr_Bit(val,bitn) (val &= ~(/*1 << */(bitn)))
#define Get_Bit(val,bitn) (val & (1 < //LED1 #define LED1_RED_DIR P1DIR #define LED1_RED_OUT P1OUT #define LED1_RED_SEL P1SEL #define LED1_RED_Pin_Num (BIT0) //P1^0 #define LED1_RED_IO_Init() (Set_Bit(LED1_RED_DIR,LED1_RED_Pin_Num)) //初始化IO为输出模式 #define LED1_RED_Set() (Set_Bit(LED1_RED_OUT,LED1_RED_Pin_Num)) #define LED1_RED_Clr() (Clr_Bit(LED1_RED_OUT,LED1_RED_Pin_Num)) //LED2 #define LED2_GREEN_DIR P4DIR #define LED2_GREEN_OUT P4OUT #define LED2_GREEN_SEL P4SEL #define LED2_GREEN_Pin_Num (BIT7) //P4^7 #define LED2_GREEN_IO_Init() (Set_Bit(LED2_GREEN_DIR,LED2_GREEN_Pin_Num)) #define LED2_GREEN_Set() (Set_Bit(LED2_GREEN_OUT,LED2_GREEN_Pin_Num)) #define LED2_GREEN_Clr() (Clr_Bit(LED2_GREEN_OUT,LED2_GREEN_Pin_Num)) #endif /*_BSP_LED_H*/ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 bsp_key.h #ifndef _BSP_KEY_H #define _BSP_KEY_H #include #define Set_Bit(val,bitn) (val |= (/*1 << */(bitn))) #define Clr_Bit(val,bitn) (val &= ~(/*1 << */(bitn))) #define Get_Bit(val,bitn) (val & (1 < //s1 #define KEY1_DIR P2DIR #define KEY1_SEL P2SEL #define KEY1_OUT P2OUT #define KEY1_IN P2IN //按键需读入IO口状态值 #define KEY1_Pin_Num (BIT1) #define KEY1_IO_Init() (Clr_Bit(KEY1_DIR,KEY1_Pin_Num)) //初始化IO状态为读取输入电平状态 #define KEY1_Set() (Set_Bit(KEY1_OUT,KEY1_Pin_Num)) #define KEY1_Clr() (Clr_Bit(KEY1_OUT,KEY1_Pin_Num)) #endif /*BSP_LED_H*/ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 main.c #include #include "bsp_led.h" #include "bsp_key.h" #define delay_s(x) __delay_cycles(x*1000000) unsigned int n = 0; void main() { WDTCTL = WDTPW + WDTHOLD; LED1_RED_IO_Init(); //初始化设置IO口方向为输出 LED2_GREEN_IO_Init(); LED1_RED_Clr(); //关闭LED_RED LED2_GREEN_Clr(); //关闭LED_Green KEY1_IO_Init(); //读取电平输入 KEY1_Set(); P2REN |= KEY1_Pin_Num; //使能s1按键端口的寄存器 P2IE |= KEY1_Pin_Num; //使能s1按键端口中断 P2IES |= KEY1_Pin_Num; //s1中断沿触发控制寄存器 P2IFG &= ~KEY1_Pin_Num; //s1中断标志寄存器 _EINT(); //使能全局中断 __enable_interrupt() while(1) { if(n==0) //当按键一次都没有按下时,红色和绿色LED都不亮 { LED1_RED_Clr(); LED2_GREEN_Clr(); } else if(n==1) //当按键s1按下一次时,红色LED亮1s后灭 { LED1_RED_Set(); LED2_GREEN_Clr(); delay_s(1); n=0; } else if(n==2) //当按键s1快速按下两次时,绿色LED亮1s后灭 { LED1_RED_Clr(); LED2_GREEN_Set(); delay_s(1); n=0; } } } #pragma vector = PORT2_VECTOR __interrupt void Port2() { unsigned int i=0; if(!(P2IN & KEY1_Pin_Num)) //如果s1被按下 --> 按键共地 { __delay_cycles(5000); //消抖 if(!(P2IN & KEY1_Pin_Num)) { while(!(P2IN & KEY1_Pin_Num)){} //松手检测 n = 1; P2IFG &= ~KEY1_Pin_Num; while((P2IN & KEY1_Pin_Num)) //500ms-1000ms内如果不按下,视为只按一次 { i++; __delay_cycles(1000); if(i>1000) return; } if(!(P2IN & KEY1_Pin_Num)) { __delay_cycles(5000); //消抖 if(!(P2IN & KEY1_Pin_Num)) { while(!(P2IN & KEY1_Pin_Num)){} //第二次松手 n = 2; P2IFG &= ~KEY1_Pin_Num; } } } } } 上述代码可直接烧录到如下图所示的开发板中,作为上手程序:代码适用的开发板类型

史海拾趣
|
1.会熟练的使用cadence或mentor软件layout. 2.能独档一面,从做器件到布局布线出光绘。 3.有做各种pcb的设计经验, 如电脑主板,手机,数码相机等电子消费产品,GSM和3G产品的基站单元板,背板, ...… 查看全部问答> |
|
时序电路的状态是一个状态变量集合,这些状态变量在任意时刻的值都包含了为确定电路的未来行为而必需考虑的所有历史信息。 状态机采用VerilogHDL语言编码,建议分为三个always段完成。 三段式建模描述FSM的状态机输出时,只需指定case敏感表为次 ...… 查看全部问答> |
|
在WINCE6.0上做一个基于PCM2704芯片的USB AUDIO设备驱动。这是一个USB混合设备,有Audio Class 和HID Class两种接口。此设备有三个Interface,分别是Audio Control,Audio Stream,HID Interface。三个EndPoint,分别是Default EP0,Audio Stream Int ...… 查看全部问答> |
|
知名外资通讯企业招聘软件开发工程师,协议工程师,算法分析和实现工程师及算法分析系统仿真工程师!!! 无线产品软件开发工程师 职责描述: 负责无线产品软件模块的设计、编码、调试、单元测试等工作,参与相关质量活动,确保设计及实现工作按时保质完成。 职位要求: 1. 本科以上学历,计算机软件、通信、电子、数学、物理及相关专业,有扎实的 ...… 查看全部问答> |
|
小弟在网上下了好多DXP2004都有些问题,这两天搞得焦头烂额的,希望那位有的能传给我,不胜感激! wanglei198661@163.com 有sp3的最好,sp2的也行 可以用的话给100分!!!… 查看全部问答> |
|
我了解在WINCE下若使用SOCK_RAW必须用WSCInstallProvider进行注册, 但我不太了解对于SOCK type=SOCK_RAW,protol type=IPPROTO_ICMP WINCE中应用哪个DLL进行处理呢?我使用/windows/tcpip.dll不太对?? … 查看全部问答> |
|
针对水泥等行业中对料住进行实时测量的需求, 开发 出一种新型的料位测控系统。系统的传感器采用应 变式传感器, 传感器的核心部分是应变片, 通过应变片感测物料的侧压力并获得料住信息。传感器是该系统的关键部分, 通过传感器的优化设计可以很好 ...… 查看全部问答> |




