51单片机实验代码有没有人教一下

.按下面中所给状态实现南北向及东西向的基本红绿灯实验,为求简化,南北和东西方向各使用一组信号灯。接线方法如下:
LED发光二极管L7-L5(表示南北方向的红黄绿灯)和L3-L1(表示东西方向的红黄绿灯)的阴极分别接到P1.7-P1.5和P1.3-P1.1.将实现代码及运行效果截图放置实验报告中。
信号灯状态
南北方向 东西方向 持续时间
第一个状态 红灯亮 绿灯亮 5s
第二个状态 红灯亮 绿灯闪烁5次
第三个状态 红灯亮 黄灯亮 1s
第四个状态 绿灯亮 红灯亮 5s
第五个状态 绿灯闪烁5次 红灯亮
第六个状态 黄灯亮 红灯亮 1s

以下是基于8051单片机的代码实现,实现南北向及东西向的红绿灯交替变换,按照题目所给状态实现:


#include<reg51.h> //包含51单片机头文件
#define uint unsigned int //定义无符号整型变量
#define uchar unsigned char //定义无符号字符型变量
sbit S_LED1 = P1^5; //南北方向绿灯,即P1.5口控制
sbit S_LED2 = P1^6; //南北方向黄灯,即P1.6口控制
sbit S_LED3 = P1^7; //南北方向红灯,即P1.7口控制
sbit E_LED1 = P1^1; //东西方向绿灯,即P1.1口控制
sbit E_LED2 = P1^2; //东西方向黄灯,即P1.2口控制
sbit E_LED3 = P1^3; //东西方向红灯,即P1.3口控制

void delay(uint i) //延时函数
{
    uint j, k;
    for(j = i; j > 0; j--)
        for(k = 110; k > 0; k--);
}

void main()
{
    while(1) //一直循环
    {
        //第一个状态:南北方向绿灯亮,东西方向红灯亮,持续5秒
        S_LED1 = 1; //南北方向绿灯亮
        E_LED3 = 1; //东西方向红灯亮
        delay(500); //延时5//第二个状态:南北方向绿灯亮,东西方向绿灯闪烁5次
        S_LED1 = 1; //南北方向绿灯亮
        E_LED1 = 1; //东西方向绿灯亮
        delay(200); //绿灯亮200ms
        E_LED1 = 0; //东西方向绿灯灭
        delay(200); //绿灯灭200ms
        E_LED1 = 1; //东西方向绿灯亮
        delay(200); //绿灯亮200ms
        E_LED1 = 0; //东西方向绿灯灭
        delay(200); //绿灯灭200ms
        E_LED1 = 1; //东西方向绿灯亮
        delay(200); //绿灯亮200ms
        E_LED1 = 0; //东西方向绿灯灭
        delay(200); //绿灯灭200ms
        E_LED1 = 1; //东西方向绿灯亮
        delay(200); //绿灯亮200ms
        E_LED1 = 0; //东西方向绿灯灭
        delay(200); //绿灯灭200ms
        E_LED1