当红灯时按下s2程序报警,但是本来显示十几秒的数码管,十位数突然消失,然后个位数卡住不动,当报警器响完后,十位数又会出现,然后程序就直接卡住不动。

`
#include<reg51.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int

sbit dula=P2^6;
sbit wela=P2^7;
sbit beep=P2^3;
sbit kaiguan=P3^0;

unsigned int pp;
unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
uchar j,k,l=255;
uchar a1,a0;
uchar shijian,deng=2,dengL=2;
void delay(unsigned int i)
{
for(j=i;j>0;j–)
for(k=125;k>0;k–);
}

void delaytwo() //大概0.5ms左右的延时
{
uchar a;
for(a=450;a>0;a–)
{
nop();
}
}

void display(unsigned char sh_c,unsigned char g_c)
{
dula=0;
P0=table[sh_c];
dula=1;
dula=0;

wela=0;
P0=0xfe;
wela=1;
wela=0;
delay(5);

P0=table[g_c];
dula=1;
dula=0;

P0=0xfd;
wela=1;
wela=0;
delay(5);
}

void main()
{
TMOD=0x01;
TR0=1;
TH0=(65536-46080)/256;// 由于晶振为11.0592,故所记次数应为46080,计时器每隔50000微秒发起一次中断。
TL0=(65536-46080)%256;//46080的来历,为5000011.0592/12
ET0=1;
EA=1;
while(1)
{
while(dengL==1 && !kaiguan)
{
uint m;
uint i;
for(i=5;i>0;i–)
{
for(m=800;m>0;m–) //持续时间0.5ms
800
{
beep=~beep;
delaytwo(); //2000HZ的信号。
}
for(m=500;m>0;m–) //持续时间0.5ms2500
{
beep=~beep;
delaytwo();
delaytwo(); //1000HZ的信号。
}
}dengL=2;
}
if(shijian0)
{
switch(deng)
{
case 0: shijian=20; //红灯
deng=1;
dengL=1;
break;
case 1: shijian=5; //黄灯
deng=2;
dengL=2;
break;
case 2: shijian=8; //绿灯
deng=3;
dengL=2;
break;
case 3: shijian=5; //黄灯
deng=0;
dengL=2;
break;
}
}
if(pp20)
{ pp=0;
shijian–;
}
a0=shijian%10;
a1=shijian/10;
display(a1,a0);
switch(deng)
{
case 1: P1=0XEE; //红灯
break;
case 2: //黄灯
if(shijian%20)
P1=0xDD;
if(shijian%21)
P1=0xFF;
break;
case 3: //绿灯
if(shijian%20)
P1=0xBB;
if(shijian%21)
P1=0xFF;
break;
case 0: if(shijian%20) //黄灯
P1=0xDD;
if(shijian%21)
P1=0xFF;
break;
}
}

}

void time0() interrupt 1
{ TH0=(65536-46080)/256;
TL0=(65536-46080)%256;
pp++;
}`

求助89c52单片机交通灯程序!相关推荐

  1. 8255A红绿灯c语言程序,51单片机外接8255A做成的交通灯程序及PROTEUS仿真结果(附对应C语言程序).doc...

    51单片机外接8255A做成的交通灯程序及PROTEUS仿真结果(附对应C语言程序) 51单片机外接8255A做成的交通灯程序及PROTEUS仿真结果(附对应C语言程序)2010-04-21 22:0 ...

  2. 8255A红绿灯c语言程序,汇编语言的交通灯程序

    汇编语言的交通灯程序,单片机采用51单片机,基本完成控制两组交通指示灯交替亮,每个路口有左拐.直行及行人三种指示灯.直行灯设有红.黄.绿三种颜色.非机动车与汽车共用左拐和直行灯.首先东西向直行绿灯和行 ...

  3. 52单片机交通灯课程设计

    单片机交通灯课程设计 1. 实验目的和器件 1.1实验目的 (1)通过单片机课程设计,熟练掌握C语言的编写方法,将理论联系到实际中去,提高我们的动手和动脑能力. (2)通过交通信号灯控制系统的设计,掌 ...

  4. 89c52流水灯汇编语言,89c52单片机流水灯汇编程序

    8路流水灯汇编语言程序的写法 汇编语言程序如下: ;假设1:D1~D8八个彩灯接在P1口,输出低电平发光 ;假设2:系统晶振为12MHz ;假设3:N = 5 ;程序如下: ORG 0000H MOV ...

  5. 简易交通灯控制系统设计c语言,基于单片机交通灯控制系统设计毕业设计.doc

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp计算机&nbsp>&nbspJava 基于单片机交通灯控制系统设计毕业设计.doc30页 本 ...

  6. 【Proteus】51单片机交通灯信号模拟仿真示例二

    [Proteus]51单片机交通灯信号模拟仿真示例二 Proteus仿真效果 相关篇<[Proteus]51单片机交通灯信号模拟仿真示例一> 程序代码 /*---------------- ...

  7. 基于51单片机交通灯控制系统

    51单片机交通灯控制系统 可调时间+紧急+行人+黄灯5s 仿真:proteus 7.8 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:J008 目录标题 51单片机交通灯控制系统 ...

  8. 51单片机交通灯(定时器+38译码器+中断)

    51单片机交通灯这个实例主要用到的知识点有: >如何点亮LED >38译码器位选与段选 >定时器控制 >中断控制 #include <reg52.h>/****** ...

  9. c语言流水灯程序详细讲解,用c语言编写单片机流水灯程序详解

    用C语言编写的单片机流水灯程序 一.硬件电路 因为电路用单片机控制,所以电路非常简洁.其电路原理图见下图,印制板图如下图所示. ? 电路的核心部分是AT89C2051单片机,前面提到它有Pl和P3两组 ...

最新文章

  1. 达观杯_构建模型(四)贝叶斯
  2. eclipse svn异常:RA layer request failed 的解决方案
  3. 单机杀毒软件仅是企业信息安全的时尚毛衣
  4. 不用python编程,制作词云图
  5. python 合并两个排序的链表
  6. java 正则 实例_Java正则表达式实例详解
  7. C 语言的标准输入对象是,《面向对象程序设计C+》期末试卷及标准答案
  8. 如何快速开发一个 Dubbo 应用?(含沙龙报名)
  9. 【详解Java中格式化处理】
  10. 47.leetcode36_valid_suduko
  11. pageResponse - 让H5适配移动设备全家(移动端适配)
  12. 突然发现一个很好用Golang的json库
  13. vue 一个组件内多个弹窗_使用vue实现各类弹出框组件
  14. 数百种 Windows 软件的免费替代品列表(转)
  15. 华为网络设备-NAT实验
  16. 五. 服务的注册 DiscoveryClient 与 ServiceRegistry 服务的发现的简单介绍
  17. 上电瞬间电容相当于短路
  18. 仿射密码 python实现
  19. 为王菲写的第二首歌《山河》
  20. java中for(;;)表示啥意思

热门文章

  1. html5输入三元素_HTML5输入元素的状态
  2. Java,jsoup天龙八部畅易阁爬虫
  3. latex表格中插入图片以及排版
  4. Unity3D之太空大战二
  5. 2014中国城市“鬼城”指数排行榜发布
  6. coreldraw怎样定数等分_用CorelDRAW等分分割图片的教程
  7. 量化交易系统是如何执行交易策略的?
  8. GitHub Actions构建镜像并部署服务
  9. 在同一台电脑上安装不用的谷歌chrome浏览器版本
  10. 按键精灵脚本笔记:基本语法