m0_74388028 2023-04-03 09:17 采纳率: 35.7%
浏览 51
已结题

51单片机一个开关控制两个程序

当开关接高电平时,做霹雳灯,当接低电平时做奇偶灯变换,有没有人帮看一下代码有什么问题吗?```

#include <reg51.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar tab[]={0x7e,0xbd,0xdb,0xe7,0xdb,0xbd};
sbit key=P0^7;
uchar a;
void delay(uint b)
{
uchar t;
while (b--)
{
for(t=0;t<120;t++);
}
}
void main()
{
unsigned char zt=0;
while(1)
{
if(key==1){zt=0;}
if(key==0){zt=1;}
switch(zt)
{
case 0:
P1=0x55;
while(1)
{
delay(500);
P1=crol(P1,1);
}
break;
case 1:
while(1)
{
for(a=0;a<6;a++)
{
P1=tab[a];
delay(500);
}
}
break;
}
}
}

```

  • 写回答

3条回答 默认 最新

  • qzjhjxj 2023-04-03 11:03
    关注

    这么改,供参考:

    #include <reg51.h>
    #include <intrins.h>
    #define uchar unsigned char
    #define uint  unsigned int
    uchar tab[] = { 0x7e,0xbd,0xdb,0xe7,0xdb,0xbd };
    sbit key = P0 ^ 7;
    uchar a;
    void delay(uint b)
    {
        uchar t;
        while (b--)
        {
            for (t = 0; t < 120; t++);
        }
    }
    void main()
    {
        unsigned char zt = 0;
        P1 = 0x55;
        while (1)
        {
            if (key == 0) { 
                delay(100);   //消抖
                if (key == 0) {
                    zt = !zt; //状态翻转
                    if (zt == 0) P1 = 0x55;
                }
                while (!key); //判断是否放开按键
            }
            switch (zt)
            {
            case 0:
                delay(500);
                P1 = crol(P1, 1);
                break;
            case 1:
                for (a = 0; a < 6; a++)
                {
                    P1 = tab[a];
                    delay(500);
                }
                break;
            }
        }
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 4月11日
  • 已采纳回答 4月3日
  • 创建了问题 4月3日

悬赏问题

  • ¥15 救!ENVI5.6深度学习初始化模型报错怎么办?
  • ¥30 eclipse开启服务后,网页无法打开
  • ¥30 雷达辐射源信号参考模型
  • ¥15 html+css+js如何实现这样子的效果?
  • ¥15 STM32单片机自主设计
  • ¥15 如何在node.js中或者java中给wav格式的音频编码成sil格式呢
  • ¥15 不小心不正规的开发公司导致不给我们y码,
  • ¥15 我的代码无法在vc++中运行呀,错误很多
  • ¥50 求一个win系统下运行的可自动抓取arm64架构deb安装包和其依赖包的软件。
  • ¥60 fail to initialize keyboard hotkeys through kernel.0000000000