Jag har strul när jag ska dela en 16bitars variabel till 2st 8-bitars. Den låga byten går bra men den höga blir bara 0x00. Jag programmerar en PIC och använder en värdelös kompilator som heter CC5X, men det borde (tm) inte vara fel på den. Här har jag gjort ett exempel som visar hur jag gått tillväga. Jag har testat lite olika sätt och försökt ta med alla idiotnivåer men ändå så strular det. (Låga byten har jag tagit bort). byte är unsigned char och word16 är unsigned int. Kan du deklarera en 8 bitars variabel och sedan sätta adressen till samma som 16 bitars variabeln? tjaa.. Det kanske går på nåt sätt, men kan ju göra det i assempler så det går nog att lösa, men det ska man ju inte behöva göra. Det måste gå att fixa direkt i C på nåt sätt.. På det sättet jag gjort det på SKA gå men nåt går fel. HAHA!! jag löste det... Det visade sig att int var bara 8 bitar, jag var helt övertygad om att det var 16bitar. Men se så fel jag hade..ändrade int till long så gick det bra. Kul att jag suttit med det i 2 arbetsdagar bara :) >Det visade sig att int var bara 8 bitar, jag var helt övertygad om att det var 16bitar. Men se så fel jag Dela en 16bitars variabel till två 8-bitars..
byte test;
word16 test16;
test16 = 0xffff; //FFFF
test16 &= 0xff00; //Ska inte behövas
test16 = test16 >>8; //Har även testat att dela med 256
test = (byte)test16 & 0x00ff; //Ska inte behövas
test = (byte)test16;
while(!TRMT); //Väntar på att USARTen ska bli klar
TXREG = test; //Skicka det 8bitars talet på USARTen till PCn.
Har jag gjort nåt fel här?? Jag har testat massa olika varianter men jag får det inte att funka. Snälla hjälp mig!
/RobertSv: Dela en 16bitars variabel till två 8-bitars..
Har aldrig programmerat PIC.
Sedan skulle det ju bara vara att flytta pekaren 8 bitar framåt.Sv:Dela en 16bitars variabel till två 8-bitars..
Sv: Dela en 16bitars variabel till två 8-bitars..
Sv:Dela en 16bitars variabel till två 8-bitars..
>hade..
Du har rätt så tillsvida att C standarden garanterar minst 16 bitar för int så vitt jag vet (äldre versioner tor jag inte hade någon sådan garanti dock). CC5X är så vitt jag vet en C kompilator men vet inte hur den följer standarden. Så i princip var ditt antagande om bitar rätt :)