原创 暑假归来

2008-8-26 20:43 2538 8 8 分类: 工程师职场

    两个月的暑假终于快结束了,本来想在暑假学点东西的,但到了这个时候我不得不承认我还是想以前的暑假一样,基本虚度了。好久没有碰我的单片机了,今天又重新把它拿起,试着编了个简单的程序,发现原来记得的那一丁点的东西,几乎全部忘记了,勉勉强强调试成功了,不管怎么样,还是发上来了。


交通灯小程序:


#include <at89x52.h>
#define OFF 1
#define ON  0
#define Uint unsigned int
#define Uchar unsigned char


sbit SR="P0"^0;
sbit SY="P0"^1;
sbit SG="P0"^2;
sbit ER="P0"^3;
sbit EY="P0"^4;
sbit EG="P0"^5;



void Delay(Uchar CNT);
void  LedInt();
void SrEg();
void SrEy();
void SgEr();
void SyEr();



void main ()
{


 TCON=0x01;
 IE=0x81;
 LedInt();                           //红灯初始化
 Delay(50);
 while (1)
 {


  SrEg();               //南北红,东西绿
  Delay(200);
  SrEy();               //南北红,东西黄
  SgEr();               //南北绿,东西红
  Delay(200);
  SyEr();               //南北黄,东西红
 }
}


void  LedInt()
{
 SR=ON;
 SY=OFF;
 SG=OFF;
 ER=ON;
 EY=OFF;
 EG=OFF;
}


void SrEg()
{
 SR=ON;
 SY=OFF;
 SG=OFF;
 ER=OFF;
 EY=OFF;
 EG=ON;
}


void SrEy()
{
 
 SR=ON;
 SY=OFF;
 SG=OFF;
 ER=OFF;
 EY=ON;
 EG=OFF;
 Delay(30); 
}


void SgEr()
{
 SR=OFF;
 SY=OFF;
 SG=ON;
 ER=ON;
 EY=OFF;
 EG=OFF;
}


void SyEr()
{


 SR=OFF;
 SY=ON;
 SG=OFF;
 ER=ON;
 EY=OFF;
 EG=OFF;
 Delay(30);
}
void Delay(Uchar CNT)
{
 Uint I;
 while (CNT>0)
 {
  for (I=0;I<10000;I++);
  CNT--;
 }
}

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
8
关闭 站长推荐上一条 /3 下一条