蓝桥杯小技巧之巧用bit类型定义变量

简介: 蓝桥杯小技巧之巧用bit类型定义变量

前言

本篇文章我带大家了解bit定义变量的好处,下面讲结合一篇省赛题给大家详细讲解。


一、上赛题

首先我们观察题目使用到了四个按键而且每一个按键都控制两个功能,大家都能想到每一个按键分别定义一个变量,没错这大家都可以想到,但是我想给大家使用一次bit来定义变量解决这些问题。

代码功能我不会写完整只教大家方法。

image.png

二、代码分析

#include <STC15F2K60S2.H>
//变量类型宏定义(定义变量多时可以减少代码的书写量)
#define unsigned char u8
#define unsigned short u16
#define unsigned int u32
static void DIP_ser(void)//处理数码管显示
static void Key_ser(void);//按键值处理
static void key_scan(void);//按键处理
//按键引脚声明
sbit S7=P3^0;
sbit S6=P3^1;
sbit S5=P3^2;
sbit S4=P3^3;
bit SGM_state;//数码管状态
//***********定时器初始化
void Timer0Init(void)   //1毫秒@11.0592MHz
{
  AUXR |= 0x80;   //定时器时钟1T模式
  TMOD &= 0xF0;   //设置定时器模式
  TL0 = 0xCD;   //设置定时初值
  TH0 = 0xD4;   //设置定时初值
  EA=1;
  ET0=1;
  TR0 = 1;    //定时器0开始计时
}
//**********定时器服务函数
//(中断服务函数要求快进快出建议大家在这里少写代码)
void serviceTimer0() interrupt 1
{ 
  Key_scan();
}
u8 Key_scan(void)
{
    static u32 count=0;//消抖计数变量 
  //下面为控制S7的代码其余按键可以进行复制处理加快编写代码速度  
  if(S7==0)
  {
    if(S7==0)
    {
      count++;
      if(count>=10)//消抖
      {
        count=0;
        key_VOL=1;//记录按键值
      }
    }   
    else//按键未按下
    {
      count=0;//计数值清零
    }
  }
  return Key_VOL;
}
void key_ser(void)
{
  switch(Key_VOL)//根据键值处理功能
  {
    case 1:
    {
      SGM_state=~SGM_state;//只有两个状态直接进行取反操作
    }
    break;
  }
}
void DIP_ser(void)
{
  if(SGM_state)
  {
    //此处大家自己书写
  }
  else
  {
  }
}
void main(void)
{
  while(1)
  {
    Key_scan();
    DIP_ser();
  }
}

总结

这就是bit的妙用,bit在只有两种状态的时候特别实用。大家或许会觉得我的代码书写太麻烦了,但是这种方法看起来特别清晰明了。有的人可能代码简洁但是错误半天找不到一样白搭。

各位可以看完后去试一试,觉得好的话可以点个赞。

相关文章
|
7月前
|
存储 Java 大数据
第十四届蓝桥杯集训——JavaC组第三篇——常量与变量(八种基本数据类型)
第十四届蓝桥杯集训——JavaC组第三篇——常量与变量(八种基本数据类型)
71 0
|
存储 算法 Java
【蓝桥杯Java_C组·从零开始卷】第一节、环境与变量类型&运算符与类型分析(二)
【蓝桥杯Java_C组·从零开始卷】第一节、环境与变量类型&运算符与类型分析
198 0
【蓝桥杯Java_C组·从零开始卷】第一节、环境与变量类型&运算符与类型分析(二)
|
存储 Java 大数据
【蓝桥杯Java_C组·从零开始卷】第一节、环境与变量类型&运算符与类型分析(一)
【蓝桥杯Java_C组·从零开始卷】第一节、环境与变量类型&运算符与类型分析
135 0
【蓝桥杯Java_C组·从零开始卷】第一节、环境与变量类型&运算符与类型分析(一)
|
7月前
|
人工智能 算法 Java
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-992 士兵杀敌(二)
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-992 士兵杀敌(二)
89 1
|
7月前
|
人工智能 算法 Java
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1005 数字游戏
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1005 数字游戏
115 0
|
7月前
|
Java C语言 C++
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1000 kAc给糖果你吃
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1000 kAc给糖果你吃
88 0
|
7月前
|
算法 Java C语言
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-999 数的潜能
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-999 数的潜能
92 0
|
7月前
|
算法 Java C语言
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-997 粘木棍
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-997 粘木棍
97 0
|
7月前
|
机器学习/深度学习 算法 Java
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-996 车的放置
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-996 车的放置
96 0
|
7月前
|
算法 Java C语言
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-986 藏匿的刺客
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-986 藏匿的刺客
101 0