PIC-Basic hjärnsläpp.
PIC-Basic hjärnsläpp.
Pic-basic problem, ska programmera en pic-16F628 att läsa en tolvbitars buss sända det till en annan pic, ska omvandla det till ett decimalt tal och visa det på en lcd.
Läsning och överföring till pic två fungerar men jag kan inte få ett värde över 128 decimalt, dom över blir bara nollor.
Läsning och överföring till pic två fungerar men jag kan inte få ett värde över 128 decimalt, dom över blir bara nollor.
Det låter som du läser enbart ett 8-bitars värde. Varje port på PIC:en kan bara leverera 8-bitar. iomed att du skall läsa 12-bitar så antar jag att du läser de s.k. mest signifikanta bitarna från en port och de minst signifikanta bitarna från en annan.
För att sedan slåihop dessa måste du maska ut de mest signifikanta bitarna i den "höga" byten (ifall du har "skräp" på de bitar du ej använder) och rotera upp dem 8 ggr för att sedan lägga ihop dem med den "låga" byten till en 16-bitars variabel.
Vet inte hur PIC-Basic funkar men i C skulle du gjort något liknande (OBS! Psuedo C kod):
Kan ju vara nåt annat fel också.
mvh Mats
För att sedan slåihop dessa måste du maska ut de mest signifikanta bitarna i den "höga" byten (ifall du har "skräp" på de bitar du ej använder) och rotera upp dem 8 ggr för att sedan lägga ihop dem med den "låga" byten till en 16-bitars variabel.
Vet inte hur PIC-Basic funkar men i C skulle du gjort något liknande (OBS! Psuedo C kod):
Kod: Markera allt
unsigned char LowByte; /* Osignerad 8-bitars variabel */
unsigned char HiByte; /* Osignerad 8-bitars variabel */
int Result; /* Integer (minst 16-bitar) resultat */
LowByte = PORTA /* Hämta alla låga 8 bitar från port a */
HiByte = PORTB /* Hämta alla höga bitar från port b*/
HiByte = HiByte & 15; /* Maska ut de relevanta 4 lägsta bitarna */
Result = (HiByte << 8) + LowByte; /* Rotera upp HiByte och addera LowByte */
printf("Värdet är %d", Result);
mvh Mats
Senast redigerad av Kaggen 25 september 2005, 17:28:14, redigerad totalt 2 gånger.
> "en tolvbitars buss"
Vadå "tolvbitars buss" ???
Förtydliga !
> "Läsning och överföring till pic två fungerar men jag kan inte få ett värde över 128 decimalt, dom över blir bara nollor."
Förtydliga !
*Var* är det du inte kan få ett värde över 128 decimalt ??
I vilken operation ?
Och vadå "dom över blir bara nollor." ? Visa exempel !
Vadå "tolvbitars buss" ???
Förtydliga !
> "Läsning och överföring till pic två fungerar men jag kan inte få ett värde över 128 decimalt, dom över blir bara nollor."
Förtydliga !
*Var* är det du inte kan få ett värde över 128 decimalt ??
I vilken operation ?
Och vadå "dom över blir bara nollor." ? Visa exempel !