大神进来帮小弟看看吧!!

2019-07-16 00:26发布

本帖最后由 1194856051 于 2013-5-25 15:48 编辑

课题设计,按启动键,交通灯开始工作,东西绿灯亮,南北红灯亮。30s后,东西南北黄灯亮2s,然后东西红灯亮,南北绿灯亮。东西南北黄灯亮2s,然后东西绿灯亮,南北红灯亮。如此循环,按停止键交通灯停止。
#include <reg51.h>
#define uchar unsigned char
sbit dx_g=P1^0;//东西绿
sbit dx_y=P1^1;//东西黄
sbit dx_r=P1^2;//东西红
sbit nb_g=P1^3;//南北绿
sbit nb_y=P1^4;//南北黄
sbit nb_r=P1^5;//南北红

unsigned int num=0;
unsigned int x=600;
void delay10ms()  //按键10ms去抖
{
        uchar a,b;
        for(a=50;a>0;a--)
                for(b=100;b>0;b--);
}
uchar keyscan()         //选择开始P0.0或停止p0.1
{
        P0=0xff;
        if((P0&0x0f)!=0x0f)
        {
                     delay10ms();
                if((P0&0x0f)!=0x0f)
                return(P0&0x0f);
               
    }
        else return(0);
}
void a_int() interrupt 1 using 1  //定时器中断函数
{
        num++;
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;
}
void stop()          // 停止子函数
{
        dx_g=1;dx_y=1;dx_r=1;
        nb_g=1;nb_y=1;nb_r=1;        
}
void start()  //开始子函数
{
        TMOD=0x01;
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;
        EA=1;ET0=1;TR0=1;
        while(1)
        {
        dx_g=0;dx_y=1;dx_r=1;
        nb_g=1;nb_y=1;nb_r=0;
                while(num!=x);
                        num=0;
        dx_g=1;dx_y=0;dx_r=1;
        nb_g=1;nb_y=0;nb_r=1;
                while(num!=40);
                        num=0;
        dx_g=1;dx_y=1;dx_r=0;
        nb_g=0;nb_y=1;nb_r=1;
                while(num!=x);
                        num=0;
        dx_g=1;dx_y=0;dx_r=1;
        nb_g=1;nb_y=0;nb_r=1;
                while(num!=40);
                        num=0;               
        }               
}
main ()
{
        uchar key;
        while(1)
        {
                key=keyscan();
                switch(key)
        {
                        case 0x0e : start();break;
                        case 0x0d : stop() ;break;
                        default : break;
                }
        }
} 原理图.zip (4.98 KB, 下载次数: 8)




俺的程序,帮看看停止不了。我用P0.0作为开始。P0.1作为停止。p1.0~1.5为6个灯,求大神帮我编一个吧!










友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。