Conversione da valore ascii decimale a carattere

Ciao a tutti

vorrei costruire un Monitor seriale che mi legga le informazioni da una rs232 e le invii al monitor seriale dell'arduino ,nano nel mio caso.

attualmete sto utilizzando questo codice

//Created August 23 2006
//Heather Dewey-Hagborg
//http://www.arduino.cc

#include <ctype.h>

#define bit9600Delay 100  
#define halfBit9600Delay 50
#define bit4800Delay 188
#define halfBit4800Delay 94

byte rx = 6;
byte tx = 7;
byte SWval;

void setup() {
  Serial.begin(115200);
  pinMode(rx,INPUT);
  pinMode(tx,OUTPUT);
  digitalWrite(tx,HIGH);
  delay(2);
  digitalWrite(13,HIGH); //turn on debugging LED
  SWprint('h');  //debugging hello
  SWprint('i');
  SWprint(10); //carriage return
}

void SWprint(int data)
{
  byte mask;
  //startbit
  digitalWrite(tx,LOW);
  delayMicroseconds(bit9600Delay);
  for (mask = 0x01; mask>0; mask <<= 1) {
    if (data & mask){ // choose bit
     digitalWrite(tx,HIGH); // send 1
    }
    else{
     digitalWrite(tx,LOW); // send 0
    }
    delayMicroseconds(bit9600Delay);
  }
  //stop bit
  digitalWrite(tx, HIGH);
  delayMicroseconds(bit9600Delay);
}

int SWread()
{
  byte val = 0;
  while (digitalRead(rx));
  //wait for start bit
  if (digitalRead(rx) == LOW) {
    delayMicroseconds(halfBit9600Delay);
    for (int offset = 0; offset < 8; offset++) {
     delayMicroseconds(bit9600Delay);
     val |= digitalRead(rx) << offset;
    }
    //wait for stop bit + extra
    delayMicroseconds(bit9600Delay);
    delayMicroseconds(bit9600Delay);
    return val;
  }
}

void loop()
{
    SWval = SWread();
    serial.println(SWval);
}

preso da qui : https://www.arduino.cc/en/Tutorial/ArduinoSoftwareRS232

con questo trasmetto da hiper terminal e ricevo su un altro pc collegato alla usb dell'arduino in serial monitor.

ma quando digito ad es. 'Z' su hiper terminal ricevo ' 122 ' sul serial monitor che è il valore decimale di 'Z ' della tabella di conversione dei codici ascii.

come faccio a ricevere i caratteri corretti nel serial monitor?

SWval è una variabile di tipo byte e come tale viene inviata dalla serial.print(), ovvero sotto forma di valore numerico e non come singolo carattere ascii.
Devi dichiarare SWval come char se vuoi vedere il relativo carattere ascii.

grazie !