<!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 & 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 = &keyPress; // bylo
typedef unsigned char uchar<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">if (!(*pkeyPress & 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 = &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 & 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>