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 ...
随机推荐
- VUE学习-渲染函数
渲染函数 x-template 引入外面组件文件写法 <template> <h1 v-if="level === 1"> <slot>< ...
- 对Frobenius 范数的理解
Frobenius 范数是一种矩阵范数,记为 ∣ ∣ ⋅ ∣ ∣ F ||·||_F ∣∣⋅∣∣F,定义为一个矩阵所有元素平方和的开方,即 ∣ ∣ X ∣ ∣ F = ∑ i ∑ j x i , j ...
- java猜数小游戏
问题: 程序自动生成一个1~100之间的随机数字,使用程序猜出这个数字是多少: Random可以随机生成一个随机数 使用方法: 导包 创建对象 Random r = new Random(); //只 ...
- fastdfs java客户端操作
https://github.com/happyfish100/fastdfs-client-java 到此处下载下来demo 这里采用maven的方式 mvn clean install 上传到本地 ...
- 堆QAQ
L2-012 关于堆的判断 将一系列给定数字顺序插入一个初始为空的小顶堆H[].随后判断一系列相关命题是否为真.命题分下列几种: x is the root:x是根结点: x and y are si ...
- 常用ansible命令梳理
命令的具体格式 : ansible <host-pattern> [-f forks] [-m module_name] [-a args] 场景 命令 查询线上所有机器某个文件的含有某个 ...
- C++ CLI string
String^ to std::string ` include <msclr\marshal_cppstd.h> marshal_as(String^) `
- Neo4j权威指南学习笔记第一章
1.创建图数据库 1.1.创建电影节点 CREATE (TheMatrix:Movie {title:'The Matrix', released:1999, tagline:'Welcome to ...
- KingbaseES V8R3集群运维案例之---kingbase_monitor.sh启动”two master“案例
案例说明: KingbaseES V8R3集群,执行kingbase_monitor.sh启动集群,出现"two master"节点的故障,启动集群失败:通过手工sys_ctl启动 ...
- enzyme文档
Enzyme是一个用于React的JavaScript测试实用程序,它使得更容易断言,操作和遍历您的React组件的输出,它模拟了jQuery的API,非常直观,易于使用和学习. 整理相当API为中文 ...