MOV P0,H0FE |
按照程序执行顺序,11111110执行到11111100到11101111到11001111然后结束,每一条重新执行速度非常快,你感受不到,在现实中就是单片机只显示了第四行功能,也就是只亮两个灯 |
void main() { whilw(1) { P1=0xaa; } } 这样就可以了,一次点亮就行,如果要依次点亮就不是这样写 |
认真学 发表于 2021-7-14 10:57 你的名字起的真不错!我只能这么说了。。。按你的名字来吧! |
void main() { P1=Oxfe;Oxfb;Oxef;Oxbf; } 是这样的吗 |
.meiyou 问题吧 |
如果只是一次点亮1357用一条语句就行了 |
感觉都没有循环,虽然我是刚接触,但还是能看懂一点,呵呵![]() |
你只点亮了一瞬间 没有保持 while(1) { P1=0xfe; P1=0xfc; P1=0xef; P1=0xcf; } |
//点亮1,3,5,7这四个发光管 #include<reg52.h> void main() { while(1) { P1=0xaa; ) } |
其实你差不多了,再仔细研究一下![]() |
你这个肯定不对三 你不觉得少了东西? |
已经弄明白了,多谢各位的帮助!! |
while 来一个循环 |
执行完之后应该最后一条有效吧,然后程序就跑飞了 |
要正确的点亮1357 你可以赋值0x55 |
qq23412 发表于 2016-12-31 21:08 第二条语句点亮的第二个,同时也灭了其他灯。不信你可以留四条赋值语句中的其中一条试试 |
同学,你p1在第一条语句里点亮了第一个灯,但同时也灭了其他的灯 |
试试这个程序怎么样。 #include<reg52.h> #include<intrins.h> void Delay10ms(unsigned int a) { unsigned int b,c; for(c=a;c>0;c--) for(b=2000;b>0;b--); } main() { unsigned char LED; LED=0x80; while(1) { P0=LED; Delay10ms(50); LED=_crol_(LED,2); } } |
你的这段都不是这个意思 |
本帖最后由 zl2168 于 2016-12-27 21:32 编辑 中间要有延时,而且要循环显示。 花样循环灯 ⑴ 花样循环1 ① 全亮2秒; ② 从上至下依次暗灭(间歇约0.5秒),每次减少一个,直至全灭; ③ 从上至下依次点亮(间歇约0.5秒),每次增加一个,直至全亮; ④ 闪烁5次(亮暗时间各约0.5秒); ⑤ 重复上述过程,不断循环。 ⑵ 花样循环2 ① 全亮,全暗,并重复一次; ② 从上至下,每次亮2个,并重复一次; ③ 从上至下,每次亮4个,并重复一次; ④ 从上至下,每次间隔亮2个(亮灯中间暗一个),并重复一次; ⑤ 从上至下,每次间隔亮4个(亮灯中间暗一个),并重复一次; ⑥ 上述过程更新间隔0.5秒,不断循环重复。 先Proteus仿真一下,确认有效 ![]() 以上摘自张志良编著《单片机实验实训100例》 ISBN978-7-5124-1603-1,北航社出版 书中电路和程序设计有详细说明,程序语句条条有注解。 |
多试几次 |
如果只是一次点亮1357用一条语句就行了 |