DO OR DIE


MSP430 MSP430单片机输入/输出模块 通用I/O端口GPIO LED&按键

  • 一、原理图
  • 二、I/O端口常用操作C语言描述及常用C语言解析
    • 1、MSP430头文件中的标准位
    • 2、I/O端口常用操作C语言描述
  • 三、实验
    • 1、LED交替闪烁
    • 2、呼吸灯
    • 3、独立按键控制LED亮灭
  • 4、矩阵按键


一、原理图

 ●MSP430F5529 LaunchPad实验板上仅有的两个独立按键和LED。


二、I/O端口常用操作C语言描述及常用C语言解析

1、MSP430头文件中的标准位

 在每一个具体的430型号单片机的头文件中都可以找到(如msp430F5529.h)。

/************************************************************
* STANDARD BITS
************************************************************/#define BIT0                   (0x0001)
#define BIT1                   (0x0002)
#define BIT2                   (0x0004)
#define BIT3                   (0x0008)
#define BIT4                   (0x0010)
#define BIT5                   (0x0020)
#define BIT6                   (0x0040)
#define BIT7                   (0x0080)
#define BIT8                   (0x0100)
#define BIT9                   (0x0200)
#define BITA                   (0x0400)
#define BITB                   (0x0800)
#define BITC                   (0x1000)
#define BITD                   (0x2000)
#define BITE                   (0x4000)
#define BITF                   (0x8000)/***********************************************************

2、I/O端口常用操作C语言描述

总结:
xxxx |= BITx //置1
xxxx &= ~BITx //置0

例1
将P1.0口定义为输出且为高电平:

P1DIR |= 0x01;
P1OUT |= 0x01;

或用标准位表示:

P1DIR |= BIT0;
P1OUT |= BIT0;

例2
将P1.7口定义为输入且为低电平:

P1DIR &= ~BIT7;
P1OUT &= ~BIT7;或
P1DIR |= 0x7F;
P1OUT |= 0x7F;

例3
将P1.0,P1.1口定义为输出且为高电平:

P1DIR |= BIT0+BIT1;
P1OUT |= BIT0+BIT1;或
P1DIR |= 0x03;
P1OUT |= 0x03;

例4
将P1.0,P1.1口定义为输入且为低电平:

P1DIR &= ~(BIT0+BIT1);
P1OUT &= ~(BIT0+BIT1);或
P1DIR |= 0xfc;
P1OUT |= 0xfc;

例5
将一位或几位翻转,比如原来P1.0是高(低)电平,现在要变成低(高)电平

P1OUT ^= BIT0;

例6
检测一位或几位是否为1,一般用于条件或判断语句中。

if(P1IN & BIT0)   //检测P1.0是否为1

三、实验

1、LED交替闪烁

#include <msp430F5529.h>void LED_init(void);void main(void)
{volatile unsigned int delay;WDTCTL = WDTPW | WDTHOLD; // stop watchdog timerLED_init();while(1){P1OUT ^= BIT0;  //取反P4OUT ^= BIT7;  //取反for(delay=0;delay<50000;delay++);}
}void LED_init(void)
{P1DIR |= BIT0;  //置1 ,方向输出P1OUT &= ~BIT0;  //输出0,灭灯P4DIR |= BIT7;  //置1 ,方向输出P4OUT |= BIT7;  //输出1,亮灯}

2、呼吸灯

#include <msp430F5529.h>#define Pulse_Width 600void LED_init(void);void main(void)
{volatile unsigned int delay;unsigned int tH;WDTCTL = WDTPW | WDTHOLD; // stop watchdog timerLED_init();while(1){for(tH=Pulse_Width;tH>0;tH--)   //由强到弱{P1OUT |= BIT0;  //输出1,亮灯for(delay=0;delay<tH;delay++);P1OUT &= ~BIT0;  //输出0,灭灯for(delay=0;delay<(Pulse_Width - tH);delay++);}for(tH=0;tH<Pulse_Width;tH++)  //由弱到强{P1OUT |= BIT0;  //输出1,亮灯for(delay=0;delay<tH;delay++);P1OUT &= ~BIT0;  //输出0,灭灯for(delay=0;delay<(Pulse_Width - tH);delay++);}}
}void LED_init(void)
{P1DIR |= BIT0;  //置1 ,方向输出P1OUT &= ~BIT0;  //输出0,灭灯P4DIR |= BIT7;  //置1 ,方向输出P4OUT |= BIT7;  //输出1,亮灯}

3、独立按键控制LED亮灭

 ●MSP430每个IO口都具有方向,读取外部电平时,需要先将IO口设置为输入方向,又由于板子上的按键没有接上拉电阻,为时使读取结果更加准确,使用内部上拉电阻。
 ●重点在void key_init(void);函数
 ●用软件延时去写长按短按,单击双击感觉误差挺大的,意义不大,不如用定时器去写。
 ●关于独立按键的原理可参考 独立按键的原理

#include <msp430F5529.h>#define Delay10ms() for(delay=0;delay<500;delay++)void LED_init(void);
void key_init(void);void main(void)
{volatile unsigned int delay;WDTCTL = WDTPW | WDTHOLD; // stop watchdog timerLED_init();key_init();while(1){if((P2IN & BIT1) == 0){Delay10ms();if((P2IN & BIT1) == 0){P1OUT ^= BIT0;  //取反P4OUT ^= BIT7;  //取反while(!(P2IN & BIT1));  //松手检测}}}
}void LED_init(void)
{P1DIR |= BIT0;  //置1 ,方向输出P1OUT &= ~BIT0;  //输出0,灭灯P4DIR |= BIT7;  //置1 ,方向输出P4OUT &= ~BIT7;  //输出0,灭灯}void key_init(void)
{//S1P2DIR &= ~BIT1;  //置0 ,方向输入(默认)P2REN |= BIT1;  //置1 ,启用上下拉P2OUT |= BIT1;  //置1 ,选择上拉//S2P1DIR &= ~BIT1;  //置0 ,方向输入(默认)P1REN |= BIT1;  //置1 ,启用上下拉P1OUT |= BIT1;  //置1 ,选择上拉
}

4、矩阵按键

MSP430 MSP430单片机输入/输出模块 通用I/O端口GPIO LED按键相关推荐

  1. 按键自加自减的c语言数码管编程,设计一个单片机输入显示系统,要求每按一下按键数码管显示数据加1(数码管初始值为0,9加1 后显示0)。...

    程序清单如下: #include < reg51.h >// 51单片机头文件 #define uchar unsigned char// 宏定义,用uchar替代无符号字符型 #defi ...

  2. 【51单片机快速入门指南】2:GPIO LED与按键

    目录 硬知识 概念 I/O口配置 准双向口/弱上拉输出配置 开漏输出配置 实战 延时函数的生成 闪烁一个LED灯 源码 实验现象 流水灯 源码 实验现象 按键控制LED灯 按键介绍 源码 实验现象 普 ...

  3. MSP430系列单片机的DMA使用全面认识

    快速参考目录 DMA的解释 MSP430系列单片机中的DMA MSP430 DMA控制器的特性 DMA的应用 明确你得需求 一个能用起来的官方例程 待续 DMA的解释 DMA(Direct Memor ...

  4. 单片机_CT107D训练平台电路原理图\蓝桥杯训练板\输入输出模块\矩阵按键\蜂鸣器电路\继电器电路\LM386功率放大电路,驱动扬声器

    输入/输出模块 配置 4×4 键盘矩阵,其中四个按键可通过跳线配置为独立按键: 配置继电器.蜂鸣器: 配置功率放大电路,驱动扬声器. 1>4×4 键盘矩阵原理图如下: 图片中的按键电路可以切换成 ...

  5. MSP432输入输出模块

    第6章MsP432微控制器输入输出模块 单片机中的输入输出模块是供信号输入.输出所用的模块化单元.MsP432单片机的片内输入输出模块非常丰富,典型的输入输出模块有:通用O端口.模/数转换模块.比较器 ...

  6. 单片机c语言中void key(void),STC单片机C语言通用万能编程模板

    <STC单片机C语言通用万能编程模板>由会员分享,可在线阅读,更多相关<STC单片机C语言通用万能编程模板(23页珍藏版)>请在人人文库网上搜索. 1.8051 单片机 C 语 ...

  7. 单片机的字节寻址c语言,单片机C语言通用万能编程模板

    <单片机C语言通用万能编程模板>由会员分享,可在线阅读,更多相关<单片机C语言通用万能编程模板(30页珍藏版)>请在人人文库网上搜索. 1.8051单片机C语言编程模板 1.函 ...

  8. ethercat从站io输入输出模块,lan9252,stm32f407,提供原理图,源代码及相关资料

    ethercat从站io输入输出模块,lan9252,stm32f407,提供原理图,源代码及相关资料 编号:41419628426794133博文丽娜

  9. plc开关量输入输出模块的选择

    ①开关输入模块的选择. 开关输入模块用于接收现场输入设备的开关信号,将信号转换为plc可接受的低压信号,实现PLC内外信号的电气隔离.选择时应考虑以下几个方面. ●输入信号的类型和电压等级开关输入模块 ...

最新文章

  1. 常用git命令思维图
  2. aggr代码 cellranger_单细胞转录组测序数据分析流程-数据预处理
  3. Maven快速创建SpringMVC web(1)
  4. 深度学习100例-生成对抗网络(GAN)手写数字生成 | 第18天
  5. react(87)--批量删除进行置空操作
  6. 会php学java入门要多久_php8(java入门要多久)
  7. LeetCode MySQL 1454. 活跃用户(连续dense_rank排名函数)
  8. 微信小程序:页面跳转时传递数据到另一个页面
  9. zbb20170228_spring_tdt
  10. 搜索宝典:搜索资料的三重境界【帮助高级篇】
  11. iText操作Word工具类
  12. 量子计算是否会终结区块链?
  13. PAT 乙级 1039. 到底买不买(20)Java版
  14. DHTML【6】--CSS
  15. android studio 快捷键修改
  16. Android deeplink原理解析
  17. 个人所得税计算java版
  18. 关于即将到来的软件行业的降维打击的几点想法
  19. 规范化理论:范式等级
  20. Kubernetes 三大探针及探针方式

热门文章

  1. Arduino简单实现两自由度Scara机器人
  2. 股票作手操盘术-勘误
  3. 2022年3月青少年软件编程(Python)等级考试试卷(一级真题)
  4. macbook苹果电脑新手快速上手
  5. 一个数组实现两个栈(共享栈)
  6. 这就是2020:全球云计算十一大年度话题盘点
  7. 微信如何添加企业微信信息服务器地址,企业微信怎么添加管理员 设置方法介绍...
  8. 基于Ext的开发实例_模拟Windows桌面
  9. win10家庭版 QQ2021和TIM QQ登入后马上提示恢复上次意外关闭信息,然后就卡死奔溃闪退。
  10. Centos7下的zabbix安装与部署