关于单片机流水灯的问题,求高手求解

在主函数中:voidmain(){unsignedchari;P1=0xfe;for(i<0;i<8;i++){delay(50000);P1<<1;P1=P1|0x01... 在主函数中:
void main()
{
unsigned char i;
P1=0xfe;
for(i<0;i<8;i++)
{
delay(50000);
P1<<1;
P1=P1|0x01;
}
在该程序中, P1=P1|0x01;这个代码,为什么要将P1端口的最低位置1,其余位不变。
而且在右移时,要将其与0x80按位或,使最高位置1,其余位不变?
展开
 我来答
wujiezam
2013-04-10 · 超过15用户采纳过TA的回答
知道答主
回答量:30
采纳率:0%
帮助的人:28.1万
展开全部
首先我不明白你的i是什么参数,i<0;i<8,这个循环是什么逻辑含义?然后,你的程序是想实现流水灯先循环左移吗局陆昌?如果是的话,在开始,P1已经设置成0xfe了,也就是最低位的灯是亮着的,设想一下,要是没有P1|0X01,那么,在第一次左移悉羡之后,P1=1111 1100 ,因为P1<<=1之后最低位变成0,而不是1,所以桐扒要P1|0X01。在第二次移位之后,P1=1111 1010,此时也要|0x01,则P1=1111 1011。依次循环。当右移的时候|0x80其实是一样的,只是因为左右顺序变了,所以0x01变成了0x80。
我只能解释这么清楚了,希望你能懂。再说一个,你要是想以后找单片机工作的话,还是去北京上海,要是不不是这两个城市的话,还是学好自己专业,不然你会觉得现实很残忍!
宿兴电子
2024-11-28 广告
联系我们一、有无震荡源 无源这里的“源”不是指电源,而是指震荡源。也就是说,有源蜂鸣器内部带震荡源,所以只要一通电就会叫。而无源内部不带震荡源,所以如果用直流信号无法令其鸣叫。 二、价格不同 有源蜂鸣器往比无源蜂鸣器贵,就是因为里面多个震荡... 点击进入详情页
本回答由宿兴电子提供
wee616
2013-04-08 · TA获得超过170个赞
知道答主
回答量:72
采纳率:0%
帮助的人:30.3万
展开全部
其实就是想保证左移完,最低位是1,昌仔感觉可以用循环左移或耐消汪者循环右移来实现,让代码看起来更清爽桥仔,
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int

void main()
{
unsigned char i;
P1=0xfe;
for(i<0;i<8;i++)
{
delay(50000);
P1 = _crol_(P1,1);//循环右移

}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-04-08
展开全部
移到第八次的时候,不执行按位或,应该就不会有灯亮了,移到CY位去吧。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式