单片机C语言 的循环左右移动 函数问题。

voidmain(){P2=0xfe;while(1){num=P2;P2=_crol_(num,1);delay(0);}}如图片中的这部分,为何不能循环显示?只显示0... void main()
{
P2=0xfe;
while(1)
{
num=P2;
P2=_crol_(num,1);
delay(0);
}
}

如图片中的这部分,为何不能循环显示?只显示0XFE。而右边的却能正常循环显示,本人新手,希望各位深入分析基本给讲解下,我会加分顶上!
展开
 我来答
lyl_99
2011-03-10 · 超过19用户采纳过TA的回答
知道答主
回答量:76
采纳率:0%
帮助的人:46.8万
展开全部
首先对比一下 左边与右边 那里有不同 同时 程序不同对应的输出结构有哪些不同。。
P2口 连接8个LED 低电平驱动使其发光。
P2=0xfe //上电 P2.0连接的 LED发光。 其余的熄灭。
对比一下程序
void main() //主函数
{
P2=0xfe; //P2初始化
while(1) //死循环
{
num=P2; //这里 与左边不同 把P2的状态给 NUM 也就是0XFE num=0xfe
P2=_crol_(num,1); //P2等于num 循环左移 P2=0xef 这时应该是连接的P2.7的LED发光
delay(0);//延迟
}
}

左边 代码 NUM 每次大循环 都赋值 num=0xfe 是固定的 所以不管你以后怎么移动 P2口的输出都是不变得 只移动了一次。。
百度网友b53ef92
2011-03-10 · TA获得超过1801个赞
知道小有建树答主
回答量:1576
采纳率:40%
帮助的人:772万
展开全部
道理很简单,左边的永远拿一样的0xfe. 右边的是拿当时的P2内容。

所以左边的结果永远不变。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
撒康胜026
2011-03-10 · TA获得超过1693个赞
知道小有建树答主
回答量:147
采纳率:0%
帮助的人:37万
展开全部
不能这样.

估计:你在P2口上直接连接的LED吧.
这样的话,P2口输出1时,实际上的引脚电平在0.7V左右,然后再循环中直接从P2读入引脚状态,实际上读入的数据全部是0,也就是0x00.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Frank7258
2011-03-10 · TA获得超过1503个赞
知道小有建树答主
回答量:381
采纳率:0%
帮助的人:551万
展开全部
右边
num=P2
而P2在后面一句中被_crol_(num, 1)重新赋值了,所以下一次循环到num=P2的时候P2已经不是0xfe了。

你左边的代码num=0xfe,永远都是0xfe。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式