#include "dipSwitch.h" /* * ȸ·Îµµ ±âÁØ: * ADD_1..ADD_5 = P8.1..P8.5 * Pull-up to VCC5, DIP ON -> GND(LOW) => Active-Low */ #define DIP_PORT P8 #define DIP_PM PM8 #define DIP_MASK (0x3Eu) // b0011_1110 = P8.1~P8.5 #define DIP_SHIFT (1u) // P8.1ÀÌ bit0·Î ¿Àµµ·Ï void DipSwitch_Init(void) { // ÀÔ·Â ¼³Á¤: PM bit=1 => input DIP_PM |= DIP_MASK; } uint8_t DipSwitch_ReadValue_0to31(void) { uint8_t raw = (uint8_t)(DIP_PORT & DIP_MASK); // Active-LowÀ̹ǷΠ¹ÝÀü ÈÄ, ¸¶½ºÅ© Àû¿ë uint8_t v = (uint8_t)((~raw) & DIP_MASK); // P8.1~P8.5 -> bit0~bit4 v = (uint8_t)(v >> DIP_SHIFT); return (uint8_t)(v & 0x1Fu); // 0~31 } uint8_t DipSwitch_ReadAddr_1to32(void) { return (uint8_t)(DipSwitch_ReadValue_0to31() + 1u); // 1~32 }