香菜跟葱都不要 2023-03-15 15:48 采纳率: 100%
浏览 29
已结题

51单片机的C语言程序问题

能帮我看看哪里写的不对吗?谢谢各位
一、 P0.0接一手动按钮,按动一次(低电平有效),P3.0动作300ms(低电平有效)之后复位,1S后P3.1动作300ms(低电平有效)之后复位,以此循环
二、 手动按钮重复按动一次,单片机复位

#include "reg52.h"

sbit k1=P0^0;
sbit k2=P3^0;
sbit k3=P3^1;

void Delay5Ms(void)
{
    unsigned int TempCyc = 5552;
    while(TempCyc--);
}

void Delay300Ms(void)
{
 unsigned char TempCycA = 4;
 unsigned int TempCycB;
 while(TempCycA--)
 {
  TempCycB=7269;
  while(TempCycB--);
 }
}

void Delay1000Ms(void)
{
 unsigned char TempCycC = 11;
 unsigned int TempCycD;
 while(TempCycC--)
 {
  TempCycD=7269;
  while(TempCycD--);
 }
}

void main()
{
    int i = 0;
    while(1)
    {
        if(k1==0)
        { 
            Delay5Ms();//消抖
          if(k1==0)    //如果K1按键按下
            {
                i=~i;
                if(i==1)
                {
                    k2 =~k2;
                    Delay300Ms();
                    k2 =~k2;
                    Delay1000Ms();
                    k3 =~k3;
                    Delay300Ms();
                    k3 =~k3;
                    Delay1000Ms();
              }else{
                    k2 = 1;k3 = 1;
                }
          }
     }
 }
}

  • 写回答

4条回答 默认 最新

  • 於黾 2023-03-15 15:52
    关注

    i=~i;
    ~是按位取反
    0取反是FF,不是1
    所以后面的if就进不去
    把~全部改为!
    !是逻辑取反,true变false,false变true

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月22日
  • 已采纳回答 3月15日
  • 创建了问题 3月15日

悬赏问题

  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?