Stránka 2 z 5
Napsal: 19 úno 2017, 15:39
od lesana87
Psal jsi, že to chceš zobrazit v terminálu, máš rovnou napsat, že chceš string, se kterým budeš dál pracovat. Když se neumíš pořádně vyžvejknout, co potřebuješ, nemůžeš čekat hned nějaké geniální odpovědi.
Jazyk C neumí přímo pracovat s řetězcema, takže "to chce naucit se " + "C" tam fakt nejde, ale v knihovně string.h existuje funkce strcat().
Nicméně proč to dělat složitě, když to jde jednoduše:
Kód: Vybrat vše
void byte_to_bin(unsigned char a, char *str)
{
char b;
for (b = 0b10000000; b > 0; b >>= 1) {
*str++ = a & b ? '1' : '0';
}
str = '\0';
}
void main(void)
{
unsigned char a;
char str[9];
a = 253;
byte_to_bin(a, str);
printf(str);
}
Napsal: 19 úno 2017, 17:47
od AB1
Kód: Vybrat vše
řetěz =řetěz + "1"
tak mně to nevezme kde dělám chybu?
To je zápis v Basicu.
Když chceš dělat s řetězci v C, tak napiš do guglu "řetězcové funkce v C"
Dostaneš třeba toto
http://www.sallyx.org/sally/c/c19.php Kód: Vybrat vše
#include <string.h>
char retez[10];
...
strcat(retez, "1");
Napsal: 19 úno 2017, 19:51
od markoni
lesana87 píše:Nicméně proč to dělat složitě, když to jde jednoduše:
Kód: Vybrat vše
void byte_to_bin(unsigned char a, char *str)
{
char b;
for (b = 0b10000000; b > 0; b >>= 1) {
*str++ = a & b ? '1' : '0';
}
str = '\0';
}
void main(void)
{
unsigned char a;
char str[9];
a = 253;
byte_to_bin(a, str);
printf(str);
}
toto jsem potřeboval ale jak ještě to rozšířit na 16 bitů ? protože s čidla DS18b20 leze 16 bitů. díky
Napsal: 19 úno 2017, 20:46
od lesana87
A nudli si utřeš sám?

Napsal: 22 úno 2017, 15:57
od markoni
Nepomůžeš mi kde ještě dělám chybu ? předem díky
Kód: Vybrat vše
void byte_to_bin(unsigned short a, unsigned short *str)
{
unsigned short b;
for (b = 0b10000000; b > 0; b >>= 1) {
*str++ = a & b ? '1' : '0';
}
*str = '\0';
}
už jsem našel online emulátor PMD 85 v jeho basicu G mě to funguje
Napsal: 22 úno 2017, 16:12
od rnbw
Viac by sa ti hodil kompilator C.
Napsal: 22 úno 2017, 21:11
od lesana87
A taky nějaká knížka o C, třeba The C Programming Language od Kernighana a Ritchieho.
Napsal: 23 úno 2017, 14:20
od petrfilipi
Mrkni sem:
http://stackoverflow.com/questions/7911 ... -to-binary
Co se týče 1820 (nevím, zdali je to stejné i pro 18B20, 18S20, ...), tak na to mají v MikroC přímo příklad:
https://download.mikroe.com/documents/c ... ibrary.htm
A pak taky mají knihovnu řešení tady:
https://libstock.mikroe.com/.
Nějaké příklady na 1820 i 18B20 tam jsou.
Petr
Napsal: 23 úno 2017, 16:52
od markoni
Díky za typy ale pořád nemohu dosáhnout aby ve virtuálním terminálu bylo zobrazeno "1111111111111111" reprezentující číslo 65535,číslo 255 se zobrazuje "11111111" kde může být chyba? díky
Napsal: 23 úno 2017, 19:59
od Atlan
Zeby preto ze char je 8bitovy.
Napsal: 23 úno 2017, 20:41
od markoni
Zkoušel jsem i
a nepomáhá

Napsal: 23 úno 2017, 20:47
od lesana87
Jestli to nebude tím, že unsigned short je taky 8 bitů.
Napsal: 23 úno 2017, 20:58
od markoni
Jé já myslel že 16 bitů největší hodnota 65535 dec ,tak jaký datový typ je potřeba?díky
Napsal: 23 úno 2017, 21:00
od lesana87
Napsal: 23 úno 2017, 21:14
od markoni
Tak to mě je to už jasné ,v C plaťí každá ves jiný pes !!!!