博主博客
得到8盏LED交替亮灭的实验效果
#include <reg51.h>
void Delay10ms(unsigned int c); // 延时10ms
void main()
{
while(1)
{
P0 = 0x00; // 设置 P0 为低电平
Delay10ms(50); // 延时
P0 = 0xff; // 设置 P0 为高电平
Delay10ms(50); // 延时
}
}
void Delay10ms(unsigned int c)
{
unsigned char a, b;
for (; c > 0; c--)
{
for (b = 38; b > 0; b--)
{
for (a = 130; a > 0; a--);
}
}
}
LED灯做二进制加1显示
#include <reg51.h>
void Delay10ms(unsigned int c); // 延时10ms
void main()
{
unsigned char count = 0x00;
while(1)
{
P0 = count;
Delay10ms(50); // 延时
count++;
}
}
void Delay10ms(unsigned int c)
{
unsigned char a, b;
for (; c > 0; c--)
{
for (b = 38; b > 0; b--)
{
for (a = 130; a > 0; a--);
}
}
}
延时实现LED流水灯效果P2口八个灯作跑马灯
#include <reg51.h>
// #include <intrins.h>
/** intrins.h 方法
_crol_ 字符循环左移
_cror_ 字符循环右移
_irol_ 整数循环左移
_iror_ 整数循环右移
_lrol_ 长整数循环左移
_lror_ 长整数循环右移
_nop_ 空操作8051 NOP 指令
_testbit_ 测试并清零位8051 JBC 指令函数名: _crol_,_irol_,_lrol_
*/
void Delay10ms(unsigned int c); // 延时10ms
void main()
{
unsigned char LED;
LED = ~0xfe; // 0xfe = 1111 1110
while(1)
{
P0 = LED;
Delay10ms(50); // 延时
LED <<= 1;
if (P0 == 0x00)
{
LED = ~0xfe;
}
// LED = _crol_(LED, 1);
}
}
void Delay10ms(unsigned int c)
{
unsigned char a, b;
for (; c > 0; c--)
{
for (b = 38; b > 0; b--)
{
for (a = 130; a > 0; a--);
}
}
}
LED灯做跑马灯左右移动
#include <reg51.h>
void Delay10ms(unsigned int c); // 延时10ms
unsigned char LED;
void main()
{
unsigned char i;
LED = 0xfe; // 0xfe = 1111 1110
while(1)
{
for (i = 0; i < 7; i++)
{
P0 = LED;
Delay10ms(50);
LED <<= 1;
LED |= 0x01;
}
for (i = 0; i < 7; i++)
{
P0 = LED;
Delay10ms(50);
LED >>= 1;
LED |= 0x80;
}
}
}
void Delay10ms(unsigned int c)
{
unsigned char a, b;
for (; c > 0; c--)
{
for (b = 38; b > 0; b--)
{
for (a = 130; a > 0; a--);
}
}
}