Anonymní profil visk – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil visk – Programujte.comAnonymní profil visk – Programujte.com

 

Příspěvky odeslané z IP adresy 188.246.111.–

C / C++ › Převod s desítové do dvojkov…
28. 2. 2017   #215121

#27 hlucheucho


Paráda jsi  jednička!!!! škoda že tady není smajlík který by vystihoval.

Tys mě dokopal ke zdaru, ještě aby to fungovalo i fyzickém švábu nejen v simulátoru.Až budu mít chvíli tak to napálím do MCu používám k tomu MPLAB IDE v8.63 s klonem SCPD 2 viz příloha

Připojen obrázek.

S takovým znakem jako je "%" jsem se ještě nesetkal  To výš  v Céčku jsem nebyl vychováván    

C / C++ › Převod s desítové do dvojkov…
28. 2. 2017   #215118

#25 hlucheucho
Jaká je správná syntaxe v této verzi Céčka? potřeboval bych příklad na 3 cifry : stovky, desítky a jednotky  díky moc

C / C++ › Převod s desítové do dvojkov…
28. 2. 2017   #215116

#23 hlucheucho
Jen mi uniká, proč to mělo být dvojkové číslo jako řetězec.

To já mám jako pomocnou berličku abych věděl co s toho čidla jeze.

Možná budu ti připadat jako totální trubka ale jak získám zbytek po dělení  

unsigned char temp_d = temp /10 
uart1_write(temp_d+48);

na terminálu se zobrazí správná desítková hodnota ale nevím jak získat jednotky díky

C / C++ › Převod s desítové do dvojkov…
27. 2. 2017   #215100

#21 hlucheucho
Domněnky: UART1_Write_text slouží k odeslání řetězce a UART1_Write k odeslání znaku. Nebo je to jinak?

Je tomu tak 

hex 0x30 = dec 48

pak pokud trváš na hexadecimálním vyjádření

Já bych potřeboval aby v terminálu byla zobrazena teplota v desítkové soustavě ???

Připojen obrázek.

C / C++ › Převod s desítové do dvojkov…
27. 2. 2017   #215094

#19 KIIV
Pořád nemohu s tím hnout já když  

UART1_Write_text(80);

tak se v terminálu nic neukáže a když dám

UART1_Write(80);


tak se zobrazí "P" čili znak v ASCII Chart který má hodnotu 80 .

Zkoušel jsem nějak rozdělit to 8 bitové číslo na dvě půlky nějak takto

temp/8 +48 

abych dosáhl v tabulce ASCII Chart požadovaný znak ,jde to nějak divně když například na čidle nastavuji teplotu v rozmezí 46..56 se mi zobrazí v terminálu 5 je tam nějaká chyba díky za pomoc

C / C++ › Převod s desítové do dvojkov…
26. 2. 2017   #215079

#17 KIIV

Pomohlo proměnnou temp vydělit 16 a správná teplota v binárním zobrazením byla na světě!! díky za radu. 
Ale teď jsem narazil asi na tvrdý oříšek jak zobrazit hodnotu proměnné unsigned int temp  ve virtuálním terminálu potažmo v PC terminálu ? funkci sprintl na převod temp na string nemohu z důvodu asi nedostatku paměti v PIC16F628A použít nebo s funkcí sprintl neumím pracovat uf jak na to?   

C / C++ › Převod s desítové do dvojkov…
25. 2. 2017   #215051

#15 KIIV
Pomohlo to velice moc díky.Je mi stydno ale potřebuji další věc jak vypreparovat s proměnné temp hodnotu teploty? čili  první a poslední 4 bity zahodit !!   ještě jednou díky 

C / C++ › Převod s desítové do dvojkov…
24. 2. 2017   #215042

#12 KIIV
Já uznávám že jsem ve štábní kultuře  bordelář. Jinak  musel jsem  deklaraci proměnné temp přesunout pod deklaraci   char str[17]; bohužel to funguje jak před tím při nastavení teploty v simulátoru jsou pouze  změněny 4 vyšší bity nižšího byte  "xxxxxxxx1111xxxx" díky     
 

C / C++ › Převod s desítové do dvojkov…
24. 2. 2017   #215034

Toto mám postaveno na nepájivém  poli  na displeji mi to ukazuje teplotu  dobře .Tak jsem si chtěl upravit tak že vynechám LCD displej a při dosažené určité teploty zazní alarm a protože jsem potřeboval při úpravě vypisovat určité proměnné tak jsem dostal nápad že to zkusím přes virtualní  terminál a od toho nápadu je jen krok zobrazovat teplotu pomoci terminálu v PC převodník TLL na RS-232 mám v PC seriál mám.Ta úprava se mi pořád nedaří ,pokud vím tak to čidlo DS18b20 dává 16 bitovou hodnotu tak že první horní 4 bity je znaménko kladná přestavuje 1111 dalších 8 bitů je vlastní teplota a poslední 4 bity je 0.5,0.005 Ten převod je jen abych si mohl udělat obrázek co s toho čidla vlastně leze bohužel se ukázalo že něco je špatně protože když nastavuji teplotu na čidle tak se mění jen horní 4 bity dolního byte   

// LCD module connections
sbit LCD_RS at RB4_bit;
sbit LCD_EN at RB5_bit;
sbit LCD_D4 at RB0_bit;
sbit LCD_D5 at RB1_bit;
sbit LCD_D6 at RB2_bit;
sbit LCD_D7 at RB3_bit;

sbit LCD_RS_Direction at TRISB4_bit;
sbit LCD_EN_Direction at TRISB5_bit;
sbit LCD_D4_Direction at TRISB0_bit;
sbit LCD_D5_Direction at TRISB1_bit;
sbit LCD_D6_Direction at TRISB2_bit;
sbit LCD_D7_Direction at TRISB3_bit;
// End LCD module connections

//  Set TEMP_RESOLUTION to the corresponding resolution of used DS18x20 sensor:
//  18S20: 9  (default setting; can be 9,10,11,or 12)
//  18B20: 12
const unsigned short TEMP_RESOLUTION = 9;//9;
char *text = "000.0000";
unsigned temp,tempi;    // -původní deklarace
//unsigned int temp;
void Display_Temperature(unsigned int temp2write) {
  const unsigned short RES_SHIFT = TEMP_RESOLUTION - 8;
  char temp_whole;
  unsigned int temp_fraction;
  unsigned char Znak;
  Znak = 1;    //Hodnota 1 při kladné teplotě

  // Check if temperature is negative
  if (temp2write & 0x8000)
    {
     Znak = 0;  //Hodnota nula při záporné teplotě
     temp2write = ~temp2write + 1;
    }

  // Extract temp_whole
  temp_whole = temp2write >> RES_SHIFT ;

  // Convert temp_whole to characters
  if (temp_whole/100)
     text[0] = temp_whole/100  + 48;
  else
     text[0] = ' ';

  text[1] = (temp_whole/10)%10 + 48;             // Extract tens digit
 //Potlačení zobrazení zbytečných nul
  if ((text[0]) == ' ')
    {
     if ((text[1]) == 48)
      {
        text[1] = ' ';
      }
    }
 //Zobrazení záporného znaménka
  if (Znak == 0)
    {
      text[0] = '-';
    }

  text[2] =  temp_whole%10 + 48;             // Extract ones digit

  // Extract temp_fraction and convert it to unsigned int
  temp_fraction  = temp2write << (4-RES_SHIFT);
  temp_fraction &= 0x0F;
  temp_fraction *= 625;

  // Convert temp_fraction to characters
  text[4] =  temp_fraction/1000    + 48;         // Extract thousands digit
  text[5] = (temp_fraction/100)%10 + 48;         // Extract hundreds digit
  text[6] = (temp_fraction/10)%10  + 48;         // Extract tens digit
  text[7] =  temp_fraction%10      + 48;         // Extract ones digit

  // Print temperature on LCD
  Lcd_Out(2, 5, text);
}

display(unsigned int temp2write) {
unsigned int i,x;
 x=0;
 //temp << 1;
 for ( i = 16; i > 0; i--) {
 //Lcd_Chr(1,x++,'0');
 if((temp & (1<< i)) == 0)Lcd_Chr(1,x++,'0'); else Lcd_Chr(1,x++, '1');
 }
 }


void main() {
  //ANSEL  = 0;                                    // Configure AN pins as digital I/O
  //ANSELH = 0;
  //C1ON_bit = 0;                                  // Disable comparators
  //C2ON_bit = 0;
  TRISA1_bit = 1;                                 //uprava tlacitko
  CMCON = 0x07;
  Lcd_Init();                                    // Initialize LCD
  Lcd_Cmd(_LCD_CLEAR);                           // Clear LCD
  Lcd_Cmd(_LCD_CURSOR_OFF);                      // Turn cursor off
  Lcd_Out(1, 1, " Temperature:   ");
  // Print degree character, 'C' for Centigrades
  Sound_Init(&PORTA, 0);
  Sound_Play(980, 1000);
  Lcd_Chr(2,13,223);                             // Different LCD displays have different char code for degree
                                                 // If you see greek alpha letter try typing 178 instead of 223

  Lcd_Chr(2,14,'C');

  //--- Main loop
  do {
    //--- Perform temperature reading
    Ow_Reset(&PORTA, 2);                         // Onewire reset signal
    Ow_Write(&PORTA, 2, 0xCC);                   // Issue command SKIP_ROM
    Ow_Write(&PORTA, 2, 0x44);                   // Issue command CONVERT_T
    Delay_ms(1000);//Delay_us(10000);             puvodne 120

    Ow_Reset(&PORTA, 2);
    Ow_Write(&PORTA, 2, 0xCC);                   // Issue command SKIP_ROM
    Ow_Write(&PORTA, 2, 0xBE);                   // Issue command READ_SCRATCHPAD

    temp =  Ow_Read(&PORTA, 2);
    tempi = temp;
    temp = (Ow_Read(&PORTA, 2) << 8) + temp;

    //--- Format and display result on Lcd
    if (Button(&PORTA, 1, 1, 1)){
    display(tempi);
    }
    Display_Temperature(temp);
    Delay_ms(500);
  } while (1);

moje úprava je tato  

 unsigned int temp,tempi,prevod;
     unsigned int cislo;
unsigned char b;
char s[17];
int i;

  long de;
 unsigned  ahoj,d;
  char   szNumber[4];
  char ch[22];
   int mask;
   unsigned char str[16];
 void getBin(unsigned int num, unsigned int *str)
{
  *(str) = '\0';
   mask = 0x10 << 1;
  while(mask >>= 1)
    *str++ = !!(mask & num) + '0';
}
  void byte_to_bin(unsigned int a, unsigned int*str)
{
   unsigned  int b;

   for (b = 0b10000000; b > 0; b >>= 1) {
      *str++ = a & b ? '1' : '0';
   }
   *str = '\0';
}
void unsigned slovo()
{
unsigned int cislo = 65535;
unsigned char ba;
char s[17];
int i;

ba = cislo >> 8;  //ziskam MSB
for(i=0; i<8; i++)
{
   if(ba&0x80)  //bitovy soucin ziska bit MSb
     s[i]='1'; //na pozici MSb je 1
   else
     s[i]='0'; //na pozici MSb je 0
   b = b<<1;   //na pozici MSb vysunu sousedni bit a celou cinnost opakuji
}

ba = cislo & 0x0f;   //ziskam LSB
for(i=8; i<16; i++)
{
   if(ba&0x80)  //bitovy soucin ziska bit MSb
     s[i]='1'; //na pozici MSb je 1
   else
     s[i]='0'; //na pozici MSb je 0
   b = b<<1;   //na pozici MSb vysunu sousedni bit a celou cinnost opakuji
}
s[17] = 0;  //ukoncim retezec
 }
    void dd(unsigned char a)
{

    do
    {
        if((a & (1<<b))!= 0)
        {
        UART1_Write_text("1");
        }
        else
        {
        UART1_Write_text("0");
        }
    }while(b-- != 0);
    }
    
void main() {

  //ANSEL  = 0;                                    // Configure AN pins as digital I/O
  //ANSELH = 0;
  //C1ON_bit = 0;                                  // Disable comparators
  //C2ON_bit = 0;
  TRISA1_bit = 1;                                 //uprava tlacitko
  CMCON = 0x07;
  //Lcd_Init();                                    // Initialize LCD
  //Lcd_Cmd(_LCD_CLEAR);                           // Clear LCD
  //Lcd_Cmd(_LCD_CURSOR_OFF);                      // Turn cursor off
  //Lcd_Out(1, 1, " Temperature:   ");
  // Print degree character, 'C' for Centigrades
 Sound_Init(&PORTA, 0);
 Sound_Play(500, 1000);
  //Lcd_Chr(2,13,223);                             // Different LCD displays have different char code for degree
   UART1_Init(9600);                                              // If you see greek alpha letter try typing 178 instead of 223
    //ahoj = 100 ;
  //--- Main loop
  do {
    //--- Perform temperature reading
    Ow_Reset(&PORTA, 2);                         // Onewire reset signal
    Ow_Write(&PORTA, 2, 0xCC);                   // Issue command SKIP_ROM
    Ow_Write(&PORTA, 2, 0x44);                   // Issue command CONVERT_T
    Delay_ms(1000);//Delay_us(10000);             puvodne 120

    Ow_Reset(&PORTA, 2);
    Ow_Write(&PORTA, 2, 0xCC);                   // Issue command SKIP_ROM
    Ow_Write(&PORTA, 2, 0xBE);                   // Issue command READ_SCRATCHPAD

    temp =  Ow_Read(&PORTA, 2);
    prevod =temp;
    cislo = temp;
b = cislo>>8;  //ziskam MSB
for(i=0; i<8; i++)
{
   if(b&0x80)  //bitovy soucin ziska bit MSb
     s[i]='1'; //na pozici MSb je 1
   else
     s[i]='0'; //na pozici MSb je 0
   b = b<<1;   //na pozici MSb vysunu sousedni bit a celou cinnost opakuji
}

b = cislo & 0xff;   //ziskam LSB
for(i=8; i<16; i++)
{
   if(b&0x80)  //bitovy soucin ziska bit MSb
     s[i]='1'; //na pozici MSb je 1
   else
     s[i]='0'; //na pozici MSb je 0
   b = b<<1;   //na pozici MSb vysunu sousedni bit a celou cinnost opakuji
}
s[17] = 0;  //ukoncim retezec
    de= 256;
    getBin(65535,str);
   // byte_to_bin(65535,ch);
    //tempi = temp;
    //temp = (Ow_Read(&PORTA, 2) << 8) + temp;
    ahoj = 10 * temp +1000;
   // If data is ready, read it:
    // If data is ready, read it:
    //tempi =temp;
    //sprintl(szNumber, "%i", tempi);
    //tempi= temp / 16;
     d = strlen(ch);
    bytetostr(ch ,szNumber);
    //inttostr(ahoj,szNumber);
    UART1_Write_text(s);
     //dd(temp);
     UART1_Write_text("\n\r");
    //UART1_Read_Text(temp);
    //--- Format and display result on Lcd
      //Sound_Play(980,1000);
    if (temp == 160) {
     Sound_Play(980,1000);
     }
    // if (temp == 128){
     //Sound_Play(100,1000);
     //}
    Delay_ms(500);
  } while (1);
  }
C / C++ › Převod s desítové do dvojkov…
24. 2. 2017   #215027

#7 hlucheucho
chyba ostraněna  

b = cislo & 0x0f;   //ziskam LSB
opraveno 
b = cislo & 0xff;   //ziskam LSB
C / C++ › Převod s desítové do dvojkov…
24. 2. 2017   #215025

   

Připojen obrázek.


je to na dobré cestě ale je  tam někde chyba    a ještě bych potřeboval udělat to jako funkci do které bych vložil číslo a výstup by byl něco jako  

UART1_Write_text(prevod)

přiznávám že v Céčku hodně plavu díky za schovývavost

C / C++ › Převod s desítové do dvojkov…
24. 2. 2017   #215020

#4 hlucheucho
Ale jakou funkcí ? potřeboval byh názorný příklad .předem dík 

C / C++ › Převod s desítové do dvojkov…
24. 2. 2017   #215018

#2 Jerry
Ale já jsem omezený architekturou PIC procesoru díky

C / C++ › Převod s desítové do dvojkov…
24. 2. 2017   #215015

Zdravím

Potřebuji číslo 65535 převést na "1111111111111111" v architektuře pro mikroC PRO for PIC čili 16 bitové slovo,.U 8 bitového byte- číslo 255 ="11111111" mám takovou funkci  ta   mi funguje 

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); 

Druhá věc potřeboval bych v 16 bitovém slově zamaskovat první a poslední 4 bity nebo jinými slovy vybrat 8 bitů co je mezi nimi názorně  "1111" - toto zamaskovat  "11111111"- toto potřebuji "1111" -toto zamaskovat  díky za pomoc

C / C++ › C# záznam mirofonu do souboru
2. 1. 2017   #214342

#4 BDS
to bude tím, že se tou radou neřídíš:

tohle není "Microsoft.VisualBasic", ale "Microsoft VisualBasic for App.."

Microsoft.VisualBasic najdeš pod Assemblies->Framework

(poprvé jsem to nenapsal úplně podrobně, neměl jsem po ruce VS a věřil jsem, že to najdeš)

#4 BDS
   díky velice pomohlo to už to funguje podle mých přestav  škoda že tady není panáček který pleská 

C / C++ › C# záznam mirofonu do souboru
31. 12. 2016   #214326

#6 visk
Fakt na tento styl fóra nejsem zvyklý

pochopitelně tuto stánku znám https://naudio.codeplex.com/ ale mě při stahování knihovny napíše že je tam virus viz příloha

Připojen obrázek.


a ani nevím jak ji připojit do visual studia 2015 comunity

C / C++ › C# záznam mirofonu do souboru
31. 12. 2016   #214325

#5 Jerry

NAUDIO NET Library

https://naudio.codeplex.com/

to je pro mne něco nového já jsem samouk a ještě k tomu neumím skoro vůbec  anglicky

a ještě prominte že na tento styl fóra nejsem zvyklý  

C / C++ › C# záznam mirofonu do souboru
29. 12. 2016   #214283
C / C++ › C# záznam mirofonu do souboru
29. 12. 2016   #214277
C / C++ › Vložení knihoven do Visual S…
26. 12. 2016   #214241

Jak přidat do visual studia 2015 comunity  knihovnu NAudio 1.7.3 díky

visk
C / C++ › Vložení knihoven do Visual S…
26. 12. 2016   #214240

Ahoj

Jak přidat do visual studia 2015 comunity  knihovnu NAudio 1.7.3 díky

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý