//程序:ex5_3.c

//功能:交通灯控制程序

#include            //包含头文件reg51.h,定义了51单片机的专用寄存器

unsigned char t0,t1;         //定义全局变量,用来保存延时时间循环次数

//函数名:delay0_5s1

//函数功能:用T1的工作方式1编制0.5 s延时程序,假定系统采用12 MHz晶振,定

//          时器T1、工作方式1定时50 ms,再循环10次即可定时到0.5 s

//形式参数:无

//返回值:无

void delay0_5s1()

{

for(t0=0;t0<10;t0++)                //采用全局变量t0作为循环控制变量

{

TH1=(65536-50000)/256;        //设置定时器初值

TL1=(65536-50000)%256;

TR1=1;                                       //启动T1

while(!TF1);       //查询计数是否溢出,即50ms定时时间到,TF1=1

TF1=0;              //50ms定时时间到,将定时器溢出标志位TF1清零

}

}

//函数名:delay_t1

//函数功能:实现0.5~128s延时

//形式参数:unsigned char t;

//          延时时间为0.5s×t

//返回值:无

void delay_t1(unsigned char t)

{

for(t1=0;t1

delay0_5s1();

}

//函数名:int_0

//函数功能:外部中断0中断函数,紧急情况处理,当CPU响应外部中断0的中断请求时,

//          自动执行该函数,实现两个方向红灯同时亮10 s

//形式参数:无

//返回值:无

void int_0()  interrupt 0             //紧急情况中断

{

unsigned char i,j,k,l,m;

i=P1;                                //保护现场,暂存P1口、t0、t1、TH1、TL1

j=t0;

k=t1;

l=TH1;

m=TL1;

P1=0xdb;                        //两个方向都是红灯

delay_t1(20);                        //延时10 s

P1=i;                        //恢复现场,恢复进入中断前P1口、t0、t1、TH1、TL1

t0=j;

t1=k;

TH1=l;

TL1=m;

}

//函数名:int_1

//函数功能:外部中断1中断函数,特殊情况处理,当CPU响应外部中断1的中断请求时,

//                   自动执行该函数,实现A道放行5 s

//形式参数:无

//返回值:无

void int_1() interrupt 2          //特殊情况中断

{

unsigned char  i,j,k,l,m;

EA=0;                          //关中断

i=P1;                                //保护现场,暂存P1口、t0、t1、TH1、TL1

j=t0;

k=t1;

l=TH1;

m=TL1;

EA=1;                                  //开中断

P1=0xf3;                        //A道放行

delay_t1(10);                        //延时5 s

EA=0;                                //关中断

P1=i;                        //恢复现场,恢复进入中断前P1口、t0、t1、TH1、TL1

t0=j;

t1=k;

TH1=l;

TL1=m;

EA=1;                                //开中断

}

void main()                        //主函数

{

unsigned char k;

TMOD=0x10;                        //T1设置为工作方式1

EA=1;                           //开总中断允许位

EX0=1;                          //开外部中断0中断允许位

IT0=1;                           //设置外部中断0为下降沿触发

EX1=1;                          //开外部中断1中断允许位

IT1=1;                           //设置外部中断1为下降沿触发

while(1){

P1=0xf3;                        //A绿灯,B红灯,延时55 s

delay_t1(20);

for(k=0;k<3;k++)                        //A绿灯闪烁3次

{P1=0xf3;

delay0_5s1();                        //延时0.5 s

P1=0xfb;

delay0_5s1();                        //延时0.5 s

}

P1=0xeb;                                //A黄灯,B红灯,延时2 s

delay_t1(4);

P1=0xde;                                //A红灯,B绿灯,延时55 s

delay_t1(110);

for(k=0;k<3;k++)                        //B绿灯闪烁3次

{P1=0xde;

delay0_5s1();                        //延时0.5 s

P1=0xdf;

delay0_5s1();                        //延时0.5 s

}

P1=0xdd;                                   //A红灯,B黄灯,延时2 s

delay_t1(4);

}

}

红绿灯的html代码,简易红绿灯的仿真设计与单片机源代码(注释很详细)相关推荐

  1. 【毕业设计】28-基于单片机的音乐播放器简易音乐播放器设计(原理图+源代码+仿真工程+答辩PPT+答辩论文)

    typora-root-url: ./ [毕业设计]28-基于单片机的音乐播放器简易音乐播放器设计(原理图+源代码+仿真工程+答辩PPT+答辩论文) 文章目录 typora-root-url: ./ ...

  2. 51单片机简易电阻测量仪仿真设计

    51单片机简易电阻测量仪仿真设计( proteus仿真+程序+报告+讲解视频) 仿真图proteus7.8及以上 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:S0037 51单 ...

  3. 基于STM32的简易电子秒表仿真设计(仿真+程序+设计报告+讲解)

    基于STM32的简易电子秒表仿真设计(仿真+程序+设计报告+讲解) 视频演示 1.主要功能 2.仿真 3. 程序 4. 设计报告 5.资料清单&下载链接 仿真图proteus 8.9 程序编译 ...

  4. 【039】基于51单片机的简易门铃Proteus仿真设计

    一.压缩包资料内容 (1).基于51单片机的简易门铃proteus仿真设计一份: (2).基于51单片机的简易门铃proteus仿真设计keli源代码一份: (3).基于51单片机的简易门铃prote ...

  5. 用html编写一个红绿灯,利用js实现简易红绿灯

    HTML代码: 在一个div容器内,设置3个span CSS代码: .red_light { width: 200px; height: 200px; border-radius: 50%; marg ...

  6. 基于单片机串口远程多路温湿度采集仿真-基于单片机ADC0809八路电压采集系统设计-基于单片机16x32点阵多模式显示仿真设计-基于单片机餐厅呼叫控制系统仿真设计-基于STM32单片机的智能水杯设计

    1220基于单片机ADC0809八路电压采集系统设计-毕设课设资料 数码管显示,测量八路电压表. #define addo (5.0/255.0) #define zero 0.005 //用于校准A ...

  7. 粒子群算法matlab代码(注释很详细哦,图像也美美哒,任意维度)

    2022.07.09更新: 更简洁的实现请点击这里 原博文: 答疑: 我把答疑放在最前面了.很多小伙伴真的是零基础,既不懂matlab也不懂粒子群算法.因此我把最常问我的问题总结一下. Q1:为什么我 ...

  8. 洗衣机程序c语言代码大全,全自动洗衣机控制器设计的单片机代码

    #include //****************************// #define uchar unsigned char #define uint unsigned int //** ...

  9. 基于51单片机的简易电容值测量仪proteus仿真设计

    51单片机简易电感测量仪仿真设计( proteus仿真+程序+讲解视频) 仿真图proteus7.8及以上 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:S0039 51单片机简 ...

最新文章

  1. java泛型程序设计——类型变量限定 + 泛型代码和虚拟机
  2. Redis Client Lettuce 5 GA发布
  3. v$session v$session_wait
  4. CSS可以实现可视化设计吗?要如何实现?
  5. 【集合】JDK 7 HashMap集合的ConcurrentModificationException 原因
  6. Python基础语法案例(Fibonacci):选择结构、循环结构、异常处理结构、代码优化
  7. RandomAccessFile 随机存取文件任意位置数据
  8. matlab gabor 滤波器
  9. CentOS 6.5编译安装MySQL5.7.7rc
  10. Camshift算法(1)
  11. 青海师大有没有计算机系,计算机专业选择:北交、重邮实力强劲,青海师大性价比不错...
  12. 2023中国矿业大学计算机考研信息汇总
  13. java连连看实验报告_连连看实验报告
  14. Winform四边阴影
  15. 基于Simulink宽带单基地雷达系统仿真(附源码)
  16. Android设备设置Apn相关
  17. 电流镜电流--第10学时
  18. mindmanager for mac V2021.13中文版思维导图软件
  19. 红米note11tpro和红米note11tpro+有哪些区别
  20. 怎么可以在电脑上录屏

热门文章

  1. 使用VS2012 的15个技巧
  2. (李兴华)【FANUC FOCAS1/2 Library 开发系列教程】-序言
  3. 台式计算机显示屏不亮,台式电脑显示屏不亮怎么回事
  4. 小知识-关于表达式的副作用与逗号表达式
  5. PCL | Cloudcompare打开pcd文件出错
  6. 【日常篇】007_利用pygame实现经典扫雷
  7. N76、MS51的下载电路图
  8. 行楷练习2 横连点、纵连点、附钩横、连横
  9. listFiles()方法介绍
  10. 如何恢复已删除的文件