关于单片机流水灯的问题,求高手求解
在主函数中: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,其余位不变? 展开
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,其余位不变? 展开
3个回答
展开全部
首先我不明白你的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 广告
2024-11-28 广告
联系我们一、有无震荡源 无源这里的“源”不是指电源,而是指震荡源。也就是说,有源蜂鸣器内部带震荡源,所以只要一通电就会叫。而无源内部不带震荡源,所以如果用直流信号无法令其鸣叫。 二、价格不同 有源蜂鸣器往比无源蜂鸣器贵,就是因为里面多个震荡...
点击进入详情页
本回答由宿兴电子提供
展开全部
其实就是想保证左移完,最低位是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);//循环右移
}
#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位去吧。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询