c + pic

Miroslav Draxal evik na volny.cz
Středa Únor 29 13:05:10 CET 2012


Dobrý den,

Mejme strukturu o délce 1bytu

----------------------------------------------------------------------------
-------

typedef struct _keyPress_flag

               {             unsigned left
:1;

                              unsigned right
:1;

                              unsigned up
:1;

                              unsigned down
:1;

                              unsigned ok
:1;

                              unsigned nc1
:1;

                              unsigned nc2
:1;

                              unsigned Press
:1;

               }_keyPress;

 

_keyPress keyPress;

uchar* pkeyPress = &keyPress;   // bylo typedef unsigned char uchar

 

if (!(*pkeyPress & keyMap))  // o toto se jedná

 

 

c to přeloží jako

                              uchar* pkeyPress = &keyPress;

  0802    0E0E     MOVLW 0xe

  0804    0100     MOVLB 0

  0806    6F1A     MOVWF 0x1a, BANKED

  0808    0E00     MOVLW 0

  080A    6B1B     CLRF 0x1b, BANKED

 

                              if (!(*pkeyPress & keyMap))

  0810    C01A     MOVFF 0x1a, 0xfe9

  0812    FFE9     NOP

  0814    C01B     MOVFF 0x1b, 0xfea

  0816    FFEA     NOP

  0818    50EF     MOVF 0xfef, W, ACCESS

  081A    0BEA     ANDLW 0xea

  081C    E108     BNZ 0x82e

 

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

MOVF 0x0e,W,ACCESS

ANDLW 0Xea

BNZ 0x82e

 

Je to přeložený v HI-TECH C PRO for the PIC18 MCU Family  V9.63PL3 PRO

Díky Míra

------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20120229/0c54d099/attachment.htm>


Další informace o konferenci Hw-list