找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

C51单片机led灯多灯同时闪烁程序问题

查看数: 10609 | 评论数: 15 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2019-3-24 10:53

正文摘要:

各位大佬们,如果我这样编写程序,怎么让1.3.5.7灯同时闪烁,也就是说delay该怎么写?

回复

ID:913842 发表于 2021-5-24 20:09
#include<reg51.h>
void main()
{
        unsigned int i;
        while(1)
        {
                P2&=0x00;
                i=50000;
                while(i--);
                P2|=0xff;
                i=50000;
                while(i--);
        }
}
ID:349067 发表于 2019-4-5 09:34
WHOAMI000 发表于 2019-3-24 14:08
如果用“异或”该怎么编写代码?
  1. led3=led5=led7=led1=0;
  2. while(1)
  3. {
  4.     led1^=led1;
  5.     led3=led5=led7=led1;
  6.     delay(5000);
  7. }
复制代码
ID:504761 发表于 2019-4-4 13:51
void Delay5ms()                //@11.0592MHz {         unsigned char i, j;          i = 54;         j = 199;         do         {                 while (--j);         } while (--i); }每隔5毫秒的软延迟把灯开一次延迟一次再关同一个灯再延迟一次然后在开需要打开的下一个灯延迟重复
ID:213173 发表于 2019-4-2 21:39
WHOAMI000 发表于 2019-3-24 14:08
如果用“异或”该怎么编写代码?

直接赋值最简单,用&/|写可以保持2、4、6、8状态不变而不影响另作他用。用^写徒增麻烦。
#include<reg51.h>
void main()
{
        unsigned int i;
        while(1)
        {
                P1&=0xaa;
                i=50000;
                while(i--);
                P1|=0x55;
                i=50000;
                while(i--);
        }
}
ID:74585 发表于 2019-4-2 17:57
在最后一行加多个延时函数,另外最好在初始化的时候把不需要用到的pin配置成输入
ID:502158 发表于 2019-4-1 09:34
void Delay(unsigned int t) {  while(--t); }
ID:475340 发表于 2019-3-24 17:39
异或是判断语句,不是执行语句,异或做多用来判断当前值,反而很麻烦
ID:497290 发表于 2019-3-24 15:37
这个东西有个大佬之前做过  你可以去看他的帖子哦  加油 一起努力
ID:497135 发表于 2019-3-24 14:08
xuyaqi 发表于 2019-3-24 11:23
while(1)
        {
                led1=0;

如果用“异或”该怎么编写代码?
ID:161151 发表于 2019-3-24 11:58
延时程序多的很,抄点就行。
ID:367870 发表于 2019-3-24 11:53
这个不能实现吗
ID:94031 发表于 2019-3-24 11:24
while(1)
        {
                led1=0;
                led3=0;
                led5=0;
                led7=0;
                delay(5000);
               
                led1=1;
                led3=1;
                led5=1;
                led7=1;
                delay(5000);
        }
ID:94031 发表于 2019-3-24 11:23
while(1)
        {
                led1=0;
                led3=0;
                led5=0;
                led7=0;
                delay(5000);
               
                led1=1;
                led3=1;
                led5=1;
                led6=1;
                led7=1;
                delay(5000);
        }
ID:94031 发表于 2019-3-24 11:21
while(1)
        {
                led1=0;
                led2=0;
                led3=0;
                led4=0;
                led5=0;
                led6=0;
                led7=0;
                led8=0;
                delay(5000);
               
                led1=1;
                led2=1;
                led3=1;
                led4=1;
                led5=1;
                led6=1;
                led7=1;
                led8=1;
                delay(5000);
        }
ID:490330 发表于 2019-3-24 11:16
先让1.3.5.7亮,然后延时,然后让1.3.5.7灭,然后延时即可。都写在while(1)内,1.3.5.7就闪

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表