完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
#include
#include void delayms(unsigned char ms) // 延时子程序 { unsigned char i; while(ms--) { for(i = 0; i < 120; i++); } } main() { unsigned char LED; LED = 0xfe; //0xfe = 1111 1110 while(1) { P2 = LED; delayms(250); LED = LED << 1; //循环右移1位,点亮下一个LED "<<"为左移位 if(P2 == 0x00 ) {LED = 0xfe; } // 0xfe = 1111 1110 } } 不明白最后一个if的作用是什么呢 为什么去了if以后流水灯就不流水了呢 明明是while 死循环啊??? |
|
相关推荐
5个回答
|
|
另外这个ms 是什么意思
|
|
|
|
while(1);才是死循环,最后if的语句不是说了如果P2口的灯都亮了,再从第一个亮起,这不就实现循环了
|
|
|
|
ms是定义了一个延时变量,通过改变ms的数值来决定延时时间的大小。while()循环是根据括号中的表达式的真(1)或假(0)来判断是否循环的,所以如果括号中的表达式直接为1的话while(1){函数体}中函数体一直循环进行,或者while(1);之前的函数一直进行。<<左移运算符是原来的数向左移一位,且低位补0,所以当运行7次后LED=0000 0000B(即00H)所以要想重复流水灯,就要在7次之后将LED赋值原先的数1111 1110B(fe H)
|
|
|
|
哦 对哈 谢谢 |
|
|
|
正解!! |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
726 浏览 0 评论
777 浏览 1 评论
基于瑞萨FPB-RA4E2智能床头灯项目——1编译环境搭建与点亮驱动ws2812全彩LED
680 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-LCD显示图片编程示例之介绍mmap
1149 浏览 0 评论
《DNESP32S3使用指南-IDF版_V1.6》第二章 常用的C语言知识点
1120 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11800 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-27 02:30 , Processed in 0.716977 second(s), Total 82, Slave 65 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号