第1个回答
林风2020.03.15回答代码原理图如下,I/O高电平时LED亮#include<reg51.h>typedefenum{LED0=0,LED1,LED2,LED3,LED4,LED5}ledEnum;unsignedintgreenLedTime=30;unsignedintyellorLedTimer=3;//延时n毫秒voiddelay_ms(unsignedintn){unsignedinti=0,j=0;for(i=0;i<n;i++)for(j=0;j<123;j++);}//延时n秒voiddelay_m(unsignedintn){unsignedinti=0,j=0;for(i=0;i<n;i++)for(j=0;j<21738;j++);}voidPx_SetBit(ledEnumPin)//pin引脚置1函数{P1|=(1<<Pin);}voidPx_ResetBit(ledEnumPin)//Pin引脚操作清零函数{P1&=~(1<<Pin);}voidWriteLED(ledEnumredLed,ledEnumyellor,ledEnumgreenLed)//LED控制函数,三个参数分别是要亮的红灯,黄灯,绿灯{inti;P1=0;//关闭所有LED灯Px_SetBit(redLed);//红灯亮Px_SetBit(greenLed);//绿灯亮delay_m(greenLedTime);//延时30sPx_ResetBit(greenLed);//绿灯灭for(i=0;i<yellorLedTimer;i++)//黄灯闪烁{Px_SetBit(yellor);delay_ms(500);Px_ResetBit(yellor);delay_ms(500);}}intmain(){P1=0;Px_SetBit(LED0);Px_SetBit(LED5);//初始化LEDdelay_m(1);while(1){WriteLED(LED3,LED1,LED2);//南北通行WriteLED(LED0,LED4,LED5);//东西通行}}