python控制51单片机的红绿灯_求单片机AT89C51控制红绿灯的单片机代码,要求如图...

#include 

sbit Nred=P2^2;

sbit Nyellow=P2^1;

sbit Ngreen=P2^0;

sbit Wred=P2^3;

sbit Wyellow=P2^4;

sbit Wgreen=P2^5;

sbit Sred=P3^7;

sbit Syellow=P3^6;

sbit Sgreen=P3^5;

sbit Ered=P3^2;

sbit Eyellow=P3^0;

sbit Egreen=P3^1;

unsigned char n,step=1;

void traffic()

{

switch(step)

{

case 1:  //南北红,东西黄

if(n==100)

{

n=0;

step=2;

P2=0;P3=0;

Sred=1;

Nred=1;

Eyellow=1;

Wyellow=1;

}

break;

case 2:  //南北绿,东西红

if(n==20)

{

n=0;

step=3;

P2=0;P3=0;

Sgreen=1;

Ngreen=1;

Ered=1;

Wred=1;

}

break;

case 3:   //南北黄,东西红

if(n==100)

{

n=0;

step=4;

P2=0;P3=0;

Syellow=1;

Nyellow=1;

Ered=1;

Wred=1;

}

break;

case 4: //南北红,东西绿

if(n==20)

{

n=0;

step=1;

P2=0;P3=0;

Sred=1;

Nred=1;

Egreen=1;

Wgreen=1;

}

break;

}

}

void t0()interrupt 1

{

TH0=15536>>8;//50000次溢出中断,50ms

TL0=15536;

++n;

}

void main()

{

EA=1;

TMOD=0x01;//定时器0工作方式1

ET0=1;

TH0=15536>>8;//50000次溢出中断,50ms

TL0=15536;

TR0=1;

P2=0;P3=0;

Sred=1;  //南北红,东西绿

Nred=1;

Egreen=1;

Wgreen=1;

while(1)

traffic();

}

晶振12M,计时器计数50000次溢出,每溢出一次50毫秒,程序中的100和20分别对应5秒和1秒,但这只是理论数据,与实际值有较大误差,需根据观察修改,呵呵

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值