香菜跟葱都不要 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 delphi webbrowser组件网页下拉菜单自动选择问题
  • ¥15 wpf界面一直接收PLC给过来的信号,导致UI界面操作起来会卡顿
  • ¥15 init i2c:2 freq:100000[MAIXPY]: find ov2640[MAIXPY]: find ov sensor是main文件哪里有问题吗
  • ¥15 运动想象脑电信号数据集.vhdr
  • ¥15 三因素重复测量数据R语句编写,不存在交互作用
  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了