点亮一个灯
#include <REGX52.H>
void main()
{
P2=0x55; // 0101 0101 从右到左为低位到高位,0表示负极的电压为0,会亮,P2是接 // LED到芯片的引脚
while(1)
{
}
}
闪烁灯
#include <REGX52.H>
#include <INTRINS.H>
//_nop_()方法的头文件
void main(){
void Delay500ms();
while(1){
P2=0xff;
Delay500ms(); //灭了等待0.5秒
P2=0xfe;
Delay500ms(); //亮了等待0.5秒
}
}
void Delay500ms() //@12.000MHz
{
unsigned char i, j, k;
_nop_(); //需要引入头文件 #incluce <INTRINS.H>
i = 4;
j = 205;
k = 187;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
流水灯
#include <REGX52.H>
void Delay500ms() //@12.000MHz 0.5秒延迟
{
unsigned char i, j, k;
i = 4;
j = 205;
k = 187;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
void main()
{
while(1){
P2=0xfe;//1111 1110 1号灯亮
Delay500ms(); //0.5秒延迟
P2=0xfd;//1111 1101 2号灯亮
Delay500ms();
P2=0xfb;//1111 1011 3号灯亮
Delay500ms();
P2=0xf7;//1111 0111 4号灯亮
Delay500ms();
P2=0xef;//1110 1111 5号灯亮
Delay500ms();
P2=0xdf;//1101 1111 6号灯亮
Delay500ms();
P2=0xbf;//1011 1111 7号灯亮
Delay500ms();
P2=0x7f;//0111 1111 8号灯亮
Delay500ms();
}
}
独立按键控制灯亮灭
#include <REGX52.H>
void main(){
//独立按键按下,寄存器为0,默认是1
while(1){
if(P3_1==0){//按键按下
P2_5=0; //灯亮
}
else //按键松开
P2_5=1; //灯灭
}
}
独立按键控制LED灯状态
按键按下时进入if()判断,在按下到送开的整个过程都要在if()判断里面运行,最后松开的时候进行寄存器取反操作
#include <REGX52.H>
void Delay(int xms) //@12.000MHz
{
unsigned char i, j;
while(xms--){
i = 2;
j = 239;
do
{
while (--j);
} while (--i);
}
}
void main(){
while(1){
if(P3_1==0)
{
Delay(20); //if 检测到松开,进入延迟等待抖动结束
while(P3_1==0); //等待1号独立按键 松开
Delay(20); //检测到松开,进入延迟等待抖动结束
P2_5=~P2_5; //寄存器取反,控制亮灭
}
}
}
独立按键控制显示二进制
#include <REGX52.H>
void Delay(int xms) //@12.000MHz
{
unsigned char i, j;
while(xms--){
i = 2;
j = 239;
do
{
while (--j);
} while (--i);
}
}
void main()
{
char led=0;
while(1){
if(P3_1==0){
Delay(20);
while(P3_1==0);
Delay(20);
//以上为等待按下一次按键并松开后
P2=~++led; //利用字符型存储二进制变化
}
}
}
(自己创作)测试手速:按下按键后立刻松开,松开前每0.05s灯就会移动一次,松开后0.5s自动复位
#include <REGX52.H>
void Delay(int xms) //@12.000MHz
{
unsigned char i, j;
while(xms--){
i = 2;
j = 239;
do
{
while (--j);
} while (--i);
}
}
void main()
{
int i=0;
while(1){
if(P3_0==0){
Delay(5); //每0.05s移动一次
i=i%8;
P2=~(0x01<<i);
i++;
if(i==8)
while(P3_0==0);
}
if(P3_0==1)
{
Delay(500);
P2=0xfe;
while(P3_0==1);
i=0;
}
}
}