wordpress优化搜索,win7系统优化,网站自动优化怎么样,重庆seo薪酬水平上篇文章我们讲到了Keil5与STC的使用方式点亮第一个LED灯 这篇将继续进行一些LED灯的进阶操作 目录 LED灯闪烁#xff1a;LED流水灯普通LED流水灯LED流水灯PLUS LED灯闪烁#xff1a;
上文我们说只要通过P2这个寄存器就可以控制LED亮灭#xff0c;现在我们要将其变为闪烁状…上篇文章我们讲到了Keil5与STC的使用方式点亮第一个LED灯 这篇将继续进行一些LED灯的进阶操作 目录 LED灯闪烁LED流水灯普通LED流水灯LED流水灯PLUS LED灯闪烁
上文我们说只要通过P2这个寄存器就可以控制LED亮灭现在我们要将其变为闪烁状态故
void main()
{while(1){P2 0xFE;P2 0xFF;}
}但由于寄存器的速度是非常快的达到MHz每秒100次的等级就导致这两句代码执行的特别快最后的结果就是整体变暗一点
故我们需要进行一定的延时 这里说一下我们的STC软件中有一个下图的软件延时计算器 我们可以通过设置系统频率与你的开发板有关我们使用的是STC89C52用的是12MHz的频率与定时长度得到一段延时你目标秒数的代码我们复制粘贴就可以使用
---------------------生成的代码-------------------
void Delay500ms() //12.000MHz
{unsigned char i, j, k;_nop_();i 4;j 205;k 187;do{do{while (--k);} while (--j);} while (--i);
}这段代码中_nop_的含义是 出自丿Zero ---------------------生成的代码-------------------
我们将其引用在C程序中
#include REGX52.H
#include intrins.hvoid Delay500ms() //12.000MHz
{unsigned char 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();}
}这样就可以得到一个闪烁的LED灯了
LED流水灯
普通LED流水灯
流水灯的话让每个灯按次序亮灭就可以得到再嵌套一个循环。 我们说到写程序时不能写P2 1111 1111这样的命令要使用16进制那么 我们就可以
void main()
{while(1){P2 0xFE;//1111 1110Delay500ms();P2 0xFD;//1111 1101Delay500ms();P2 0xFB;//1111 1011Delay500ms();P2 0xF7;//1111 0111Delay500ms();P2 0xEF;//1110 1111Delay500ms();P2 0xDF;//1101 1111Delay500ms();P2 0xBF;//1011 1111Delay500ms();P2 0x7F;//0111 1111Delay500ms();}
}这样就得到一个流水灯了
LED流水灯PLUS
我们每次进行软件延时时都去调节比较麻烦我们可以利用C语言的基础用传参去解决每次都要调节的问题 我们先生成一个延时1ms的子函数对这个子函数进行传参
void Delay1ms(unsigned int xms) //12.000MHz
{while(xms--){unsigned char i, j;i 2;j 239;do{while (--j);} while (--i);}
}运用到程序函数中就可以得到一个可以自由控制秒数的LED等啦
#include intrins.hvoid Delay1ms(unsigned int xms) //12.000MHz
{while(xms--){unsigned char i, j;i 2;j 239;do{while (--j);} while (--i);}
}void main()
{while(1){P2 0xFE;//1111 1110Delay1ms(100);P2 0xFD;//1111 1101Delay1ms(100);P2 0xFB;//1111 1011Delay1ms(100);P2 0xF7;//1111 0111Delay1ms(100);P2 0xEF;//1110 1111Delay1ms(100);P2 0xDF;//1101 1111Delay1ms(100);P2 0xBF;//1011 1111Delay1ms(100);P2 0x7F;//0111 1111Delay1ms(100);}
}欢迎讨论