历史上的今天
今天是:2025年02月14日(星期五)
2020年02月14日 | 基于msp430的按键实时控制LED灯
2020-02-14 来源:eefocus
相信玩过430的人都知道它的P1、P2口除了具有普通IO口的功能外,还具有中断功能。
所以那我们就利用它的中断功能来实现一个小项目吧!
那就是通过按键来点亮LED灯
项目大体框架
初始化相应的IO端口:比如我们要用的P1_0—–P1_3来连接按键,然后通过P6口输出.所有,我们要设置P1口的低四位为第二功能引脚,方向为输入,P6为普通引脚,方向为输出。
设置好P1端口低四位的中断触发方式,如下降沿;打开相应的中断控制位,和打开总中断。
然后编写函数,下载到电路,调试,实现。
开发板介绍
8个LED一端连在P6口上,一端与VCC相连,共阳。
四个独立按键一端分别连在P1口的低四位,一端接地。
代码
/*********主函数main************/
/************************************************************
*作者:风儿与沙
*版本:1.0
*时间:2018/7/4
*功能:通过四个独立按键,产生外部中断,来控制4组LED发亮
*MCU: msp430F149
*************************************************************/
#include #include "Config.h" //引入开发板硬件配置文件 #include "irq_port.c" //引入端口初始化源文件 //相关宏 #define LED8 P6OUT #define LED8DIR P6DIR /************************************************************* * 主函数 *************************************************************/ void main( void ) { // Stop watchdog timer to prevent time out reset WDTCTL = WDTPW + WDTHOLD; //关闭看门狗定时器 Port_init(); //端口初始化 while(1); } //********************************************************************** // P1口中断服务程序,需要判断 //********************************************************************** #pragma vector = PORT1_VECTOR __interrupt void P1_IRQ(void) { switch(P1IFG&0x0F) { case 0x01: LED8 = 0xFC;P1IFG=0x00;break; // 引脚0对应S1中断,必须手动清标志位,点亮D1D2 case 0x02: LED8 = 0xF3;P1IFG=0x00;break; // 引脚1对应S2中断,必须手动清标志位,点亮D3D4 case 0x04: LED8 = 0xCF;P1IFG=0x00;break; // 引脚2对应S3中断,必须手动清标志位,点亮D5D6 case 0x08: LED8 = 0x3F;P1IFG=0x00;break; // 引脚3对应S4中断,必须手动清标志位,点亮D7D8 } } ///////////////////////////////////////////////////////////////////////// IQR_PORT源文件 //////////////////////////////////////////////////////////////////////// //************************************************************************* // 初始化IO口子程序 //************************************************************************* void Port_init() { P1SEL = 0x00; //P1普通IO功能 P1DIR = 0xF0; //P10~P13输入模式,外部电路已接上拉电阻 P1IE = 0x0F; //开启P1低四位中断 P1IES = 0x0F; //下降沿触发中断 P1IFG = 0x00; //软件清零中断标志寄存器 _EINT(); //打开总中断 LED8DIR |= 0xFF; //P6口输出模式 LED8 |= 0xFF; //先关闭所有LED } 附上局部电路图 搞定!
史海拾趣
|
本帖最后由 paulhyde 于 2014-9-15 09:04 编辑 A题 宽带前置放大器电路(本科) B题 运水机器人(本科) C题 无线汉字识别装置(本科) [ 本帖最后由 open82977352 于 2010-2-3 10:46 编辑 ] … 查看全部问答> |
|
最近在准备一个智能变送器的项目,要用到HART协议,差了些资料,大致了解了HART协议的内容,但就是不知道如何下手,还请高手指点迷津啊! 先在这里谢谢了。… 查看全部问答> |
|
采用的是STM32F105,串口输入始终是乱码 以下是串口的配置信息 void USART1_Configuration(void) { GPIO_InitTypeDef GPIO_InitStructure; USART_InitTypeDef USART_InitStructure; NVIC_InitTypeDef NVIC_InitStructur ...… 查看全部问答> |
|
最近在做一个项目,想实现MsP430对Flash的控制,有On和OFF按钮,ON可以控制电路开始采样,OFF控制停止采样,比如第一次按下on后采集到的数据存到了Flash的第一块和第二块的一部分,按下Off停止采集,下一次采集的时候就可以直接存在Flash的第三块上 ...… 查看全部问答> |




