师从江科大
进制转化
注:
- P2.0引脚被设置为低电平(0)
- P2.1至P2.7引脚被设置为高电平(1)
点亮LED
void main()
{
P2=0X55;
while(1)
{
}
}
代码思路
通过二进制控制LED流水灯
LED闪烁
void Delay500ms(void) //@12.000MHz
{
unsigned char data i, j, k;
_nop_();
i = 4;
j = 205;
k = 187;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
void main()
{
while(1)
{
P2=0xFE;
Delay500ms();
P2=0xFF;
Delay500ms();
}
}
代码讲解
0xFE会使p2.0LED亮,0xFF会使p2.0LED灯熄灭,再通过stc-isp自动生成Delay函数使p2.0LED实现亮灭功能,最后再加上一个while循环使LED不断进行亮灭操作
LED流水灯
第一种方法:
#include <REGX52.H>
#include<INTRINS.H>
void Delay500ms(void) //@12.000MHz
{
unsigned char data i, j, k;
_nop_();
i = 4;
j = 205;
k = 187;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
void main()
{
while(1)
{
P2=0xFE;//1111 1110
Delay500ms();
P2=0xFD;//1111 1101
Delay500ms();
P2=0xFB;//1111 1011
Delay500ms();
P2=0xF7;//1111 0111
Delay500ms();
P2=0xEF;//1110 1111
Delay500ms();
P2=0xDF;//1101 1111
Delay500ms();
P2=0xBF;//1011 1111
Delay500ms();
P2=0x7F;//0111 1111
Delay500ms();
}
}
第二种方法:
#include <REGX52.H>
void Delay1ms(unsigned xms) //@11.0592MHz
{
unsigned char data i, j;
while(xms)
{
i = 11;
j = 190;
do
{
while (--j);
} while (--i);
xms--;
}
}
void main()
{
while(1)
{
P2=0xFE;
Delay1ms(500);
P2=0xFD;
Delay1ms(500);
P2=0xFB;
Delay1ms(500);
P2=0xF7;
Delay1ms(500);
P2=0xEF;
Delay1ms(500);
P2=0xDF;
Delay1ms(500);
P2=0xBF;
Delay1ms(500);
P2=0x7F;
Delay1ms(500);
}
}
第二种方法可以改变特定LED亮灭时间间隔
代码讲解
通过控制从第一个到最后一个LED进行点亮使之实现流水灯的功能
C51数据类型
若有侵权,请联系作者