Wenn, dann so rum:
Chr(StrToInt(Edit1.Text))
Ich denke mal, dass Deine Mega8-Routine nur einzelne Byte-Werte vom UART entgegennimmt. Deine Cport-Library schickt aber Strings. Ein String besteht aus einzelnen Zeichen, die jeweils durch einen
Ascii-Code dargestellt werden. Jedes Zeichen kommt dann beim Mega8 als dessen
Ascii-Code als Bytewert an. Deshalb wird aus Deinem 'z' die 97.
Alternative 1:
Delphi-Quellcode:
var a: Integer;
begin
...
a := StrToIntDef(Edit1.Text, -1); // Wenn kein gültiger Zahlenwert, wird -1 zurückgegeben
if InRange(a, 0, 255) // Testen, ob ein Zahlenwert von 0 bis 255 eingegeben wurde
then cport.WriteStr(Chr(a)); // Wenn ja, dann senden
...
Alternative 2:
Du benutzt zur Eingabe deiner Zahl direkt eine TUpDown-Komponente, gekoppelt mit einem Edit-Feld. Dann hast Du in der Eigenschaft "Position" direkt einen Integerwert, den Du über die Eigenschaften "Min" und "Max" auf den Wertebereich 0-255 einschränken kannst.