"I ASCII" är oegentligt. ASCII handlar om en specifik tolkning av 8-bitars bytes.
När man skriver värden som du gör (i detta fall angivet i hex) så är "i ASCII" lite fel.
Det är inte heller så att texten "abc" behöver enligt just ASCII, det kan lika gärna vara
t.ex EBCDIC, vilket är ett alternativt sätt att koda text som används av t.ex IBM.
Så glöm allt vad som har med ASCII att göra !
'> Så behöver jag skriva kod för att plocka isär de bitarna till binärt exempelvis och använda värdena därifrån,
Nej! Du skriver helt enkelt dina värden till UART'en. Hur du *anger* dina värden beror helt på
den miljö som du programmar i och applikationen. T.ex så ger följande 4 delar assembler kod till PIC
exakt samma slutresultat:
Kod: Markera allt
movlw b'01000001' ; binärt.
movwf TXREG
...
movlw h'41' ; hex, samma sak som 0x41...
movwf TXREG
...
movlw d'65' ; decimalt.
movwf TXREG
...
movlw a'A' ; ASCII.
movwf TXREG
...> Om jag istället skickar det rent av som bytes,...
OK. En byte kan ju ha alla vänden melan 0 och 255 (decimalt). Helt OK.
> så behöver mottagarprogrammet i processorn och på datorn kunna tolka det rätt
Ja, om det behöver tolkas alls. En normal terminal kommer att tolka det som ASCII.
> och inte omvandla det automatiskt till ASCII värdet av den mottagna byte'n?
Det sker aldrig någon "omvandling". Värdet 0x41 är alltid just det. Om det skickas
till en en terminal som jobber med ASCII så kommer den att *anta* att man ville
att ett "A" skulle visas, så då gör den det. Men det sker aldrig någon omvandling.
Du kan fortfarande inte riktigt skilja värderna i sig från *presentationen* eller
*tolkningen* av värderna. Det är ju två helt skillda saker. För en terminal
betyder t.ex 0x41 just bokstaven "A", men för något annat kan det betyda
"öppna ventil 1", och då har det ju ingenting alls med ASCII att göra...
> Så när jag egentligen har skickat en byte som jag tror ska komma fram som en byte,
> så har jag istället fått ASCII värdet och då blivit förvirrad
Nej. Du har fått exakt samma sak! Det finns inget "istället fått" här. Igen, håll isär
datat i sig från presentationen. Terminalen har fått exakt det du skickade.
> Någon idé om något terminalprogram för windows som klarar av att visa inkommande
> bytes och inte automatiskt omvandlar till ASCII kod? Har kört lite med Putty men har
> inte listat ut ifall det går att göra där.
Det finns några terminalemulatorer som kan ställas om till "hex-dump", men det är inte så vanligt.
Men det spelar inte så stor roll, ser du ett "A" på skärmen så vet du ju värdet...


