第一关是 led 的点亮,第二关就变成了 led 的闪烁了,也就是让 led 变亮-变暗-变亮-变暗……如此循环
依旧是需要俺强势的C语言二级基础了(雾),基本思路:亮灯 - 停顿 - 灭灯- 停顿 -亮灯……
亮灯+灭灯为一组循环,但是停顿如何实现呢,这里就出现了C语言中不被重视的备胎语句——无意义循环语句,让cpu不断运算造成停顿的假象——还有这种操作?当然,后期据说还会有新的时间控制语句,前期嘛,就简单粗暴的解决问题吧
下面展示程序:
include<reg52.h>
sbit D1=P2^0;
void delay() //delay就是英语里延迟的意思,在这里放进去一个空语句造成时延,后面的主函数引用
{
int i;
while (i--);
}
void main ()
{
while(1)
{
D1=0;
delay(5000);
D1=1;
delay(5000);
}
}
//延时函数中延时的时长可以进入调试模式测试,通过设置断点测试程序执行一次花费的时间。
调试模式:上方工具栏第二栏 start debug session,打开寄存器窗口 view - register window,sys栏里面的sec表示执行时长多少秒。运行程序选择run,设置断点:在语句左边点击出现红色圆点即为断点。
延时函数中要注意a的值会溢出,此时要设置a的数据类型,int变成long可以增加a的值。
至此,就通过了单片机第二关,led闪烁,开始需要自己创造子函数了,暂时还是有惊无险,加油!