完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
#include
#include #define uint unsigned int //宏定义 #define uchar unsigned char //宏定义 void delay(uint z) //延时函数,z的取值为这个函数的延时ms数,如delay(200);大约延时200ms. { //delay(500);大约延时500ms. uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } void main() //主函数 { uchar a; while(1) //大循环 { a++; P1=~a; delay(200); } } 请问这个程序为什么能实现用8个发光管演示出8位二进制数累加过程,而且在使用a++之前不用先给a赋值吗?新手,很困惑,望高手解答! |
|
相关推荐
8个回答
|
|
|
|
uchar a; 定义a时如果不给变量赋值 默认赋值0 a=1时为0x01 开发板上开机默认所有引脚为高电平 所以要取反 按16进制为0xfe 第一脚为低电平 使led亮 其他数值依次类推
|
|
|
|
至于a的值和编译器有关你可以试试你的编译器默认值是不是0
|
|
|
|
请教一下一轮8位二进制数累加完成后,怎么实现循环的了?
|
|
|
|
a定义的上一字符型量,只有8位,当a++到 1111 1111 时再a++就成了 1 0000 0000,字符型变量只有8位,所以第9位是会自动丢掉的,就成了 0000 0000 ,就一轮又开始了。个人理解,有误勿喷! |
|
|
|
有一定道理,先谢谢再说、、、 |
|
|
|
a是uchar类型,范围0到255,255等于1111 1111,a=0,~a=1111 1111;
a=1,~a=1111 11110;a=2,~a=1111 1101。。。以此类推 |
|
|
|
a是uchar类型,范围0到255,255等于1111 1111,a=0,~a=1111 1111;此时都是高电平,不亮
a=1,~a=1111 11110,此时只有p01口低电平才亮;a=2,~a=1111 1101,只有p02口低电平才亮。。。以此类推 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
298 浏览 1 评论
《DNESP32S3使用指南-IDF版_V1.6》第二十六章 INFRARED_RECEPTION实验
309 浏览 0 评论
826 浏览 0 评论
求助一下关于51系列单片机的Timer0的计时问题,TH0、TL0+1的时间是怎么算的?
1911 浏览 2 评论
【RA-Eco-RA4E2-64PIN-V1.0开发板试用】开箱+Keil环境搭建+点灯+点亮OLED
1427 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12031 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-25 04:59 , Processed in 0.588774 second(s), Total 53, Slave 47 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号