欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3212|回復: 0
打印 上一主題 下一主題
收起左側

單片機可調交通燈程序(修正bug)

[復制鏈接]
跳轉到指定樓層
樓主
ID:70976 發表于 2014-12-25 13:12 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include<reg51.h>
#define uchar unsigned char
uchar code tab[]={0x88,0Xbe,0Xc4,0X94,0Xb2,0X91,0X81,0Xbc,
       0X80,0X90,0xff};
sbit qd=P3^3;
sbit zy=P2^1;
sbit yy=P2^2;
sbit ja=P2^3;
sbit jn=P2^0;
sbit dd=P1^1;

uchar k=0,kk=0;tt=0,b=0,i=0,tem=25,tem1=5,tem2;
uchar z[6];      

void delay(uchar x)          //毫秒級延時函數
{
uchar y;            
for(;x>0;x--)
  for(y=110;y>0;y--);
}


void display(uchar temp,uchar temp1,uchar temp2)     //顯示函數
{
uchar i;
uchar z[6];
z[0]=temp/10;
z[1]=temp%10;
z[2]=temp1/10;
z[3]=temp1%10;
z[4]=temp2/10;
z[5]=temp2%10;


for(i=0;i<6;i++)
{   
  SBUF=tab[z[ i]];   // 根據鍵位值找到鍵碼值,將鍵碼值賦給串行口發送寄存器
  while(!TI);   //判斷串口數據發送是否完畢
  TI=0;         //串口數據發送完畢標志清0
}


}


void main()     //主函數
{

TMOD=0X01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
TR0=1;
ET0=1;
P0=0x79;
P2=0x7f;
tem2=25;




while(1)
{


if(qd==0)
{
delay(5);
if(qd==0)
{
    while(qd==0);

   TR0=0;kk=1; dd=0;P0=0x6d,P2=0xdf;while(kk)
{
   if(zy==0){delay(5);if(zy==0){while(zy==0);if(b==0)b=2;b--;}}

   if(yy==0){delay(5);if(yy==0){while(yy==0);b++;if(b==2)b=0;}}

   if(ja==0){delay(5);if(ja==0){while(ja==0);if(b==0){tem++; if(tem==100)tem=2;}   
               if(b==1){tem1++;if(tem1==100)tem1=1;}

   }}




   if(jn==0){delay(5);if(jn==0){while(jn==0);if(b==0){if(tem==2)tem=100;tem--;}
               if(b==1){if(tem1==1)tem1=100;tem1--;}


}}







if(b==0)
{
  z[0]=10;
z[1]=10;
z[2]=tem1/10;
z[3]=tem1%10;
z[4]=tem2/10;
z[5]=tem2%10;


for(i=0;i<6;i++)
{   
  SBUF=tab[z[ i]];   // 根據鍵位值找到鍵碼值,將鍵碼值賦給串行口發送寄存器
  while(!TI);   //判斷串口數據發送是否完畢
  TI=0;         //串口數據發送完畢標志清0
}


   delay(200);
      display(tem,tem1,tem2);

   delay(200);

  }
if(b==1)
{
z[0]=tem/10;
z[1]=tem%10;
z[2]=10;
z[3]=10;
z[4]=tem2/10;
z[5]=tem2%10;


for(i=0;i<6;i++)
{   
  SBUF=tab[z[ i]];   // 根據鍵位值找到鍵碼值,將鍵碼值賦給串行口發送寄存器
  while(!TI);   //判斷串口數據發送是否完畢
  TI=0;         //串口數據發送完畢標志清0
}


   delay(200);
      display(tem,tem1,tem2);

   delay(200);

}

if(tem<tem2||tem1<tem2)tem2=2;
    if(qd==0){delay(5);if(qd==0){while(qd==0);kk=0;delay(100);dd=1; }}
  }
}
}








TR0=1;


if(tt==20)
  {
   tt=0;tem2--;
      if(tem2==0&&k==0){tem2=tem1;k=1;P0=0x34;P2=0xbf;}
      if(tem2==0&&k==1){tem2=tem; k=2;P0=0xcf;P2=0xcf;}
      if(tem2==0&&k==2){tem2=tem1;k=3;P0=0xa6;P2=0x9f;}
      if(tem2==0&&k==3){tem2=tem; k=0;P0=0x79;P2=0x7f;}
   if(tem2<6){dd=0;delay(88);dd=1;delay(190);}
  }

  display(tem,tem1,tem2);
  delay(200);



}
}


void timer0(void) interrupt 1
{
  TH0=0x3c;
  TL0=0xb0;
  tt++;

}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表