闪烁灯
所谓的闪烁灯就像警车一样,哔哩哔哩闪烁。
LED闪烁首先你先得看懂我上一篇文章 :https://liwangjiang.blog.csdn.net/article/details/110355725
LED闪烁其实就是将一个灯开一下,关一下。
在循环中不断的进行开关,这就是逻辑其实挺简单的,但是中间需要有一个延时,如果不延时就不会看到效果。
在这里需要用到C语言里面的一个重定义关键字:
unsigned and signed
int 分为无符 unsigned 和有符 signed 两种类型,默认为signed。二者的区别就是无符 类型能保存2倍于有符 类型的数据。32位下,signed int 的表示范围为:-2147483648 ~ 2147483647 (最高位做符 位)。unsigned int 的表示范围为:0 ~ 4294967295 (不保留符 位)。我们都知道,两个不同的数据类型在进行混合使用时,会自动进行类型转换
typedef使用
我们这里采用一个unsigned进行命名范围在0~429496… 之间
typedef重定义一些常用的关键字,可以增强程序的可移植性,因为在不同的编译软件上,C语言的数据类型的关键字的位宽是不一样的。
typedef unsigned char u8; //表示将char重定义一下 u8表示char类型
开始程序
向上面所说中间需要加入一个delay()函数
coding:
效果:
设置断点查看闪烁时间
首先双击代码左侧的数码栏:
进入断点,这我们打断的的位置需要注意,关灯,然后开灯。中间会延迟,我们可以通过开始的时间和结束时间来计算中间花了多少时间。
断点窗口:
我们可以看到当前时间点
下一步进入延迟
我们这一步还没有进入延迟方法可以记住时间 0.00019500而后下一步
通过0.20029550 – 0.00019500 = 0.200毫秒
这个速度也跟开发工具有关如果设置Xtal(MHz) = 12.0时间就会慢,如果我们设置成12 会从开始计算到结束会显示大约0.4.50毫秒左右,这个不确定的。
流水灯
流水灯就是从D1-D8
其实流水灯也是围绕着闪烁灯这个逻辑继续跟踪的。
首先我们需要动的 ,循环左移右移函数。
可以通过C语音的预处理命令来定义 #define A P2(不需要加分 )
通过定义如果我们使用了P2拐脚我们可以通过define A P2 来代替P2拐脚,通过调用A来处理P0拐脚
循环左移循环右移函数
方法 | 描述 |
_crol_(a,b) |
循环左移函数,a是左移的值,b是左移的位数。包含在intrins.h函数库里面,left |
_cror_(a,b) |
循环右移函数,a是右移的值,b是右移的位数。包含在intrins.h函数库里面,right |
开始程序
这里有一个点非常重要,一个16进制转2进制的一个操作。
流水灯从左开始
先看代码吧:
效果:
从下面留出可以看出流水灯的一个流程
流水灯从左右开始
这个程序流程是往回跑
代码:
效果:
文章知识点与官方知识档案匹配,可进一步学习相关知识C技能树首页概览113143 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!