       */
     }
   }
-  if (displayRefresh) {
-
-    displaySWRvalue();
-
-    EraseDisplayL();
-    displayL();
-
-    EraseDisplayC1();
-    displayC1();
-
-    EraseDisplayC2();
-    displayC2();
-
-    if (!isBusy) {
-      TFTscreen.stroke(255, 255, 0);                  // set the font color
-      digitalWrite(40, LOW);
-    } else {
-      TFTscreen.stroke(0, 20, 20);
-      digitalWrite(40, HIGH);
+  if (displayRefreshFlags != 0) {
+
+    if ((displayRefreshFlags & DISPLAY_REFRESH_SWR) != 0) {
+      displaySWRvalue();
+      displayRefreshFlags &= ~DISPLAY_REFRESH_SWR;
     }
-    TFTscreen.setTextSize(1);
-    TFTscreen.text("Ready", 50, 115);                // write the text to coordinates
-
-    displayRefresh = false;
-  }
-
-
-}
+    if ((displayRefreshFlags & DISPLAY_REFRESH_L) != 0) {
+      EraseDisplayL();
+      displayL();
+      displayRefreshFlags &= ~DISPLAY_REFRESH_L;
+    }
+    if ((displayRefreshFlags & DISPLAY_REFRESH_C1) != 0) {
+      EraseDisplayC1();
+      displayC1();
+      displayRefreshFlags &= ~DISPLAY_REFRESH_C1;
+    }
+    if ((displayRefreshFlags & DISPLAY_REFRESH_C2) != 0) {
+      EraseDisplayC2();
+      displayC2();
+      displayRefreshFlags &= ~DISPLAY_REFRESH_C2;
+    }
+    if ((displayRefreshFlags & DISPLAY_REFRESH_BSY) != 0) {
+      if (!isBusy) {
+        TFTscreen.stroke(255, 255, 0);                  // set the font color
+        digitalWrite(40, LOW);
+      } else {
+        TFTscreen.stroke(0, 20, 20);
+        digitalWrite(40, HIGH);
+      }
+      TFTscreen.setTextSize(1);
+      TFTscreen.text("Ready", 50, 115);                // write the text to coordinates
+      displayRefreshFlags &= ~DISPLAY_REFRESH_BSY;
+    }
+  }
+}

// create an instance of the TFT library
TFT TFTscreen = TFT(cs, dc, rst);

boolean displayRefresh = false;
boolean isBusy = false;

// char array

void busReceiver(char cmd, uint8_t length, const TCommand *payload) {
  switch (cmd) {
    case cmdStatus: {
        float rfl = payload->status.adc.rfl;
        float fwd = payload->status.adc.fwd;
        float p = (rfl / fwd);
        float swr = (1 + p) / (1 - p);
        if (swr != valueSWR) {
          valueSWR = (1 + p) / (1 - p);
          displayRefreshFlags |= DISPLAY_REFRESH_SWR;
        }
        if (valueRotateL != payload->status.pos.lPos) {
          valueRotateL = payload->status.pos.lPos;
          displayRefreshFlags |= DISPLAY_REFRESH_L;
        }
        if (valueRotateC1 != payload->status.pos.c1Pos) {
          valueRotateC1 = payload->status.pos.c1Pos;
          displayRefreshFlags |= DISPLAY_REFRESH_C1;
        }
        if (valueRotateC2 != payload->status.pos.c2Pos) {
          valueRotateC2 = payload->status.pos.c2Pos;
          displayRefreshFlags |= DISPLAY_REFRESH_C2;
        }
        boolean bsy = payload->status.flags & (1 << 3);
        if (isBusy != bsy) {
          isBusy = bsy;
          displayRefreshFlags |= DISPLAY_REFRESH_BSY;
        }
        break;
      }
    case cmdDebug: {
