sbit LED1=P1^1
sbit LED2=P1^2
main()
{
TMOD=0x01
TH0=(65536-2000)/256
TL0=(65536-2000)%256
EA=1
ET0=1
TR0=1
while(1)
{
LED1=0
}
}
void duan() interrupt 1
{
unsigned char i
TH0=(65536-2000)/迟敬256
TL0=(65536-2000)%256
if(i==20)
{
i=0
LED2=~LED2
}
}
东西和南北的时间不同步,楼主没有说得很清楚你把时间流程说清楚我可以把代码写出来
//以下代码经过Keil C51软件调试通过
#include "reg51.h" //头文件包败念含
//宏定义
#define uint unsigned int
#define uchar unsigned char
#define ON 0 //0的时候灯亮
#define OFF 1 //1的时候灯亮
//管脚定义
//南北道 黄灯亮3秒 红灯亮 30秒 黄灯3秒 绿灯38秒
//东西道 黄灯亮3秒 绿灯亮 28秒 黄灯3秒 红灯40秒
sbit PortDX_Yellow = P1^0//东西方向黄灯
sbit PortDX_Red = P1^1 //东西方向红灯
sbit PortDX_Green = P1^2//东西方向绿灯
sbit PortNB_Yellow = P1^3//南北方向黄灯
sbit PortNB_Red = P1^4 //南北方向红灯
sbit PortNB_Green = P1^5//南北方向绿灯
void delay(uint ms) // 毫秒级延时(AT89C52 @ 11.0592MHz)
{
uint ti
while(ms--)
{
for(ti=0ti<112ti++){}//112
}
}
/*==================== 主函数 ====================*/
void main(void)
{
delay(400)//开机凯闹延时400ms
while(1)
{
PortNB_Yellow = ON PortNB_Red = OFFPortNB_Green = OFF//南北黄灯亮3秒
PortDX_Yellow = ON PortDX_Red = OFFPortDX_Green = OFF//东西黄灯亮3秒
delay(3000)
PortNB_Yellow = OFFPortNB_Red = ON PortNB_Green = OFF//南北红灯亮28秒
PortDX_Yellow = OFFPortDX_Red = OFFPortDX_Green = ON //东西绿灯亮28秒
delay(28000)
PortNB_Yellow = OFFPortNB_Red = ON PortNB_Green = OFF//南北红灯亮2秒
PortDX_Yellow = ON PortDX_Red = OFFPortDX_Green = OFF//东西黄灯亮2秒
delay(2000)
PortNB_Yellow = ON PortNB_Red = OFFPortNB_Green = OFF//南北黄灯亮1秒
PortDX_Yellow = ON PortDX_Red = OFFPortDX_Green = OFF//东西黄灯亮1秒
delay(1000)
PortNB_Yellow = ON PortNB_Red = OFFPortNB_Green = OFF//南北黄灯亮2秒
PortDX_Yellow = OFFPortDX_Red = ON PortDX_Green = OFF//东盯枯罩西红灯亮2秒
delay(2000)
PortNB_Yellow = OFFPortNB_Red = OFFPortNB_Green = ON //南北绿灯亮38秒
PortDX_Yellow = OFFPortDX_Red = ON PortDX_Green = OFF//东西红灯亮38秒
delay(3800)
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)