Msp430 编写交通灯程序
题目:我想想。。。
红灯亮,按下按键后倒计时10秒,倒计时十秒后,绿灯点亮,红灯熄灭,进入绿灯的15秒倒计时,在只剩下3秒的时候,绿灯闪烁。
代码如下,有点麻烦 当时这么写的 就不改了
#include "msp430f149.h"
#include "config.h"
int key=11;
int temp=16;
unsigned int data[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//0-9的段码
void display(int key); //函数声明
void delay(int i)
{
while(i--)
{
int n=i;
while(n--);
}
} #pragma vector=TIMERA0_VECTOR
__interrupt void TIMERA0_ISR()
{ //进入十秒的倒计时
if(key>0)
{
key--;
display(key);
if(key==0)
{
P2OUT&=~BIT7;//绿灯点亮,
}
}
else if(key<=0)//接下来进入15秒的倒计时
{
if(temp>0)
{
P2OUT|=BIT0;//红灯熄灭
temp--;
display(temp); //接下来倒计时到3秒时,绿灯闪烁
if(temp<=3)
{
P2OUT^=BIT7;//绿灯以一秒为周期闪烁
}
} else if(temp<0)
{
//当15秒的定时时间结束后,关闭定时器
P2OUT&=~BIT0;//打开红灯 P4OUT=0XFF;
P5OUT|=BIT5;//先进行位选
P4OUT=0XFF;//选择Y7数码管
P5OUT&=~BIT5;//关闭位选 _BIS_SR(LPM4_bits+GIE);//进入低功耗模式0,关闭定时器
}
}
} #pragma vector=PORT1_VECTOR
__interrupt void PORT1_ISR()
{
if(P1IFG&BIT0)
{
//按键按下后,触发中断
TACTL|=TASSEL_1+MC_1+TACLR;//定时器时钟源为ACLK,选择增计数模式
while(!(P1IN&BIT0));
delay(100);
P1IFG&=~BIT0;//清除中断标志位
} } void display(int key) //显示函数 key为要显示的数值
{
unsigned int shi,ge;
shi=key/10;
ge=key%10; P4OUT=0XFF;
P5OUT|=BIT5;//先进行位选
P4OUT=0Xbf;//选择Y6数码管 0XBF
P5OUT&=~BIT5;//关闭位选
P4OUT=0X00;
P6OUT|=BIT6;//打开段选
P4OUT=data[shi];//输出十位数值
P6OUT&=~BIT6;//关闭段选
delay(50); P4OUT=0XFF;
P5OUT|=BIT5;//先进行位选
P4OUT=0X7f;//选择Y7数码管
P5OUT&=~BIT5;//关闭位选
P4OUT=0X00;
P6OUT|=BIT6;//打开段选
P4OUT=data[ge];//输出个位数值
P6OUT&=~BIT6;//关闭段选
P4OUT=0XFF; int k=500;
while(k--)
{
P4OUT=0XFF;
P5OUT|=BIT5;//先进行位选
P4OUT=0Xbf;//选择Y6数码管 0XBF
P5OUT&=~BIT5;//关闭位选
P4OUT=0X00;
P6OUT|=BIT6;//打开段选
P4OUT=data[shi];//输出十位数值
P6OUT&=~BIT6;//关闭段选
delay(50); P4OUT=0XFF;
P5OUT|=BIT5;//先进行位选
P4OUT=0X7f;//选择Y7数码管
P5OUT&=~BIT5;//关闭位选
P4OUT=0X00;
P6OUT|=BIT6;//打开段选
P4OUT=data[ge];//输出个位数值
P6OUT&=~BIT6;//关闭段选
P4OUT=0XFF;
delay(50);
}
} void main( void )
{
// Stop watchdog timer to prevent time out reset
WDTCTL = WDTPW + WDTHOLD;
BoardConfig();//初始化
Clock_Init();//系统时钟初始化 //P2.0代表红灯,P2.7代表绿灯, P1.0按键
P2DIR|=BIT0+BIT7;
P2OUT&=~BIT0;//初始状态红灯亮 P1IE|=BIT0+BIT7;//中断使能
P1IES|=BIT0+BIT7;
P1IFG&=~(BIT0+BIT7);//清除中断标志位
P1OUT|=(BIT0+BIT7);//P1.0设置为上拉电阻 //数码管的设置
P5DIR|=BIT5;//P5.5 P6.6设置为输出方向
P6DIR|=BIT6;
P6OUT&=~BIT6;//P6.6输出低电平
P5OUT&=~BIT5; //定时器A
TACCTL0=CCIE;//CCR0允许中断
TACCR0=32767;//定时时间间隔为1S 0.5s
TACTL|=TASSEL_1;
_BIS_SR(LPM0_bits+GIE);//进入低功耗模式0,打开总中断
}
如果有帮助麻烦给我点个赞吧/笔芯
Msp430 编写交通灯程序的更多相关文章
- java 7K交通灯管理系统面试题
交通灯管理系统 模拟实现十字路口的交通灯管理系统逻辑.详细需求例如以下: 1. 异常随机生成依照各个路线行驶的车辆. 比如: 由南向而来去往北向的车辆----直行车辆 由西向而来去往 ...
- 黑马程序员:Java编程_7K面试题之交通灯管理系统
=========== ASP.Net+Android+IOS开发..Net培训.期待与您交流!=========== 模拟实现十字路口的交通灯管理系统逻辑,具体需求如下: 异步随机生成按照各个路线行 ...
- 黑马程序员_JAVA之交通灯管理系统
------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 1.一.需求:模拟实现十字路口的交通灯管理系统逻辑,具体需求如下: 1.异步随机生成按照各个路 ...
- 黑马程序猿_7K面试题之交通灯系统
交通灯信号模拟系统 一.概述 模拟实现十字路口的交通灯管理系统逻辑,详细需求例如以下:(需求直接来源于老师的文档) ① 异步随机生成依照各个路线行驶的车辆. 比如: 由南向而来去往北向的车辆 ...
- 黑马程序员_java基础笔记(14)...交通灯管理系统_编码思路及代码
—————————— ASP.Net+Android+IOS开发..Net培训.期待与您交流! —————————— 1,面试题——交通灯管理系统 模拟实现十字路口的交通灯管理系统逻辑,具体需求如下: ...
- 黑马程序员_7K月薪面试题之_交通灯管理系统
----------- android培训.java培训.java学习型技术博客.期待与您交流! --------- 1,交通灯管理系统的项目需求 模拟实现十字路口的交通灯管理系统逻辑,具体需求如下: ...
- 黑马程序员——【Java高新技术】——案例:交通灯管理系统
---------- android培训.java培训.期待与您交流! ---------- 一.交通灯管理系统的项目需求 Ø 异步随机生成按照各个路线行驶的车辆 例如: 由南向而来去往北向的车辆 - ...
- 基于BASYS2的VHDL程序——交通灯
请尊重作者版权,转载请注明原地址: http://www.cnblogs.com/connorzx/p/3676746.html 数电实验交通灯VHDL版,程序写的扩展性很差,待以后有时间进行优化. ...
- Java基础---Java---面试题---交通灯管理系统(面向对象、枚举)
交通灯管理系统的项目需求: 模拟实现十字路口的交通灯管理系统逻辑,具体需求如下: 1.异步随机生成按照各个路线行驶的车辆 例如: 由南向而来去往北向的车辆-----直行车辆 由西向而来去往南 ...
- C#编程 - 交通灯模拟
程序写的有点繁杂,但大体功能出来的! 效果图: using System; using System.Collections.Generic; using System.Linq; using Sys ...
随机推荐
- cisco ios 密码恢复
如果没有break键,使用仿真软件模仿一个break 密码恢复请执行以下步骤 1. 关闭或断开路由器电源 2.开启路由器.在通电后的前30秒内按下break键(或通过仿真程序发送一个间断序列),来中断 ...
- 最全面 think php 实现微信公众号回复编号进行投票,自定义菜单功能
前期准备工作 https://developers.weixin.qq.com/doc/offiaccount/Message_Management/Receiving_standard_messag ...
- leetcode刷题(一)
1.数组 三数之和 给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组. 注意:答案中不可 ...
- iOS 防止charles抓包
方案一:检查手机Wifi是否设置了代理 public func fetchHttpProxy() -> Bool { guard let proxy = CFNetwork ...
- python调用c/c++方法
# python调用c/c++方法:一般先将c++代码转化为C类型dll(推荐使用静态dll,否则容易出现各种链接库问题;记得使用extern "C" _declspec(dlle ...
- 人脸识别:face_recognition初尝试
在学习face_recognition之前先看git上的另一个项目:face_collection .face_collection某种程度上可以看做是demo,便于我们更好的理解和使用face_re ...
- 泛微OA技巧随记
隐藏明细表的加号按钮,如果不想让用户手工添行,必须通过自动联动添明细行,可以将明细表的加号按钮隐藏. document.getElementById('$addbutton0$').style.dis ...
- java报错 SLF4J:Failed to load class "org.slf4j.impl.StaticLoggerBinder"
<dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-simple</artif ...
- 【Excel】IF条件函数公式怎么用?
版本 Excel 2019 步骤 点击插入函数 打开文档,点击公式菜单下的插入函数. 双击选择IF函数 在函数列表双击选择IF函数. 输入条件测试值 在第一个输入框输入条件测试值. 设置输出结果值
- k8s 删除 node节点
查看现有状态 [root@master ~]# kubectl get nodes NAME STATUS ROLES AGE VERSION master NotReady control-plan ...