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? :roll:

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

Kód: Vybrat vše

 unsigned short    
a nepomáhá :oops: :oops:

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 !!!!