看到小伙伴们代码敲得飞快,内心也开始有点小激动。下面是关于点灯的几个小程序。关于流水灯有左右移运算符、循环左右移函数的调用、数组三种实现方法,有时候会有些纠结用那种,个人习惯于用数组。看到此贴的大神们欢迎在评论中科普三种方法的优缺点。
/******************************************************************************
【编写时间】2019年1月24日
【作 者】黄金机器人
【试验平台】开拓者开发板
【外部晶振】11.0592mhz
【芯 片】STC89C52
【编译环境】Keil uVision5
【说 明】本代码均以在开发板山测试通过,仅供大家参考
******************************************************************************/
/*****************************点亮LED灯位操作*******************************/
#include <reg52.h>
Sbit LED=P2^0
Void main()
{
While(1)
{
LED=0;
}
}
/*****************************************************************************/
/*****************************点亮LED灯总线操作*******************************/
#include <reg52.h>
Void main()
{
While(1)
{
P2=0x00;
}
}
/*********************************闪烁****************************************/
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit LED=P2^1;
void delayms(uint n)
{
uchar i;
while(n--)
{
for(i=0;i<113;i++);
}
}
void main()
{
while(1)
{
LED=0;
delayms(500);
LED=0xff;
delayms(500);
}
}
/*********************************流水灯*************************************/
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar ledCode[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
void delayms(uint n)
{
uchar i;
while(n--)
{
for(i=0;i<113;i++);
}
}
void main()
{
uchar j;
while(1)
{
for(j=0;j<8;j++)
{
P2=ledCode[j];
delayms(1000);
}
}
}