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 ...
随机推荐
- Deer_GF之【AssetsHotfix】和【AssetsNative】文件夹的区别
Hi,今天介绍一下Deer_Gf里的[AssetsHotfix]和[AssetsNative]文件夹的区别: 框架介绍请移步[Deer_GF之框架介绍] 一.[AssetsHotfix] ...
- js类型以及存储方式
一.js内置类型 基础类型:String, number, null, undefine, boolean, symbol, bigint 引用类型:Object(包含普通对象Object,数组对象A ...
- eclipse调整控制台长度
- tp save()的用法
save()方法可以新增数据,也可以修改数据 但是要注意,在第二次save()的时候会默认修改 需 model('Keyword')->isUpdate(false)->save($dat ...
- Java面向对象之什么是继承?
继承 继承的本质是对某一批类的抽象,从而实现对现实世界更好的建模. extends的意思是"扩展".子类是父类的扩展. Java中类只有单继承,没有多继承!即 一个儿子只能有一个爸 ...
- 同一个tomcat的项目跳转
- 内网Linux下安装Nginx1.23,添加stream模块实现tcp/udp代理转发
环境:centos7.6 ngx_stream_core_module 这个模块在1.9.0版本后将被启用.但是并不会默认安装,需要在编译时通过指定 --with-stream 参数来激活这个模块,w ...
- 题解[HEOI2013]SAO.md
题意 给定一棵树,边有方向.要给点重标号,使得边都由小编号指向大编号,求重标号方案数. \(n\le10^5\) 思路 有关树的计数.套路性考虑树形 DP. 设计状态 \(f_{u}\) 表示 \(u ...
- pytorch学习笔记(9)--神经网络模型的保存与读取
一.网络模型的保存和加载 1.网络模型保存方法1 import torch import torchvision vgg16 = torchvision.models.vgg16(weights=Fa ...
- django的模型层(二)
django的模型层(二) 一 创建模型 from django.db import models # Create your models here. class Author(models.Mod ...