标题: 给个单片机编程思路 主要是一个开关,第一次接通,延时5s,P30 P31导通,第二次... [打印本页]

作者: hjx5548    时间: 2024-1-15 08:15
标题: 给个单片机编程思路 主要是一个开关,第一次接通,延时5s,P30 P31导通,第二次...
主要是一个开关,第一次接通,延时5s,单片机P30 P31导通,第二次之后接通,就是延时3s,P30 ,P31导通。

作者: yzw846562238    时间: 2024-1-15 14:47
1、定义一个变量,记录导通次数;if(0 == BreakoverNum)
作者: lxdm163    时间: 2024-1-15 14:48
老哥,这是在凡尔赛吗?按键或者输入检测,奇偶判断延时输出???
作者: yzw846562238    时间: 2024-1-15 14:51
定义一个变量,记录是否第一次导通,再定义一个变量记录导通时间
if(0 == BreakoverFlag)
{
    BreakoverFlag = 1;
    BreakoverTime = 5000; /* 导通时间设为5000毫秒 */
}
else
{
    BreakoverTime = 3000; /* 导通时间设为3000毫秒 */
}

if(0 < BreakoverTime )
{
    /* P30 P31 导通 */
}
else
{
    /* P30 P31 不导通 */
}

BreakoverTime 这个值在定时器中断里每1ms减小1
作者: 大IGBT    时间: 2024-1-15 14:55
不知怎么界定第一次,第二次?间隔几分钟,还是几小时,还是隔天
作者: wangxiangtan    时间: 2024-1-15 16:27
P30 ,P31导通是神马意思,是二极管导通,还是继电器导通,还是使能串口
作者: jinyudz    时间: 2024-1-15 19:07
没看明白啥意思
单片机P30、P31导通,导通延时时间是多少,是开关按下导通,按键放开关闭吗?
作者: a137135    时间: 2024-1-16 19:41
// 定义IO口连接的引脚
#define SWITCH_PIN P0_0
#define P30_PIN P0_1
#define P31_PIN P0_2

void delay(int msec) {
  // 根据单片机的具体型号和时钟频率来实现延时
  // 这里使用示例代码,仅供参考
  int i, j;
  for (i = 0; i < msec; i++)
    for (j = 0; j < 1000; j++);
}

int main() {
  // 配置引脚模式为输入和输出
  SWITCH_PIN = 1;  // 将开关引脚设置为输入
  P30_PIN = 0;  // 将P30引脚设置为输出
  P31_PIN = 0;  // 将P31引脚设置为输出

  while (1) {
    if (SWITCH_PIN == 0) {
      // 检测到开关接通
      delay(100);  // 防止抖动,延时一定时间
      if (SWITCH_PIN == 0) {
        // 第一次接通
        P30_PIN = 1;  // 导通P30引脚
        P31_PIN = 1;  // 导通P31引脚
        delay(5000);  // 第一次延时5s
      } else {
        // 第二次及以后接通
        P30_PIN = 1;  // 导通P30引脚
        P31_PIN = 1;  // 导通P31引脚
        delay(3000);  // 第二次及以后延时3s
      }

      // 关闭P30和P31引脚
      P30_PIN = 0;
      P31_PIN = 0;
    }
  }
  
  return 0;
}




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1