D:\Program Files\Arduino\hardware\arduino\cores\arduino的wiring_digital.c文件
或D:\Program Files\Arduino\hardware\arduino\cores\robot的wiring_digital.c文件
| #define ARDUINO_MAIN #include "wiring_private.h" #include "pins_arduino.h" void pinMode(uint8_t pin, uint8_t mode) { uint8_tbit = digitalPinToBitMask(pin); uint8_tport = digitalPinToPort(pin); volatileuint8_t *reg, *out; if (port == NOT_A_PIN) return ; //JWS: can I let the optimizer do this? reg= portModeRegister(port); out= portOutputRegister(port); if (mode == INPUT) { uint8_toldSREG = SREG; cli(); *reg&= ~bit; *out&= ~bit; SREG= oldSREG; } else if (mode == INPUT_PULLUP) { uint8_toldSREG = SREG; cli(); *reg&= ~bit; *out|= bit; SREG= oldSREG; } else { uint8_toldSREG = SREG; cli(); *reg|= bit; SREG= oldSREG; } } |