题目:我想想。。。

红灯亮,按下按键后倒计时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 编写交通灯程序的更多相关文章

  1. java 7K交通灯管理系统面试题

    交通灯管理系统 模拟实现十字路口的交通灯管理系统逻辑.详细需求例如以下: 1. 异常随机生成依照各个路线行驶的车辆.    比如:    由南向而来去往北向的车辆----直行车辆    由西向而来去往 ...

  2. 黑马程序员:Java编程_7K面试题之交通灯管理系统

    =========== ASP.Net+Android+IOS开发..Net培训.期待与您交流!=========== 模拟实现十字路口的交通灯管理系统逻辑,具体需求如下: 异步随机生成按照各个路线行 ...

  3. 黑马程序员_JAVA之交通灯管理系统

    ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 1.一.需求:模拟实现十字路口的交通灯管理系统逻辑,具体需求如下:  1.异步随机生成按照各个路 ...

  4. 黑马程序猿_7K面试题之交通灯系统

    交通灯信号模拟系统 一.概述 模拟实现十字路口的交通灯管理系统逻辑,详细需求例如以下:(需求直接来源于老师的文档) ①      异步随机生成依照各个路线行驶的车辆. 比如: 由南向而来去往北向的车辆 ...

  5. 黑马程序员_java基础笔记(14)...交通灯管理系统_编码思路及代码

    —————————— ASP.Net+Android+IOS开发..Net培训.期待与您交流! —————————— 1,面试题——交通灯管理系统 模拟实现十字路口的交通灯管理系统逻辑,具体需求如下: ...

  6. 黑马程序员_7K月薪面试题之_交通灯管理系统

    ----------- android培训.java培训.java学习型技术博客.期待与您交流! --------- 1,交通灯管理系统的项目需求 模拟实现十字路口的交通灯管理系统逻辑,具体需求如下: ...

  7. 黑马程序员——【Java高新技术】——案例:交通灯管理系统

    ---------- android培训.java培训.期待与您交流! ---------- 一.交通灯管理系统的项目需求 Ø 异步随机生成按照各个路线行驶的车辆 例如: 由南向而来去往北向的车辆 - ...

  8. 基于BASYS2的VHDL程序——交通灯

    请尊重作者版权,转载请注明原地址: http://www.cnblogs.com/connorzx/p/3676746.html 数电实验交通灯VHDL版,程序写的扩展性很差,待以后有时间进行优化. ...

  9. Java基础---Java---面试题---交通灯管理系统(面向对象、枚举)

    交通灯管理系统的项目需求: 模拟实现十字路口的交通灯管理系统逻辑,具体需求如下: 1.异步随机生成按照各个路线行驶的车辆  例如:   由南向而来去往北向的车辆-----直行车辆   由西向而来去往南 ...

  10. C#编程 - 交通灯模拟

    程序写的有点繁杂,但大体功能出来的! 效果图: using System; using System.Collections.Generic; using System.Linq; using Sys ...

随机推荐

  1. Kubernetes v1.22 编译 kubeadm 修改证书有效期到 100 年

    此方法支持以下 kubeadm版本 v1.22到v1.25 kubeadm 默认证书为一年,一年过期后,会导致 api service 不可用,使用过程中会出现:x509: certificate h ...

  2. springboot AOP配置

    在Springboot中添加AOP配置分两步: 最近学习AOP ,记录一下,虽然很多名字不太清楚,但是问题不大 1:在pom.xml中添加AOP依赖 2:建一个AOP配置类 下面来看下代码是怎么实现的 ...

  3. C++实现链栈相关操作代码

    #include<iostream>#include<cstdlib>using namespace std;#define MAXSIZE 100#define OK 1#d ...

  4. 两个jsp界面之间使用window.location.href使用?传递参数以及接受参数

    这篇文章如果能给你带来帮助,不胜荣幸,如果有不对的地方也欢迎批评指正. 网上有很多方法是讲怎么截取字符串啊等等的方法来获取参数,说实话,看着我就觉得费劲,咱们可以换一种思路来思考.一般跳转界面多为前段 ...

  5. 如何使用postman

    一. 了解postman 1. 什么是postman? ------ 软件测试用来做接口测试的工具. 2. 如何下载postman ------ https://www.getpostman.com/ ...

  6. Jest - Configuring Jest

    Jest is a delightful JavaScript Testing Framework with a focus on simplicity. It works with projects ...

  7. vmware 克隆虚拟机前删除网络文件

    解决办法: 删除 /etc/udev/rules.d/70-persistent-net.rules文件,系统重启后重新自动生成 ··· rm -rf /etc/udev/rules.d/70-per ...

  8. 实验一-密码引擎-加密API研究

    实验一-密码引擎-加密API研究 API:应用程序接口(API:Application Program Interface)是一组定义.程序及协议的集合,通过 API 接口实现计算机软件之间的相互通信 ...

  9. win10 优化关键字

    powercfg -duplicatescheme e9a42b02-d5df-448d-aa00-03f14749eb61 通知和操作 自动维护 存储 个性化 透明效果 启动 登录选项 更新或重启后 ...

  10. SpringMVC的学习day01

    什么是SpringMVC 基于狂神说SpringMVC课程的学习 前面已经学习了spring.javaSE.javaweb.mybatis等知识,今天开始学习springMVC,是ssm框架的最后一个 ...