#pragma once #include "tiring.h" #include "gpio.h" #include "mspdebugconsole.h" template class SoftSPI { private: Output mosi; Input miso; Output sclk; Output ss; public: SoftSPI() { disable(); } inline void enable() { ss = false; } inline void disable() { ss = true; } uint8_t transfer(uint8_t data) { uint8_t bit, result = 0; for (bit = 8; bit; bit--) { mosi = (data & 0x80); sclk = true; result <<= 1; if (miso) result |= 0x01; sclk = false; data <<= 1; } return result; } };