Grbl代码分析 cpu-map.h

//Arduino Mega328p.

#ifdef CPU_MAP_ATMEGA328P // (Arduino Uno)

  //串口中断向量

  #define SERIAL_RX     USART_RX_vect

  #define SERIAL_UDRE   USART_UDRE_vect

  // 步进电机脉冲端口,所有步进端口必须在一个通道里.

  #define STEP_DDR        DDRD

  #define STEP_PORT       PORTD

  #define X_STEP_BIT      2  // Uno Digital Pin 2

  #define Y_STEP_BIT      3  // Uno Digital Pin 3

  #define Z_STEP_BIT      4  // Uno Digital Pin 4

  #define STEP_MASK       ((1<<X_STEP_BIT)|(1<<Y_STEP_BIT)|(1<<Z_STEP_BIT)) // 掩码

  //步进电机方向端口. 所有步进端口必须在一个通道里.

  #define DIRECTION_DDR     DDRD

  #define DIRECTION_PORT    PORTD

  #define X_DIRECTION_BIT   5  // Uno Digital Pin 5

  #define Y_DIRECTION_BIT   6  // Uno Digital Pin 6

  #define Z_DIRECTION_BIT   7  // Uno Digital Pin 7

  #define DIRECTION_MASK    ((1<<X_DIRECTION_BIT)|(1<<Y_DIRECTION_BIT)|(1<<Z_DIRECTION_BIT)) // 掩码

  // 步进电机使能端口(一个端口控制所有电机)

  #define STEPPERS_DISABLE_DDR    DDRB

  #define STEPPERS_DISABLE_PORT   PORTB

  #define STEPPERS_DISABLE_BIT    0  // Uno Digital Pin 8

  #define STEPPERS_DISABLE_MASK   (1<<STEPPERS_DISABLE_BIT)

  /*硬限位端口和中断向量,所有端口必须在一个通道,但和其他输入端口可不再一个通//道内.*/

  #define LIMIT_DDR        DDRB

  #define LIMIT_PIN        PINB

  #define LIMIT_PORT       PORTB

  #define X_LIMIT_BIT      1  // Uno Digital Pin 9

  #define Y_LIMIT_BIT      2  // Uno Digital Pin 10

  #ifdef VARIABLE_SPINDLE // 因为变主轴转速用到PWM,所以需要Z 轴限位放到Pin 12.

    #define Z_LIMIT_BIT    4 // Uno Digital Pin 12

  #else

    #define Z_LIMIT_BIT    3  // Uno Digital Pin 11

  #endif

  #if !defined(ENABLE_DUAL_AXIS)//如果没到双轴定义(龙门结构)

    #define LIMIT_MASK     ((1<<X_LIMIT_BIT)|(1<<Y_LIMIT_BIT)|(1<<Z_LIMIT_BIT)) //掩码

  #endif

  #define LIMIT_INT        PCIE0  // 中断使能(见AVR章节)

  #define LIMIT_INT_vect   PCINT0_vect // 中断向量

  #define LIMIT_PCMSK      PCMSK0 //端口中断定义(指定那些端口变化中断)

  // 定义用户系统操作端口(循环启动,复位,进给保持,所有端口必须在一个通道,但和其他输入端口可不再一个通//道内.*/

  #define CONTROL_DDR       DDRC

  #define CONTROL_PIN       PINC

  #define CONTROL_PORT      PORTC

  #define CONTROL_RESET_BIT         0  // Uno Analog Pin 0(复位)

  #define CONTROL_FEED_HOLD_BIT     1  // Uno Analog Pin 1(进给保持)

  #define CONTROL_CYCLE_START_BIT   2  // Uno Analog Pin 2(循环启动)

  #define CONTROL_SAFETY_DOOR_BIT   1  // Uno Analog Pin 1 (门和进给保持分享一个端

口,通过config.h文件定义).

  #define CONTROL_INT       PCIE1  // 中断使能

  #define CONTROL_INT_vect  PCINT1_vect //中断向量

  #define CONTROL_PCMSK     PCMSK1 // 端口中断定义

  #define CONTROL_MASK      ((1<<CONTROL_RESET_BIT)|(1<<CONTROL_FEED_HOLD_BIT)|(1<<CONTROL_CYCLE_START_BIT)|(1<<CONTROL_SAFETY_DOOR_BIT)) //掩码

  #define CONTROL_INVERT_MASK   CONTROL_MASK // 反置掩码(低电平有效)

  // 探头端口定义.

  #define PROBE_DDR       DDRC

  #define PROBE_PIN       PINC

  #define PROBE_PORT      PORTC

  #define PROBE_BIT       5  // Uno Analog Pin 5

  #define PROBE_MASK      (1<<PROBE_BIT)

  #if !defined(ENABLE_DUAL_AXIS) //如果没有定义了双轴使能,流动冷却和雾化端口定义

    #define COOLANT_FLOOD_DDR   DDRC

    #define COOLANT_FLOOD_PORT  PORTC

    #define COOLANT_FLOOD_BIT   3  // Uno Analog Pin 3(冷却)

    #define COOLANT_MIST_DDR   DDRC

    #define COOLANT_MIST_PORT  PORTC

    #define COOLANT_MIST_BIT   4  // Uno Analog Pin 4(雾化)

    // 主轴使能和转速端口定义.

    #define SPINDLE_ENABLE_DDR    DDRB

    #define SPINDLE_ENABLE_PORT   PORTB

    #ifdef VARIABLE_SPINDLE

      #ifdef USE_SPINDLE_DIR_AS_ENABLE_PIN

        // 如果启用,主轴方向引脚现在用作主轴使能,而PWM仍在D11上。

        #define SPINDLE_ENABLE_BIT    5  // Uno Digital Pin 13

      #else

        #define SPINDLE_ENABLE_BIT    3  // Uno Digital Pin 11

      #endif

    #else

      #define SPINDLE_ENABLE_BIT    4  // Uno Digital Pin 12

    #endif

    #ifndef USE_SPINDLE_DIR_AS_ENABLE_PIN //如果没有定义主轴转动方向

      #define SPINDLE_DIRECTION_DDR   DDRB

      #define SPINDLE_DIRECTION_PORT  PORTB

      #define SPINDLE_DIRECTION_BIT   5  // Uno Digital Pin 13

    #endif

// 变主轴转速定义,

 #define SPINDLE_PWM_MAX_VALUE     255 // 328p f最大 PWM 最大值为 255.

    #ifndef SPINDLE_PWM_MIN_VALUE

      #define SPINDLE_PWM_MIN_VALUE   1   // 最小值必须大于0.

    #endif

    #define SPINDLE_PWM_OFF_VALUE     0 //关闭

    #define SPINDLE_PWM_RANGE         (SPINDLE_PWM_MAX_VALUE-SPINDLE_PWM_MIN_VALUE)

    #define SPINDLE_TCCRA_REGISTER    TCCR2A // 计数寄存器

    #define SPINDLE_TCCRB_REGISTER    TCCR2B

    #define SPINDLE_OCR_REGISTER      OCR2A // 输出比较寄存器

    #define SPINDLE_COMB_BIT          COM2A1 //7

    // 预置, 8-bit 快速 PWM模式.

    #define SPINDLE_TCCRA_INIT_MASK   ((1<<WGM20) | (1<<WGM21))  // 快速 PWM.

       #define SPINDLE_TCCRB_INIT_MASK      (1<<CS22)           // 预置 0.98kHz

    // 主轴PWM端口定义.

    #define SPINDLE_PWM_DDR   DDRB

    #define SPINDLE_PWM_PORT  PORTB

    #define SPINDLE_PWM_BIT   3    // Uno Digital Pin 11

   #else

// 双轴功能定义(需要一个独立的步进脉冲引脚来操作)

 #ifdef DUAL_AXIS_CONFIG_PROTONEER_V3_51 //采用PROTONEER_V3_51 CNC Shield

//定义脉冲端口

      #define STEP_DDR_DUAL       DDRC

      #define STEP_PORT_DUAL      PORTC

      #define DUAL_STEP_BIT       4  // Uno Analog Pin 4

      #define STEP_MASK_DUAL      ((1<<DUAL_STEP_BIT))

//定义方向端口

      #define DIRECTION_DDR_DUAL  DDRC

      #define DIRECTION_PORT_DUAL PORTC

      #define DUAL_DIRECTION_BIT  3  // Uno Analog Pin 3

      #define DIRECTION_MASK_DUAL ((1<<DUAL_DIRECTION_BIT))

      // 缺省定义和Z轴限位共享一个(根据需求自己改变)

      #define DUAL_LIMIT_BIT    Z_LIMIT_BIT

      #define LIMIT_MASK        ((1<<X_LIMIT_BIT)|(1<<Y_LIMIT_BIT)|(1<<Z_LIMIT_BIT)|(1<<DUAL_LIMIT_BIT))

      // 定义冷却,雾化不支持双轴。由于端口改变,后面设置重新定义

      #define COOLANT_FLOOD_DDR   DDRB

      #define COOLANT_FLOOD_PORT  PORTB

      #define COOLANT_FLOOD_BIT   5  // Uno Digital Pin 13

      // 主轴定义

      #define SPINDLE_ENABLE_DDR    DDRB

      #define SPINDLE_ENABLE_PORT   PORTB

      #ifdef VARIABLE_SPINDLE

        #define SPINDLE_ENABLE_BIT    3  // Uno Digital Pin 11

      #else

        #define SPINDLE_ENABLE_BIT    4  // Uno Digital Pin 12

      #endif

      #define SPINDLE_PWM_MAX_VALUE     255

      #ifndef SPINDLE_PWM_MIN_VALUE

        #define SPINDLE_PWM_MIN_VALUE   1  

      #endif

      #define SPINDLE_PWM_OFF_VALUE     0

      #define SPINDLE_PWM_RANGE         (SPINDLE_PWM_MAX_VALUE-SPINDLE_PWM_MIN_VALUE)

      #define SPINDLE_TCCRA_REGISTER    TCCR2A

      #define SPINDLE_TCCRB_REGISTER    TCCR2B

      #define SPINDLE_OCR_REGISTER      OCR2A

      #define SPINDLE_COMB_BIT          COM2A1

      #define SPINDLE_TCCRA_INIT_MASK   ((1<<WGM20) | (1<<WGM21))  // Configures fast PWM mode.

      #define SPINDLE_TCCRB_INIT_MASK      (1<<CS22)        

      #define SPINDLE_PWM_DDR   DDRB

      #define SPINDLE_PWM_PORT  PORTB

      #define SPINDLE_PWM_BIT   3    // Uno Digital Pin 11

    #endif

    // 如果采用的是CNC Shield Clone (Originally Protoneer v3.0).

    #ifdef DUAL_AXIS_CONFIG_CNC_SHIELD_CLONE

      // 重新定义双轴

      #define STEP_DDR_DUAL       DDRB

      #define STEP_PORT_DUAL      PORTB

      #define DUAL_STEP_BIT       4  // Uno Digital Pin 12

      #define STEP_MASK_DUAL      ((1<<DUAL_STEP_BIT))

      #define DIRECTION_DDR_DUAL  DDRB

      #define DIRECTION_PORT_DUAL PORTB

      #define DUAL_DIRECTION_BIT  5  // Uno Digital Pin 13

      #define DIRECTION_MASK_DUAL ((1<<DUAL_DIRECTION_BIT))

      #define DUAL_LIMIT_BIT    Z_LIMIT_BIT

      #define LIMIT_MASK        ((1<<X_LIMIT_BIT)|(1<<Y_LIMIT_BIT)|(1<<Z_LIMIT_BIT)|(1<<DUAL_LIMIT_BIT))

      #define COOLANT_FLOOD_DDR   DDRC

      #define COOLANT_FLOOD_PORT  PORTC

      #define COOLANT_FLOOD_BIT   4  // Uno Analog Pin 4

      #define SPINDLE_ENABLE_DDR    DDRC

      #define SPINDLE_ENABLE_PORT   PORTC

      #define SPINDLE_ENABLE_BIT    3  // Uno Analog Pin 3

    #endif

  #endif

#endif

#ifdef CPU_MAP_CUSTOM_PROC

  /*对于自定义针脚地图或不同的处理器,复制并编辑一个可用的cpu map文件,并根据你的需要修改。确保定义的名称在config.h文件中也被改变。*/.

#endif

#endif

版权声明:本文为CSDN博主「syheu」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/syheu/article/details/122642156

//Arduino Mega328p.

#ifdef CPU_MAP_ATMEGA328P // (Arduino Uno)

  //串口中断向量

  #define SERIAL_RX     USART_RX_vect

  #define SERIAL_UDRE   USART_UDRE_vect

  // 步进电机脉冲端口,所有步进端口必须在一个通道里.

  #define STEP_DDR        DDRD

  #define STEP_PORT       PORTD

  #define X_STEP_BIT      2  // Uno Digital Pin 2

  #define Y_STEP_BIT      3  // Uno Digital Pin 3

  #define Z_STEP_BIT      4  // Uno Digital Pin 4

  #define STEP_MASK       ((1<<X_STEP_BIT)|(1<<Y_STEP_BIT)|(1<<Z_STEP_BIT)) // 掩码

  //步进电机方向端口. 所有步进端口必须在一个通道里.

  #define DIRECTION_DDR     DDRD

  #define DIRECTION_PORT    PORTD

  #define X_DIRECTION_BIT   5  // Uno Digital Pin 5

  #define Y_DIRECTION_BIT   6  // Uno Digital Pin 6

  #define Z_DIRECTION_BIT   7  // Uno Digital Pin 7

  #define DIRECTION_MASK    ((1<<X_DIRECTION_BIT)|(1<<Y_DIRECTION_BIT)|(1<<Z_DIRECTION_BIT)) // 掩码

  // 步进电机使能端口(一个端口控制所有电机)

  #define STEPPERS_DISABLE_DDR    DDRB

  #define STEPPERS_DISABLE_PORT   PORTB

  #define STEPPERS_DISABLE_BIT    0  // Uno Digital Pin 8

  #define STEPPERS_DISABLE_MASK   (1<<STEPPERS_DISABLE_BIT)

  /*硬限位端口和中断向量,所有端口必须在一个通道,但和其他输入端口可不再一个通//道内.*/

  #define LIMIT_DDR        DDRB

  #define LIMIT_PIN        PINB

  #define LIMIT_PORT       PORTB

  #define X_LIMIT_BIT      1  // Uno Digital Pin 9

  #define Y_LIMIT_BIT      2  // Uno Digital Pin 10

  #ifdef VARIABLE_SPINDLE // 因为变主轴转速用到PWM,所以需要Z 轴限位放到Pin 12.

    #define Z_LIMIT_BIT    4 // Uno Digital Pin 12

  #else

    #define Z_LIMIT_BIT    3  // Uno Digital Pin 11

  #endif

  #if !defined(ENABLE_DUAL_AXIS)//如果没到双轴定义(龙门结构)

    #define LIMIT_MASK     ((1<<X_LIMIT_BIT)|(1<<Y_LIMIT_BIT)|(1<<Z_LIMIT_BIT)) //掩码

  #endif

  #define LIMIT_INT        PCIE0  // 中断使能(见AVR章节)

  #define LIMIT_INT_vect   PCINT0_vect // 中断向量

  #define LIMIT_PCMSK      PCMSK0 //端口中断定义(指定那些端口变化中断)

  // 定义用户系统操作端口(循环启动,复位,进给保持,所有端口必须在一个通道,但和其他输入端口可不再一个通//道内.*/

  #define CONTROL_DDR       DDRC

  #define CONTROL_PIN       PINC

  #define CONTROL_PORT      PORTC

  #define CONTROL_RESET_BIT         0  // Uno Analog Pin 0(复位)

  #define CONTROL_FEED_HOLD_BIT     1  // Uno Analog Pin 1(进给保持)

  #define CONTROL_CYCLE_START_BIT   2  // Uno Analog Pin 2(循环启动)

  #define CONTROL_SAFETY_DOOR_BIT   1  // Uno Analog Pin 1 (门和进给保持分享一个端

口,通过config.h文件定义).

  #define CONTROL_INT       PCIE1  // 中断使能

  #define CONTROL_INT_vect  PCINT1_vect //中断向量

  #define CONTROL_PCMSK     PCMSK1 // 端口中断定义

  #define CONTROL_MASK      ((1<<CONTROL_RESET_BIT)|(1<<CONTROL_FEED_HOLD_BIT)|(1<<CONTROL_CYCLE_START_BIT)|(1<<CONTROL_SAFETY_DOOR_BIT)) //掩码

  #define CONTROL_INVERT_MASK   CONTROL_MASK // 反置掩码(低电平有效)

  // 探头端口定义.

  #define PROBE_DDR       DDRC

  #define PROBE_PIN       PINC

  #define PROBE_PORT      PORTC

  #define PROBE_BIT       5  // Uno Analog Pin 5

  #define PROBE_MASK      (1<<PROBE_BIT)

  #if !defined(ENABLE_DUAL_AXIS) //如果没有定义了双轴使能,流动冷却和雾化端口定义

    #define COOLANT_FLOOD_DDR   DDRC

    #define COOLANT_FLOOD_PORT  PORTC

    #define COOLANT_FLOOD_BIT   3  // Uno Analog Pin 3(冷却)

    #define COOLANT_MIST_DDR   DDRC

    #define COOLANT_MIST_PORT  PORTC

    #define COOLANT_MIST_BIT   4  // Uno Analog Pin 4(雾化)

    // 主轴使能和转速端口定义.

    #define SPINDLE_ENABLE_DDR    DDRB

    #define SPINDLE_ENABLE_PORT   PORTB

    #ifdef VARIABLE_SPINDLE

      #ifdef USE_SPINDLE_DIR_AS_ENABLE_PIN

        // 如果启用,主轴方向引脚现在用作主轴使能,而PWM仍在D11上。

        #define SPINDLE_ENABLE_BIT    5  // Uno Digital Pin 13

      #else

        #define SPINDLE_ENABLE_BIT    3  // Uno Digital Pin 11

      #endif

    #else

      #define SPINDLE_ENABLE_BIT    4  // Uno Digital Pin 12

    #endif

    #ifndef USE_SPINDLE_DIR_AS_ENABLE_PIN //如果没有定义主轴转动方向

      #define SPINDLE_DIRECTION_DDR   DDRB

      #define SPINDLE_DIRECTION_PORT  PORTB

      #define SPINDLE_DIRECTION_BIT   5  // Uno Digital Pin 13

    #endif

// 变主轴转速定义,

 #define SPINDLE_PWM_MAX_VALUE     255 // 328p f最大 PWM 最大值为 255.

    #ifndef SPINDLE_PWM_MIN_VALUE

      #define SPINDLE_PWM_MIN_VALUE   1   // 最小值必须大于0.

    #endif

    #define SPINDLE_PWM_OFF_VALUE     0 //关闭

    #define SPINDLE_PWM_RANGE         (SPINDLE_PWM_MAX_VALUE-SPINDLE_PWM_MIN_VALUE)

    #define SPINDLE_TCCRA_REGISTER    TCCR2A // 计数寄存器

    #define SPINDLE_TCCRB_REGISTER    TCCR2B

    #define SPINDLE_OCR_REGISTER      OCR2A // 输出比较寄存器

    #define SPINDLE_COMB_BIT          COM2A1 //7

    // 预置, 8-bit 快速 PWM模式.

    #define SPINDLE_TCCRA_INIT_MASK   ((1<<WGM20) | (1<<WGM21))  // 快速 PWM.

       #define SPINDLE_TCCRB_INIT_MASK      (1<<CS22)           // 预置 0.98kHz

    // 主轴PWM端口定义.

    #define SPINDLE_PWM_DDR   DDRB

    #define SPINDLE_PWM_PORT  PORTB

    #define SPINDLE_PWM_BIT   3    // Uno Digital Pin 11

   #else

// 双轴功能定义(需要一个独立的步进脉冲引脚来操作)

 #ifdef DUAL_AXIS_CONFIG_PROTONEER_V3_51 //采用PROTONEER_V3_51 CNC Shield

//定义脉冲端口

      #define STEP_DDR_DUAL       DDRC

      #define STEP_PORT_DUAL      PORTC

      #define DUAL_STEP_BIT       4  // Uno Analog Pin 4

      #define STEP_MASK_DUAL      ((1<<DUAL_STEP_BIT))

//定义方向端口

      #define DIRECTION_DDR_DUAL  DDRC

      #define DIRECTION_PORT_DUAL PORTC

      #define DUAL_DIRECTION_BIT  3  // Uno Analog Pin 3

      #define DIRECTION_MASK_DUAL ((1<<DUAL_DIRECTION_BIT))

      // 缺省定义和Z轴限位共享一个(根据需求自己改变)

      #define DUAL_LIMIT_BIT    Z_LIMIT_BIT

      #define LIMIT_MASK        ((1<<X_LIMIT_BIT)|(1<<Y_LIMIT_BIT)|(1<<Z_LIMIT_BIT)|(1<<DUAL_LIMIT_BIT))

      // 定义冷却,雾化不支持双轴。由于端口改变,后面设置重新定义

      #define COOLANT_FLOOD_DDR   DDRB

      #define COOLANT_FLOOD_PORT  PORTB

      #define COOLANT_FLOOD_BIT   5  // Uno Digital Pin 13

      // 主轴定义

      #define SPINDLE_ENABLE_DDR    DDRB

      #define SPINDLE_ENABLE_PORT   PORTB

      #ifdef VARIABLE_SPINDLE

        #define SPINDLE_ENABLE_BIT    3  // Uno Digital Pin 11

      #else

        #define SPINDLE_ENABLE_BIT    4  // Uno Digital Pin 12

      #endif

      #define SPINDLE_PWM_MAX_VALUE     255

      #ifndef SPINDLE_PWM_MIN_VALUE

        #define SPINDLE_PWM_MIN_VALUE   1  

      #endif

      #define SPINDLE_PWM_OFF_VALUE     0

      #define SPINDLE_PWM_RANGE         (SPINDLE_PWM_MAX_VALUE-SPINDLE_PWM_MIN_VALUE)

      #define SPINDLE_TCCRA_REGISTER    TCCR2A

      #define SPINDLE_TCCRB_REGISTER    TCCR2B

      #define SPINDLE_OCR_REGISTER      OCR2A

      #define SPINDLE_COMB_BIT          COM2A1

      #define SPINDLE_TCCRA_INIT_MASK   ((1<<WGM20) | (1<<WGM21))  // Configures fast PWM mode.

      #define SPINDLE_TCCRB_INIT_MASK      (1<<CS22)        

      #define SPINDLE_PWM_DDR   DDRB

      #define SPINDLE_PWM_PORT  PORTB

      #define SPINDLE_PWM_BIT   3    // Uno Digital Pin 11

    #endif

    // 如果采用的是CNC Shield Clone (Originally Protoneer v3.0).

    #ifdef DUAL_AXIS_CONFIG_CNC_SHIELD_CLONE

      // 重新定义双轴

      #define STEP_DDR_DUAL       DDRB

      #define STEP_PORT_DUAL      PORTB

      #define DUAL_STEP_BIT       4  // Uno Digital Pin 12

      #define STEP_MASK_DUAL      ((1<<DUAL_STEP_BIT))

      #define DIRECTION_DDR_DUAL  DDRB

      #define DIRECTION_PORT_DUAL PORTB

      #define DUAL_DIRECTION_BIT  5  // Uno Digital Pin 13

      #define DIRECTION_MASK_DUAL ((1<<DUAL_DIRECTION_BIT))

      #define DUAL_LIMIT_BIT    Z_LIMIT_BIT

      #define LIMIT_MASK        ((1<<X_LIMIT_BIT)|(1<<Y_LIMIT_BIT)|(1<<Z_LIMIT_BIT)|(1<<DUAL_LIMIT_BIT))

      #define COOLANT_FLOOD_DDR   DDRC

      #define COOLANT_FLOOD_PORT  PORTC

      #define COOLANT_FLOOD_BIT   4  // Uno Analog Pin 4

      #define SPINDLE_ENABLE_DDR    DDRC

      #define SPINDLE_ENABLE_PORT   PORTC

      #define SPINDLE_ENABLE_BIT    3  // Uno Analog Pin 3

    #endif

  #endif

#endif

#ifdef CPU_MAP_CUSTOM_PROC

  /*对于自定义针脚地图或不同的处理器,复制并编辑一个可用的cpu map文件,并根据你的需要修改。确保定义的名称在config.h文件中也被改变。*/.

#endif

#endif

版权声明:本文为CSDN博主「syheu」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/syheu/article/details/122642156

生成海报
点赞 0

syheu

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

74HC138译码器的原理和使用

前言 译码器就是将每个输入的二进制代码译成对应的输出高低电平信号,和编码器互为逆过程。 百度百科 74HC138是一款高速CMOS器件,74HC138引脚兼容低功耗肖特基TTL(LSTTL&#xf