1.1 点亮单个LED灯
首先我们可以看到L1-L8共8个LED灯对应的I/0口分别对应P0-P7引脚,我们可以单独赋予总串口来点亮LED灯,代码如下:
/*点亮第一个LED灯*/
#include <STC15F2K60S2.H> //引入头文件
void main()
{
while(1)
{
P0=0xfe; //1111 1110 0x为16进制后缀转换成二进制,表示点亮第一个LED
P0=0xf7; //1111 0111 点亮第4个LED灯
}
}
2.2 LED灯的流水
顾名思义就是给LED灯增加延迟函数,从而达到流水灯的作用,
1.通过给单个LED灯赋值实现流水灯 2.通过内置库函数实现LED灯的流水
_crol_ 循环左移 _cror_ 循环右移 所属库 <intrins.h> ,具体代码如下:
#include <STC15F2K60S2.H>
#include<intrins.h>
/*引入延迟500毫秒函数*/
//函数的调用
void Delay500ms(void) //@12.000MHz
{
unsigned char data i, j, k;
i = 23;
j = 205;
k = 120;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
void main()
{
while(1)
{
P0=0xfe; //1111 1110
Delay500ms();
P0=0xfe; //1111 1101
Delay500ms();
P0=0xfe ; //1111 1011
Delay500ms();
P0=0xfe; //1111 0111
Delay500ms();
P0=0xfe; //1110 1111
Delay500ms();
P0=0xfe; //1101 1111
Delay500ms();
P0=0xfe; //1011 1111
Delay500ms();
P0=0xfe; //0111 1111
Delay500ms();
}
}
#include <STC15F2K60S2.H>
#include<intrins.h>
/*引入延迟500毫秒函数*/
//函数的调用
void Delay500ms(void) //@12.000MHz
{
unsigned char data i, j, k;
i = 23;
j = 205;
k = 120;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
void main()
{
unsigned char LED=0xfe; //变量的初始化
while(1)
{
P0=LED; //点亮第一个LED灯
Delay500ms();
LED=_crol_(P0,1); //每次向左移一个LED灯;
}
}
对于函数的调用我们也可以引入自定义参数变量
#include <STC15F2K60S2.H>
#include <intrins.h>
//函数的调用也可引用自定义参数
void Delay1ms(unsigned char x) //@12.000MHz unsigned char 无符号整形(非负); 循环500次
{
while(x--)
{
unsigned char data i, j;
i = 12;
j = 168;
do
{
while (--j);
} while (--i);
}
}
void main()
{
while(1)
{
unsigned char LED=0xfe; //变量的初始化
unsigned char time=500;
P0=LED; //点亮第一个LED灯
Delay1ms(500);
LED=_crol_(P0,1); //每次向左移一个LED灯;
time=time-100; //led流水循环每次时间减少100ms;
}
}
目录