
8051单片机(STC89C52)八灯流动转向
初始化 进入一个 在循环内部,先调用 然后执行 每次循环后,
发布日期:2021-05-08 01:18:12
浏览次数:22
分类:精选文章
本文共 859 字,大约阅读时间需要 2 分钟。
Stc89C5xRC微控制器的延时函数实现与主函数控制逻辑
延时函数实现
在本程序中,我们定义了一个delay
函数,主要用于产生一个较长的延时。该函数通过嵌套两个循环结构来实现。外层循环变量i
从0开始,终止条件为i < 120
,内层循环变量j
同样从0开始,终止条件也为j < 120
。通过这种双层循环结构,可以有效地消耗系统资源,产生预期的延时。
void delay(){ int i,j; for(i=0;i<120;i++) for(j=0;j<120;j++) { ; // 无操作占用时间 }}
主控制逻辑实现
在main
函数中,我们定义了一个无限循环,通过对P2
寄存器进行操作,逐步控制八灯的状态。具体实现如下:
i
为9,首先调用P2=0xff
,将八灯全部关闭。while
循环,条件为i >= 1
。delay()
函数,产生一个延时。P2 /= 2
,通过位运算逐步将P2
寄存器的值右移一位,实现灯光逐渐亮起的效果。i
减少1,直到达到i <= 0
时退出循环。int main(){ int i; while(1){ i=9; P2=0xff; // 八灯全灭 while(i>=1){ delay(); // 时延 P2 /= 2; // 1111 1111 -> 0111 1111 -> 0011 1111 -> 0001 1111 -> 0000 1111 ... i--; } }}
技术说明
- 通过
P2 /= 2
操作,实现了对P2
寄存器的逐步右移,相当于对每个灯位进行逐步清除。 delay()
函数通过双层循环结构,确保了系统在每次状态更新之间有足够的时间延迟。- 该程序采用了移位操作来控制灯光状态,具有较高的效率和可读性。
发表评论
最新留言
感谢大佬
[***.8.128.20]2025年03月30日 20时03分36秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
使用promise封装wx:requset()
2019-03-06
python 类
2019-03-06
ML简述
2019-03-06
pc或移动端登录
2019-03-06
一文上手Python3
2019-03-06
【java基础知识(难点攻克)】--接口和抽象的区别
2019-03-06
Python学习笔记(7)-Python基础7-字符串与正则表达式
2019-03-06
Python学习笔记(16)-Python高级16-进程和线程
2019-03-06
图文追踪PlusToken资产转移行踪(一): BTC部分有1,203个流入交易所
2019-03-06
HDFS存入文件的整个流程
2019-03-06
【入门级】Docker基础介绍(一)
2019-03-06
用nginx搭建http透明代理
2019-03-06
表单中的一些隐晦的bug
2019-03-06
文件系统源码分析之普通文件读写
2019-03-06
packet协议源码解析
2019-03-06
stm32 DMA2D知识点
2019-03-06