Apparently your microcontroller expects the serial signal with common logic voltages, mark (1) as near VDD ("high") and space (0) as near GND ("low").
The USB-to-RS232 converter inverts the voltages according to the standard RS232. This standard does not only specify pins on connectors, control signals, and more, but also the voltage levels as mark = -15 to -3V and space = +3 to +15V. By the way, it does not define the serial protocol, which is also relevant here.
You sent the characters '0' and '7', coded 0x30 = 0b00110000 and 0x37 = 0b00110111, respectively, in the asynchronous serial bit-stream protocol.
Appending some idle bits before and after the character, as your recording shows, you get the following.
Legend:
'i': idle bit (mark)
's': start bit (space)
'0' to '7': data bits (20 to 27, LSB to MSB)
'm': stop bit (mark)
'M': expected stop bit, received as space
'-': receiver waiting for a falling edge (mark-space combination) for the start bit
transmission of '0':
sent: iiiiiis01234567miiiiiiiii 1111110000011001111111111 received: 0000001111100110000000000 ------iiiiis01234567M----
transmission of '7':
sent: iiiiiis01234567miiiiiiiii 1111110111011001111111111 received: 0000001000100110000000000 ------is01234567M--------
As we can see, the receiver gets no valid stop bit, but apparently you did not program its detection.
The resulting values are clearly 0b00000110 = 0x06 and 0b01100100 = 0x64, respectively.
The recording shows the the lower voltage clamped to GND. This is commonly non-destroying because the current delivered from a RS232 driver is quite limited. However, you should avoid it.
Anyway, use a USB-to-TTL converter instead of a USB-to-RS232 converter to get a non-inverted signal. Or insert an inverter in the lines TxD and RxD, for example an RS232 level converter.