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)统计词频工作在单节点的伪分布上,至于真正实 ...
随机推荐
- spring项目中starter包的原理,以及自定义starter包的使用
MAVEN项目中starter的原理 一.原始方式 我们最早配置spring应用的时候,必须要经历的步骤:1.pom文件中引入相关的jar包,包括spring,redis,jdbc等等 2.通过pro ...
- 第四章 部署K8s前准备工作
一.主机准备 1.硬件 准备5台2C/2g/50g虚拟机: Centos7.6系统 2.集群规划 使用10.4.7.0/24网络 IP 主机名 10.4.7.11 hdss7-11.host.com ...
- KingbaseES 中 JSON 介绍
KingbaseES支持JSON和JSONB.这两种类型在使用上几乎完全一致,主要区别是 JSON类型把输入的数据原封不动的存放到数据库中.JSONB类型在存放时把JSON解析成二进制格式. JSON ...
- KingbaseES 数据库参数优化
一.数据库应用类型 针对不同的应用模型,需要对数据库配置进行优化: 1.网络应用程序(WEB) 通常受 CPU 限制 DB比RAM小得多 90% 或更多的简单查询 2.在线事务处理 (OLTP) ...
- K8S部署超过节点的Pod
在阿里云上部署了一个K8S集群,一master, 两node: 然后执行 kubectl create -f tomcat.yml yaml如下: apiVersion: apps/v1 kind: ...
- git 密码修改
当由于修改了Git 的密码导致 pull 等操作报错时,比如报以下错误: fatal: Authentication failed for 'http://xxxxxxxxxxxxxxxxxx.git ...
- Typora自动上传超级详细教程!!
第一步检查环境变量 打开cmd 查看以下环境变量 需要软件: Typora PicGo gitee账号 配置node 配置git 第二步创建gitee仓库 设置仓库名直接创建,因为这里不能直接修改开源 ...
- 【Azure 环境】Azure Resource Graph Explorer 中实现动态数组数据转换成多行记录模式 - mv-expand
问题描述 想对Azure中全部VM的NSG资源进行收集,如果只是查看一个VM的NSG设定,可以在门户页面中查看表格模式,但是如果想把导出成表格,可以在Azure Resource Graph Expl ...
- 无线WIFI连接
家里的无线网络覆盖一直不全, 最近想改善一下.买了一个mercury的小路由器MW156RM 其实,我还是不理解WDS, repeater, bridge模式有什么区别. 目标就是实现最少的改动,保持 ...
- Promtail 配置文件说明
转载自:https://mp.weixin.qq.com/s?__biz=MzU4MjQ0MTU4Ng==&mid=2247492163&idx=1&sn=56b26aa387 ...