⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 relay.c

📁 EX3_RELAY: (继电器) K1- 吸合键
💻 C
字号:
/*******************************************************************
 *                                                                  *
 * ME850单片机开发实验仪演示程序 -  键控制继电器                    *
 *                                                                  *
 * K1- 吸合键,K2- 释放键                                           *
 *                                                                  *
 * 版本: V1.0 (2008/08/16)                                         *
 * 作者: gguoqing (Email: gguoqing@willar.com)                     *
 * 作者: gguoqing (gguoqing@willar.com)                            *
 * 网站: www.sofi-tech.com(硕飞科技) www.mcusj.com(伟纳单片机世界) *
 * 邮箱: sofitech@tom.com                                        *
 *                                                                  *
 *【版权】Copyright(C)伟纳电子 www.willar.com  All Rights Reserved  *
 *【声明】此程序仅用于学习与参考,引用请注明版权和作者信息!        *
 *                                                                  *
 *******************************************************************/

#include <reg52.h>

char code reserve[3]_at_ 0x3b; //保留0x3b开始的3个字节

sbit K1 = P1 ^ 4;
sbit K2 = P1 ^ 5;
sbit relay = P3 ^ 6;

unsigned char key_new, key_old;

/**********************************************************

延时函数

 **********************************************************/
void delayms(unsigned int ms)
{
  unsigned char k;
  while (ms--)
  {
    for (k = 0; k < 114; k++)
      ;
  }
}

/********************************************************

扫描健盘函数

 ********************************************************/
unsigned char scan_key()
{
  key_new = 0x00;
  key_new |= K2;
  key_new <<= 1;                   //左移1位
  key_new |= K1;
  return key_new;                 //无键按下 key_new=0x03。
}

/**********************************************************

主函数

 **********************************************************/
void main(void)
{
  P0 = 0xff;                        //初始化端口
  P2 = 0xff;
  P1 = 0xf0;                        //置P1高四位为输入
  key_old = 0x03;                   //初始键比较值
  relay = 1;                        //继电器释放

  while (1)
  {
    scan_key();
    if (key_new != key_old)
    {
      delayms(10);                  //延时去抖动
      scan_key();                   //再次判健是否按下
      if (key_new != key_old)
      {
        key_old = key_new;           //保存按键状态
        if ((key_new &0x01) == 0)	 //K1键按下
          relay = 0;		         //继电器吸合

        if ((key_new &0x02) == 0)    //K2键按下
          relay = 1;			     //继电器释放											
      }
    }
  }
}

 /**********************************************************/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -