51单片机仿真例程-模拟交通灯

代码:

#include<reg51.h>
#define uchar unsigned char
void delay0_5s()
{
 uchar i;
 for(i=0;i<0x0a;i++)
 {
  TH0=0x3c;
  TL0=0xb0;
  TR0=1;
  while(!TF0);
  TF0=0;
  }
}

void delay_t(uchar t)
{
 uchar i;
 for(i=0;i<t;i++)
 delay0_5s();

}

void serial()interrupt 4 using 2
{

 uchar i;
 EA=0;
 if(RI==1)
 {
   RI=0;
   if(SBUF==0x01)
   {
   	  SBUF=0x01;
	  while(!TI);
	   TI=0;
	   i=P1;
	   P1=0xe4;
	   while(SBUF!=0x02);
	   {
	    while(!RI);
		RI=0;
	   }
   	   SBUF=0x02;
	   while(!TI);
	   TI=0;
	   P1=i;
	   EA=1;
   
   
   }
   else{EA=1;}
 
 }


}

void main()
{
 uchar k;
 TMOD=0x21;
 TH1=0xf4;
 TL1=0xf4;
 TR0=1;
 TR1=1;
 SCON=0x50;
 PCON=0x00;
 EA=1;
 ES=1;
 while(1)
 {
  P1=0xcc;
  delay_t(10);
  for(k=0;k<3;k++)
  {
   P1=0xd4;
   delay0_5s();
   P1=0xc4;
   delay0_5s();
  
  
  }
  P1=0xe1;
  delay_t(10);
  for(k=0;k<3;k++)
  {
   P1=0xe2;
   delay0_5s();
   P1=0xe0;
   delay0_5s();
  
  
  
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 }









}

效果:

串口发送01双向禁行,发送02恢复正常状态

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值