两个月的暑假终于快结束了,本来想在暑假学点东西的,但到了这个时候我不得不承认我还是想以前的暑假一样,基本虚度了。好久没有碰我的单片机了,今天又重新把它拿起,试着编了个简单的程序,发现原来记得的那一丁点的东西,几乎全部忘记了,勉勉强强调试成功了,不管怎么样,还是发上来了。
交通灯小程序:
#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--;
}
}
文章评论(0条评论)
登录后参与讨论