题目:我想想。。。

红灯亮,按下按键后倒计时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. 隐藏来源 禁用Referrer 的方法

    原文链接: https://www.cnblogs.com/duanweishi/p/16490197.html https://blog.csdn.net/qq996150938/article/d ...

  2. PTA---求月天数

    最近做了几次模拟考试,对于求月天数这个题目有了更深一点的理解. 这个题的题目基本就是让用户输入年份和月份,给出该月有多少天. 对于这个题,首先就要考虑年份的问题,因为闰年和非闰年在二月是有一点不同的, ...

  3. 自定义Lock实现

    1 package com.wyt.lock.test; 2 3 import java.util.concurrent.LinkedBlockingQueue; 4 import java.util ...

  4. 靶机练习5: Sar

    靶机地址 https://www.vulnhub.com/entry/sar-1,425/ 信息收集阶段 进行全端口扫描,枚举目标的端口和服务 nmap -n -v -sS --max-retries ...

  5. OS-lab1

    OS-lab1 boot boot文件夹中只有start.S文件,这个文件用于初始化内核.关掉中断,设置内核栈,并跳转到main函数. init init.c 执行初始化操作. main.c 主函数, ...

  6. Window10上CLion极简配置教程

    Window10上CLion极简配置教程 1. 首先,下载安装CLion 去JB公司官网下载CLion,https://www.jetbrains.com/clion/download/#sectio ...

  7. 记录 springboot 整合swagger2 出现documentationPluginsBootstrapper&&NullPointerException异常

    记录 由于springboot版本高 整合swagger2出现null异常 springboot 版本: swagger2 依赖版本: 出现的异常: 解决方案: application 添加如下依赖 ...

  8. 2023-03-02 记录一下关于chatGPT使用方法

    国内版: 在线免费web版: https://chat.forchange.cn/(不用登录) https://app.writesonic.com/login(要登录) 在线免费微信版:AI对话未来 ...

  9. python 嵌套对象转为dict

    as_dict(self, keys=None, exclude_keys=None): """ 将ORM对象序列化为字典 :param keys: :return: & ...

  10. CAD梦想看图手机版20211101更新(手机版CAD软件)

    CAD梦想看图手机版20211101更新(手机版CAD软件)1. 新界面风络2. 增加图块库功能3. 适配Android 114. 修改图块中的,多线义线的线型可能显示不对问题5. 修改图块中套用图块 ...