这里写自定义目录标题
主要内容
延时函数
定时器/计数器延时
软件延时
for循环
while循环
其他语句实现延时
函数的引入与调用
利用位输出操作,实现LED灯闪烁
端口操作实现LED单灯点亮和熄灭
LED灯闪烁逻辑
延时函数
亮 延时、灭 延时;
1、利用位输出操作,实现LED流水灯
LED流水灯设计逻辑
各个小灯初始化;
第一个灯亮 ,延时,灭,;
第二个灯亮 ,延时,灭;…第n个灯亮 ,灭
#include<regx.h>
#include"Delay.h" //延时函数头文件
//定义各个管脚
sbit LED0=P2^0;
sbit LED1=P2^1;
sbit LED2=P2^2;
sbit LED3=P2^3;
sbit LED4=P2^4;
sbit LED5=P2^5;
sbit LED6=P2^6;
sbit LED7=P2^7;
void main()
{
//各个管脚初始化
LED0=1;
LED1=1;
LED2=1;
LED3=1;
LED4=1;
LED5=1;
LED6=1;
LED7=1;
while(1)
{
LED0=0;
Delay(500);
LED0=1;
LED1=0;
Delay(500);
LED1=1;
LED2=0;
Delay(500);
LED2=1;
LED3=0;
Delay(500);
LED3=1;
LED4=0;
Delay(500);
LED4=1;
LED5=0;
Delay(500);
LED5=1;
LED6=0;
Delay(500);
LED6=1;
LED7=0;
Delay(500);
LED7=1;
Delay(500);
}
}
2、利用端口操作,实现LED流水灯
#include<regx.h>
#include"Delay.h"
void main()
{
P2=0xff;//端口初始化
while(1)
{
P2=0xfe;
Delay(1000);
P2=0xfd;
Delay(1000);
P2=0xfb;
Delay(1000);
P2=0xf7;
Delay(1000);
P2=0xef;
Delay(1000);
P2=0xdf;
Delay(1000);
P2=0xbf;
Delay(1000);
}
}
3、利用移位操作,实现流水灯
#include<regx.h>
#include"Delay.h"
//移位+取反
void main()
{
unsigned char w,i;
P2=0xff; //初始化
//w=0x01; 该语句应放在while循环内,否则LED流水灯无法循环
while(1)
{
w=0x01;
for(i=0;i<8;i++)
{
P2=~w;
Delay(1000);
w<<=1;
}
}
}
//单纯移位
void main()
{
unsigned char i;
P2=0xff;
while(1)
{
P2=0xfe;
Delay();
for(i=0;i<8;i++)
{
P2<<=1;
Delay();
}
}
}
4、利用循环移位,实现流水灯
#include<intrins.h>
#include"Delay.h"
void main()
{
unsigned char i;
P2=0xff; //初始化
i=0xfe; //i=0x01
P2=i;
while(1)
{
Delay();
i=_corl_(i,1);
P2=i;
Delay();
}
}
5、利用数组,实现流水灯
逻辑
#include<regx.h>
//创建数组
unsigned char code arr[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //定义数组(6)
unsigned char i; //定义变量(5)
void main()
{
P2=0xff; //初始化 (1)
while(1)
{
for(i=0;i<8;i++) //for循环实现遍历(4)
{
P2=arr[i]; //让数组遍历每一个P2端口(2)
Delay(); //延时(3)
}
}
}