找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4478|回复: 1
收起左侧

AT89S51交通灯+keil C51+Proteus仿真

[复制链接]
ID:77367 发表于 2015-4-18 20:05 | 显示全部楼层 |阅读模式
//AT89S51交通灯 keil C51+Proteus仿真
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int

sbit RED_A=P0^0;   //东西方向
sbit YELLOW_A=P0^1;
sbit GREEN_A=P0^2;

sbit RED_B=P0^3;   //南北方向
sbit YELLOW_B=P0^4;
sbit GREEN_B=P0^5;

uchar Time_Count=0,Flash_Count=0,Operation_Type=1;
void Timer0_INT() interrupt 1  //T0中断
{
  TH0=-50000/256;
  TL0=-50000%256;
  switch (Operation_Type)
  {
    case 1:  //东西方向绿灯南北方向红灯5s
       RED_A=0;YELLOW_A=0;GREEN_A=1;
       RED_B=1;YELLOW_B=0;GREEN_B=0;
          if(++Time_Count!=100) return;
          Time_Count=0;
          Operation_Type=2;
    break;
case 2:  //东西方向黄灯闪烁,绿灯关闭
       if(++Time_Count!=8) return;
    Time_Count=0;
    YELLOW_A=!YELLOW_A; GREEN_A=0;
          if (++Flash_Count!=10) return;
    Flash_Count=0;
          Operation_Type=3;
    break;
case 3:  //东西方向红灯南北方向绿灯5s
       RED_A=1;YELLOW_A=0;GREEN_A=0;
       RED_B=0;YELLOW_B=0;GREEN_B=1;
          if(++Time_Count!=100) return;
          Time_Count=0;
          Operation_Type=4;
    break;
case 4:  //南北方向黄灯开始闪烁,绿灯关闭
       if(++Time_Count!=8) return;
    Time_Count=0;
    YELLOW_B=!YELLOW_B; GREEN_B=0;
          if (++Flash_Count!=10) return;
    Flash_Count=0;
          Operation_Type=1;
    break;
default :break;

  }
}

void main()
{
  TMOD=0x01;  //TO方式1,频率11.0592MHz
  IE=0x82;
  TR0=1;
  while(1);
}





回复

使用道具 举报

ID:101108 发表于 2016-1-4 11:09 | 显示全部楼层
要是有读秒显示就好了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表