Advertisement
Guest User

Untitled

a guest
Feb 22nd, 2019
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.83 KB | None | 0 0
  1. size_t SoftwareSerial::write(uint8_t b) {
  2.   if (!m_txValid) return 0;
  3.  
  4.   if (m_invert) b = ~b;
  5.   if (!m_intTxEnabled)
  6.     // Disable interrupts in order to get a clean transmit
  7.     cli();
  8.   if (m_txEnableValid) digitalWrite(m_txEnablePin, HIGH);
  9.   unsigned long wait = m_bitTime;
  10.   digitalWrite(m_txPin, HIGH);
  11.   unsigned long start = ESP.getCycleCount();
  12.   // Start bit : HIGH if inverted logic, otherwise LOW
  13.   digitalWrite(m_txPin, m_invert);
  14.   //------------------------
  15.   WAIT;
  16.   for (int i = 0; i < 8; i++) {
  17.     digitalWrite(m_txPin, (b & 1) ? HIGH : LOW);
  18.     WAIT;
  19.     b >>= 1;
  20.   }
  21.   // Stop bit : LOW if inverted logic, otherwise HIGH
  22.   digitalWrite(m_txPin, !m_invert);
  23. //----------------------------
  24.   WAIT;
  25.   if (m_txEnableValid) digitalWrite(m_txEnablePin, LOW);
  26.   if (!m_intTxEnabled)
  27.     sei();
  28.   return 1;
  29. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement