找回密码
 立即注册

QQ登录

只需一步,快速开始

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

给大家分享个红绿灯程序

[复制链接]
ID:291258 发表于 2018-3-13 14:14 | 显示全部楼层 |阅读模式
#include <reg51.h>
sbit R=P2^0;//HONG
sbit W=P2^1;//HUANG
sbit L=P2^2;//LV
unsigned int a,b=0;
//unsigned char code c[]={0xfe,0xfc,0xfb};//1110,1100,1011
unsigned char code c[]={0xfe,0xfD,0xfb,0xfd};//1110,1101,1011,1101//红 黄 绿 黄//修正黄灯的值,增加一个状态
void timer10s () interrupt 1
{

if (a<2000)
    {
        TH0=0xec;//5ms
        TL0=0x78;
        a++;
  //      b=0;//这里不能对b赋值
        TR0=1;
        TR1=0;//【增加】
    }
    if (a>=2000)
    {
        TH0=0xec;
        TL0=0x78;
        a=0;
        b++;//b=1;
        if(b==4) b=0;//【增加】
        TR1=1;
        TR0=0;//【增加】
    }
}
void timer2s ()interrupt 3
{

   if (a<400)
    {
        TH1=0xec;
        TL1=0x78;
        a++;
        TR1=1;
        TR0=0;
    }
    if (a>=400)
    {
        TH1=0xec;
        TL1=0x78;
        a=0;
        b++;//b=2;
        //
        if(b==4) b=0;//【增加】
        TR0=1;
        TR1=0;//【增加】
    }
}
void main ()
{
    EA=1;
    ET0=1;
    ET1=1;
    TMOD=0X11;
    TH0=0xec;//5MS
    TL0=0x78;
    TH1=0xec;
    TL1=0x78;
    TR0=1;
    TR1=0;
    P2=c[0];
    b=0;////【增加】
    while (1)
    {
        switch (b)
        {
            case 0x00:P1=c[0];break;
            case 0x01:P1=c[1];break;
            case 0x02:P1=c[2];break;
            case 0x03:P1=c[3];break;//增加一个状态
        }
    }
}

回复

使用道具 举报

ID:291258 发表于 2018-3-13 14:15 | 显示全部楼层
可以,加油,点点进步
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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