请问第二个流水等实验为什么是MTB先亮?
我认为应该是和第一个流水等试验一样是第一个灯(MTA)先亮,但是利用第二个程序(位操作)都发现是MTB先亮。为什么?谢谢
第一个:对每一个口操作
#include <STC89.h>
sbit mta=P2^4;
sbit mtb=P2^5;
sbit mtc=P2^6;
sbit mtd=P2^7;
void delay(unsigned char n) //延时程序 (n=10--200ms)
{
unsigned char i,j,k;
for(i=n;i>0;i--)
for(j=100;j>0;j--)
for(k=125;k>0;k--);
}
void main()
{
while(1)
{
mta=1;
delay(10);
mta=0;
delay(20);
mtb=1;
delay(30);
mtb=0;
delay(40);
mtc=1;
delay(40);
mtc=0;
delay(30);
mtd=1;
delay(20);
mtd=0;
delay(10);
}
}
第二个:(利用了位操作)
#include<stc89.h>
void delay(unsigned char n)
{
unsigned char i,j,k;
for(i=n;i>0;i--)
for(j=100;j>0;j--)
for(k=125;k>0;k--);
}
void main()
{
unsigned char i;
while(1)
{
for(i=0;i<4;i++)
{
P2=(1<<i+4);
delay(10);
P2&=0x0F;
delay(10);
}
}
}
共7条
1/1 1 跳转至页
这个是让流水灯MTA先亮200ms,然后灭200ms,然后MTB亮200ms,然后灭200ms,然后MTC。。。 当然要是不写就是中间没有全灭的情况。二者都可以,但是我是试过了,改成P2&=0xF0 MTA照样第一次不亮,先是MTB亮,然后MTC,MTD,MTA,MTB,MTC,MTD,MTA,MTB,MTC,MTD,MTA... 为什么MTA第一次不亮啊,第一次循环i=0啊。
谢谢大家,我的截图如下,我用daumplayer无法截图,只能用wmp截图,无法截清楚,P2.4经过ULN2003A接到了MTA上,P2.5经过 ULN2003A接到了MTB上,P2.6经过ULN2003A接到了MTC上,P2.7经过ULN2003A接到了MTD上,ULN2003A起到了一 个反向的作用,也就是P2.4若是高电平,则ULN2003A输出低电平。谢谢
谢谢大家,我的截图如下,我用daumplayer无法截图,只能用wmp截图,无法截清楚,P2.4经过ULN2003A接到了MTA上,P2.5经过 ULN2003A接到了MTB上,P2.6经过ULN2003A接到了MTC上,P2.7经过ULN2003A接到了MTD上,ULN2003A起到了一 个反向的作用,也就是P2.4若是高电平,则ULN2003A输出低电平。谢谢
谢谢您的回复,我还是不太明白,您说“在for循环的判断中,i先赋值为0,再判断是否小于4,加为1,1右移五位,当然第二灯亮”,请问为什么判断小于四后要加为1,第一个循环i=0啊。这是i左移4位,由00000001变成了00010000,而恰好是P2.4为高电平,带动MTA亮。
另外我认为这个程序没有消除残影,delay(10)延时是200ms,这个时间是肉眼能分辨的。流水灯也没有必要消除残影吧。
0x0f取与的思路是:将00010000(MTA亮)200ms后变成00000000(全部灯灭200ms),然后在00100000(MTB亮)200ms,后变成00000000(全部灯灭200ms),然后在01000000(MTC亮)200ms,后变成00000000(全部灯灭200ms),然后在10000000(MTD亮)200ms,后变成00000000(全部灯灭200ms),一次循环,请问为什么要与0xf0相与呢?
本人菜鸟,望指点
另外我认为这个程序没有消除残影,delay(10)延时是200ms,这个时间是肉眼能分辨的。流水灯也没有必要消除残影吧。
0x0f取与的思路是:将00010000(MTA亮)200ms后变成00000000(全部灯灭200ms),然后在00100000(MTB亮)200ms,后变成00000000(全部灯灭200ms),然后在01000000(MTC亮)200ms,后变成00000000(全部灯灭200ms),然后在10000000(MTD亮)200ms,后变成00000000(全部灯灭200ms),一次循环,请问为什么要与0xf0相与呢?
本人菜鸟,望指点
共7条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
【有奖活动】智能可穿戴设备AR/VR如何引领科技新潮流! | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
【有奖活动】震撼来袭!这场直播将直击工程师的心灵! |
打赏帖 | |
---|---|
如何实现基于NXPiMX.RT1021的BH1730采集被打赏50分 | |
【换取手持数字示波器】AHT10温度检测分享被打赏40分 | |
【换取手持数字示波器】ACM32F070开发板点亮LCD屏和触控按键,串口,ADC被打赏40分 | |
【换取手持数字示波器】ACM32F070LCD屏和触控按键功驱动蜂鸣器分享被打赏40分 | |
【换取手持数字示波器】国民技术PWM功能知识分享被打赏40分 | |
【换取手持数字示波器】放大器运放知识分享被打赏40分 | |
【分享评测,赢取加热台】+开关电源AC输入知识分享被打赏30分 | |
【换取手持数字示波器】N32G430点亮数码管与串口打印、ADC被打赏40分 | |
老胖子聊电路--分析一个反馈电路被打赏50分 | |
【换取手持数字示波器】+点亮WS2812RGB灯被打赏50分 |