完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
我是新手,关于IO口赋值,单片机给IO口赋值的原则是什么?通常我们定义某IO口为0或1,或者定义P1(或者P2,P3)=0xfe,(0xfd,0xfc,等等),这种情况下我们都是要么给这个IO口一个高电平要么给一个低电平,即0或1;
我们还可以赋别的值给某个IO口吗? 下面的这个程序里主函数赋值的原理是什么?定义i为无符号字符型(0-255),那么我们给的是高电平还是低电平,这里面的道理是什么?小弟对“for(i=0;i<255;i++)”这一部分不是很理解,请教高手多多指点!!!谢谢!!! #include void delay(void) { unsigned int i; for(i=0;i<20000;i++); } void main(void) { unsigned char i; for(i=0;i<255;i++) { P0=i; delay(); } } |
|
相关推荐
5个回答
|
|
小弟刚学单片机,一直对这个没搞明白,如这个主函数里for(i=0;i<255;i++),i<255,i++,自加1,那i的值不是在0-255之间吗,而IO口只能给赋值0或1,那i在0-255之间(除0和1之外)时有什么含义?小弟以前是学文科的,对中间的道理不是很明白;它和前面定义i=0又有什么联系?
这个流水灯的程序是怎么实现流水变化的??P0口=i=0,就是P0口对应的8个LED都是低电平,都是亮的,它又是如何实现流水变化的?实验测试过程序没有问题,只是对其中的道理没有搞明白,希望高手指点一下,不胜感激!! |
|
|
|
给P0赋值是对IO的8位寄存器赋值,所以数值可以在0-255之间变化,而你阐述的只能给赋值0或1是指对IO的某一位进行赋值,例如P0.1=1或0;实现流水变化是因为i自增,i是个十进制数,转化为二进制数就可以看明白了
|
|
|
|
感觉是这个道理!不过还需要深刻理解一下这其中的道理!先谢谢啦! |
|
|
|
这是给P0这个寄存器整体赋值,P0有8位,所以能从0到255变化,而对于单个来说比如P0^1,就只能赋值0或1
而对于单个I/O的0或1来说就是高低电平的分辨而已,一般是0~0.25V为低电平,3~3.5V为高电平,而数字逻辑的0或1就是对内部可编程逻辑芯片就行控制,是内部的三极管或mos管变化来达到相应的高低电平 |
|
|
|
感谢上面两位的回答,现在感觉清楚点了,小弟刚学单片机,这些基础的原理还要再深刻理解一下
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-spi编程示例之spi编写程序
575 浏览 0 评论
《DNK210使用指南 -CanMV版 V1.0》第三十七章 image图像对比实验
554 浏览 0 评论
500 浏览 1 评论
482 浏览 0 评论
关于RT-Thread studio添加freemodbus控件失败的问题
817 浏览 1 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11641 浏览 31 评论
浏览过的版块 |
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-8 16:36 , Processed in 0.522195 second(s), Total 50, Slave 43 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号