MSP430中断小实验——通过按键改变小灯闪烁频率
本小实验基于MSP430f5529,不同的型号可能管脚和中断配置有所不同。
实现的功能为:
第一次按下按键后,系统以每 2 秒钟,指示灯暗 1 秒,亮 1 秒的方式闪烁。程序采用默认时钟配置;
第二次按下按键后,系统以每 4 秒钟,指示灯亮 2 秒,暗 2 秒钟方式闪烁。
第三次按下按键后,系统以每 4 秒钟,指示灯亮 1 秒,暗 3 秒方式闪烁。程序基于定时器配置。
/*
* main.c
* 第一次按下按键后,系统以每 2 秒钟,指示灯暗 1 秒,亮 1 秒的方式闪
烁,程序采用默认时钟配置;
第二次按下按键后,系统以每 4 秒钟,指示灯亮 2 秒,暗 2 秒钟方式闪
烁。
第三次按下按键后,系统以每 4 秒钟,指示灯亮 1 秒,暗 3 秒方式闪
烁,程序基于定时器配置。
*/
#include <msp430f5529.h>
int count = 0; //计数
int t1_50ms = 20; //一个单位对应50ms(亮)
int t2_50ms = 20; //一个单位对应50ms(灭)
int flag = 0; //闪烁频率标志
int flag_t = 1; //亮灭标志
int main(void) {
WDTCTL = WDTPW+WDTHOLD;
//时钟中断配置
P1DIR |= BIT0;
TA0CCTL0 = CCIE;//使能定时器中断
TA0CCR0 = 50000;
TA0CTL = TASSEL_2 + MC_1 + TACLR;//配置为SMCLK,升计数模式,初始化时钟
//S1配置
P1IE |= BIT7; //允许P1.7中断
P1IES |= BIT7; //设置为下降沿中断
P1IFG &= ~BIT7; //设置为输入
P1REN |= BIT7; //启用上下拉电阻
P1OUT |= BIT7; //将电阻设置为上拉
__bis_SR_register(LPM0_bits+GIE); //打开中断
return 0;
}
#pragma vector=TIMER0_A0_VECTOR
__interrupt void TIMER0_A0_ISR(void)
{
if(count==t1_50ms&&flag_t==1) //灯亮
{
P1OUT |= BIT0;
count=0;
flag_t=0;
}
else if(count==t2_50ms&&flag_t==0) //灯灭
{
P1OUT &=~BIT0;
count = 0;
flag_t=1;
}
else count++;
}
#pragma vector=PORT1_VECTOR;
__interrupt void botton (void)
{
__delay_cycles(75);//延时消抖
switch(flag)//flag决定闪烁频率
{
case 0:
t1_50ms = 20;t2_50ms = 20;break;//1秒亮 1秒暗
case 1:
t1_50ms = 40;t2_50ms = 40;break;//2秒亮 2秒暗
case 2:
t1_50ms = 60;t2_50ms = 20;break;//3秒亮 3秒暗
}
flag++;//状态变化
if(flag>2) flag = 0;//flag归位
P1IFG &=~ BIT7; //清除中断标志位
__bis_SR_register(LPM0_bits+GIE);//打开中断
}
MSP430中断小实验——通过按键改变小灯闪烁频率的更多相关文章
- 30个Python物联网小实验5:光线感应灯
30个Python物联网小实验5:光线感应灯 光线传感器 光线变化执行函数 光线状态执行函数 30个Python物联网小实验5:光线感应灯 光线传感器 可以检测周围环境的亮度: 方向性较好,感知特定方 ...
- CC2530学习路线-基础实验-GPIO 按键控制LED灯亮灭(2)
目录 1.前期预备知识 1.1 新大陆Zigbee模块按键电路图 1.2 CC2530相关寄存器 1.3 CC2530中断走向图 1.4 使用C语言为51单片机编写中断程序 1.5 *函数指针 2. ...
- 1.4 Crack小实验
0_day 第一章 基础知识 1.4 Crack小实验 <0day_2th>王清 著 电子书 下载链接:https://pan.baidu.com/s/11TgibQSC3-kYwCInm ...
- PBR综合小实验视频-狮子XL
这个是上学时候录的一个策略路由小实验
- ubuntu下格式化内存当硬盘使的小实验
内存虚拟硬盘(ramdisk)是指通过软件技术,将物理内存进行分割,将一部分内存通过虚拟技术转变为硬盘以较大幅度提升计算机数据读取速度和保护硬盘. 在ubuntu下的dev下有ram相关的文件,这些文 ...
- MongoDB 主从复制小实验
MongoDB 主从复制小实验 操作环境描述:WIN8 64位操作系统,内装虚拟机为CentOS 5.5 32位系统. 操作描述:跟其他关系型数据库类似,在主库进行数据操作,将数据同步到从节点,从节 ...
- PS小实验-去除水印
PS小实验-去除水印 水印是一些品牌商覆盖在图片或视频上的一个商标logo或小文本,比如大家最讨厌的百度logo,作者本人也是比较讨厌水印的,让好端端的一张图片变得美中不足. 个人觉得用photosh ...
- arduino新入手体验:三个小实验
新入手体验:三个小实验 一:一个LED闪烁 控制要求:1个LED灯,每隔50ms闪烁一次 实物连接图: 控制代码: //2018.6/11 ;//定义数字接口10,对应 void setup() { ...
- [na]出口选路pbr小实验视频
什么是策略路由? 一般都是部署在出口路由器,用于路径强制分发的, 优先级高于路由表. 策略路由小实验视频 这个是读书时候录的一个策略路由小实验
- Hadoop之词频统计小实验
声明: 1)本文由我原创撰写,转载时请注明出处,侵权必究. 2)本小实验工作环境为Ubuntu操作系统,hadoop1-2-1,jdk1.8.0. 3)统计词频工作在单节点的伪分布上,至于真正实 ...
随机推荐
- KingbaseES 的行列转换
目录 背景 行转列 数据准备 分组聚合函数+CASE 根据压缩数据的格式,横向展开数据列选取不同方式 crosstab函数 PIVOT 操作符 PIVOT 操作符的限制 工具 ksql 的元命令 \c ...
- QT学习(五)----360界面制作(2终结)
继续上一章的360新特性界面.源代码:http://download.csdn.net/detail/zhangyang1990828/5241242 上一章中实现了整个界面的纯UI设计,这次我们让它 ...
- Go编译过程
一. Go编译流程 二.过程说明 1. 词法解析 读取Go源文件,将字符序列转换为符号(token)序列,比如将":="转换为_Define 代码中的标识符.关键字.运算符和分隔符 ...
- 第一个HTML
第一个HTML <!DOCTYPE html><!--html 文件开始--><html lang="en"><!--head 文件头-- ...
- CentOS 7.7系统安装Redis 6.0.3
前提操作 避免出现如下的错误 yum -y install gcc tcl yum -y install centos-release-scl yum -y install devtoolset-9- ...
- 容器监控:cAdvisor
CAdvisor是Google开源的一款用于展示和分析容器运行状态的可视化工具.通过在主机上运行CAdvisor用户可以轻松的获取到当前主机上容器的运行统计信息,并以图表的形式向用户展示. 在本地运行 ...
- 13. Fluentd输出插件:in_forward用法详解
in_forward插件通常用于从其他节点接收日志事件,这些节点包括其他Fluentd实例.fluent-cat命令行或者Fluentd客户端程序.这是目前效率最高的日志事件接收方法. in_forw ...
- Linux下登陆MySQL时遇到报错"RROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) "
前言 作者在2021-07-21时遇到 linux下登陆MySQL时遇到报错"RROR 1045 (28000): Access denied for user 'root'@'localh ...
- 分布式存储系统之Ceph集群部署
前文我们了解了Ceph的基础架构和相关组件的介绍,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/16720234.html:今天我们来部署一个ceph集群: 部 ...
- 怎样在GitHub上建立仓库、以及怎样实现分支代码的合并。保姆级别的教程
GitHub官网地址:https://github.com/ 注意:前提是已经注册了GitHub 文章目录 第一步:创建一个新的仓库 第二步.创建一个分支 第三步.编辑和发布更改的内容 第四步.拉取请 ...