<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <meta content="text/html; charset=ISO-8859-2"
      http-equiv="Content-Type">
  </head>
  <body text="#000000" bgcolor="#ffffff">
    <font face="Helvetica, Arial, sans-serif"></font>Mozna by se
    struktura musela dat jeste do union, ktera by umoznila bytovy
    pristup...<br>
    typedef union {<br>
      unsigned char b;<br>
      struct {<br>
        unsigned left:1;<br>
    ....<br>
    <br>
    Nize uvedeny assembler je IMHO spravne: mam ukazatel a z adresy, kam
    ukazuje, se precte byte.<br>
    <br>
    Jeste je otazka, zda toto je spravne reseni. Jestli by nebylo lepsi
    misto bitoveho pole pouzit jen bytovou promennou a sadu bitovych
    masek:<br>
    unsigned char keyPress;<br>
    #define KEY_LEFT 0x01<br>
    #define KEY_RIGHT 0x02<br>
    #define KEY_UP 0x04<br>
    #define KEY_DOWN 0x08<br>
    ...<br>
    if (keyPress &amp; keyMap) ...<br>
    <br>
    <br>
    Hynek Sladky<br>
    <br>
    <br>
    <br>
    <br>
    <br>
    Dne 29.2.2012 13:05, Miroslav Draxal napsal(a):
    <blockquote cite="mid:000301ccf6da$63417780$29c46680$@cz"
      type="cite">
      <meta http-equiv="Content-Type" content="text/html;
        charset=ISO-8859-2">
      <meta name="Generator" content="Microsoft Word 12 (filtered
        medium)">
      <style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.StylE-mailovZprvy17
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:70.85pt 70.85pt 70.85pt 70.85pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
      <div class="WordSection1">
        <p class="MsoNormal">Dobrý den,<o:p></o:p></p>
        <p class="MsoNormal">Mejme strukturu o délce 1bytu<o:p></o:p></p>
        <p class="MsoNormal">-----------------------------------------------------------------------------------<o:p></o:p></p>
        <p class="MsoNormal">typedef struct _keyPress_flag<o:p></o:p></p>
        <p class="MsoNormal">               {             unsigned
          left                                    :1;<o:p></o:p></p>
        <p class="MsoNormal">                              unsigned
          right                                 :1;<o:p></o:p></p>
        <p class="MsoNormal">                              unsigned
          up                                     :1;<o:p></o:p></p>
        <p class="MsoNormal">                              unsigned
          down                                :1;<o:p></o:p></p>
        <p class="MsoNormal">                              unsigned
          ok                                     :1;<o:p></o:p></p>
        <p class="MsoNormal">                              unsigned
          nc1                                   :1;<o:p></o:p></p>
        <p class="MsoNormal">                              unsigned
          nc2                                   :1;<o:p></o:p></p>
        <p class="MsoNormal">                              unsigned
          Press                                :1;<o:p></o:p></p>
        <p class="MsoNormal">               }_keyPress;<o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">_keyPress keyPress;<o:p></o:p></p>
        <p class="MsoNormal">uchar* pkeyPress = &amp;keyPress;   // bylo
          typedef unsigned char uchar<o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">if (!(*pkeyPress &amp; keyMap))  // o toto
          se jedná<o:p></o:p></p>
        <div style="border-width: medium medium 1pt; border-style: none
          none solid; border-color: -moz-use-text-color
          -moz-use-text-color windowtext; padding: 0cm 0cm 1pt;">
          <p class="MsoNormal" style="border: medium none; padding:
            0cm;"><o:p> </o:p></p>
        </div>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">c to přeloží jako<o:p></o:p></p>
        <p class="MsoNormal">                              uchar*
          pkeyPress = &amp;keyPress;<o:p></o:p></p>
        <p class="MsoNormal">  0802    0E0E     MOVLW 0xe<o:p></o:p></p>
        <p class="MsoNormal">  0804    0100     MOVLB 0<o:p></o:p></p>
        <p class="MsoNormal">  0806    6F1A     MOVWF 0x1a, BANKED<o:p></o:p></p>
        <p class="MsoNormal">  0808    0E00     MOVLW 0<o:p></o:p></p>
        <p class="MsoNormal">  080A    6B1B     CLRF 0x1b, BANKED<o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">                              if
          (!(*pkeyPress &amp; keyMap))<o:p></o:p></p>
        <p class="MsoNormal">  0810    C01A     MOVFF 0x1a, 0xfe9<o:p></o:p></p>
        <p class="MsoNormal">  0812    FFE9     NOP<o:p></o:p></p>
        <p class="MsoNormal">  0814    C01B     MOVFF 0x1b, 0xfea<o:p></o:p></p>
        <p class="MsoNormal">  0816    FFEA     NOP<o:p></o:p></p>
        <p class="MsoNormal">  0818    50EF     MOVF 0xfef, W, ACCESS<o:p></o:p></p>
        <p class="MsoNormal">  081A    0BEA     ANDLW 0xea<o:p></o:p></p>
        <p class="MsoNormal">  081C    E108     BNZ 0x82e<o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">Chodí to to je. Optimalizace podle mě
          zapnuté všechny. Jak to napsat v C, pokud to jde, a vyhnout se
          asm, aby si to přeložilo jako<o:p></o:p></p>
        <p class="MsoNormal">MOVF 0x0e,W,ACCESS<o:p></o:p></p>
        <p class="MsoNormal">ANDLW 0Xea<o:p></o:p></p>
        <p class="MsoNormal">BNZ 0x82e<o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">Je to přeložený v HI-TECH C PRO for the
          PIC18 MCU Family  V9.63PL3 PRO<o:p></o:p></p>
        <p class="MsoNormal">Díky Míra<o:p></o:p></p>
      </div>
      <br>
    </blockquote>
  </body>
</html>