Blir lite osäker på vad du menar.
Kod: Markera allt
void SendChar(uns8 c)
{
while(!TXIF);
TXREG = c;
}
Fungerar inte skriver du men det som fungerar, ser det ut som följer?
Kod: Markera allt
void SendChar(uns8 c)
{
while(!TXIF);
TXREG = 'a';
}
Om det är så kan det vara för att den uppfattar c på fel sätt (har aldrig använd CC8) och du kan testa:
Kod: Markera allt
void SendChar(char c)
{
while(!TXIF);
TXREG = c;
}
Eller kanske:
void SendChar(unsigned short c)
{
while(!TXIF);
TXREG = c;
}
Det sista sättet deklarerar c till samma typ som TXREG. Jag skulle tro att compilern "tror" att värdeskillnaden gör att det är ett 16-bit värde som ska skrivas ut och då skickar den bara inledande 0x00.
EDIT: kom på ett mer tydligt sätt kanske:
Kod: Markera allt
void SendChar(char c)
{
while(!TXIF);
TXREG = (unsigned short)c;
}
Detta cast'ar c till att vara rätt typ när den skickas till TXREG men "utåt" är det en char.