51单片机流水灯的实现
2023-04-18 14:52:55 时间
流水等的实现需要先实现灯光的闪烁
#include
#define uint unsigned int
sbit p1=P1^0;
void delay1s();
main()
{
while(1)
{
p1=0;//打开第一个发光二极管
delay1s();//延迟一秒
p1=1;//关闭第一个发光二级管
delay1s();
}
}
void delay1s()
{
uint i,j;
for(i=500;i>0;i--)
for(j=110;j>0;j--);
}
因此需要延时函数
如下,灯亮200ms,暗800ms,时间在delayms中自己
#include
#define uint unsigned int
sbit p1=P1^0;
void delayms(uint);
void main()
{
while(1)
{
p1=0;
delayms(200);
p1=1;
delayms(800);
}
}
void delayms(uint xms)
{
uint i,j;
for(i=xms;i>0;i--) //延时xms毫秒
for(j=110;j>0;j--);
}
用C51实现流水灯的操作需要用到移位操作
也就是C语言中的左移,右移运算符<<,>>,
该运算符是直接对二进制起作用的
最高位补0,其他位0变1,1变0
但是在C51中,可以直接用“_crol_”函数实现
C51左移程序
#include
#define uint unsigned int
uchar a;
main()
{
a=0xaa;
while(1)
{
a=a<<1;//右移变">>"
}
}
最终实现的程序
#include
#include//包含_crol_函数所在的头文件
#define uint unsigned int
#define uchar unsigned char
void delayms(uint);
uchar aa; //定义一个变量来给P1赋值
void main()
{
aa=0xfe;//赋初值11111110
while(1)
{
P1=aa;//点亮第一个灯
delayms(500);//延时500ms
aa=_crol_(aa, 1);//aa循环左移1位后再给aa
}
}
void delayms(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
一个菜鸟的学习之路
相关文章
- 软件工程师文档写作优秀实践
- 官宣 .NET MAUI 预览版 6
- 手把手教你配置Anaconda+Pycharm开发环境
- 元宇宙:四梁八柱是什么?
- [Error] ‘for‘ loop initial declarations are only allowed in C99 or C11 mode 解决方法
- 如何更安全的升级Kubernetes节点
- 如何在 C# 9 中使用record类型?
- C#: 不同的方式检查Null
- Tensorflow2.0安装教程 (CPU版本,windows环境)
- Nature长文:打破AI黑盒的“持久战”
- ImportError: cannot import name ‘cross_validation‘ 解决方法
- 2021 年最清晰版的 CDN 加速原理
- 朝花夕拾——更新两个开源项目
- Kubernetes+.NET Core 在非著名互联网公司的落地实践
- AttributeError:module 'keras.engine.topology' has no attribute 'load_weights_from_hdf5_group_by_name
- AttributeError:module ‘keras.engine.topology‘ has no attribute ‘load_weights_from_hdf5_group_by_name
- 不可或缺的IT领导者的七大特质
- Kubernetes + .NET Core 的落地实践
- 人脸检测互动游戏-源码
- 网页自动提交