C pic MPLABX HiTech9.80

Hynek Sladky econf na centrum.cz
Čtvrtek Duben 4 14:13:48 CEST 2013


PORTCbits.RC4 nabyva hodnot 0 nebo 1.
(kopieBytu & 0b10000000) nabyva hodnot 0 nebo 0x80.

Prekladac udelal presne to, co se po nem chce :-)

Bez prerovnani bitu by to slo napsat takto:

     if (((kopie & 0x80) && RC4) || (!(kopie & 0x80) && !RC4))

Pokud by bity byly na stejnem miste (RC4), pak by slo napsat

     if ((kopie ^ PORTC) & 0x10)



Hynek



Dne 4.4.2013 13:39, Miroslav Draxal napsal(a):
>
> Dobrý den,
>
> Se v tom nějak plácám. Prosím znalce, kde dělám chybu
>
> char  kopieBytu;
>
> #define SPI_DATA_IN     PORTCbits.RC4
>
> if ((kopieBytu & 0b10000000) != SPI_DATA_IN) //SPIverifi
>
> { chyba verifikace }
>
> přeloží jako
>
> Rozbor pokud má verifikovat  (na vstupu RC4 je HI, v kopieBytu = 
> 0b10000000) mi vyhodnotí jako chybu verifikace, což je špatně.
>
> !     if ((kopieBytu & 0b10000000) != SPI_DATA_IN) //SPIverifi
>
> 0x1F48: SWAPF PORTC, W, ACCESS                                        
> (1001000 e`W=00001001)
>
> 0x1F4A: ANDLW 0x1 (W=00000001)
>
> 0x1F4C: MOVWF divisor, ACCESS (0x5D)                    (W do 0x5D)
>
> 0x1F4E: MOVF quotient, W, BANKED (0x82)                 (kopieBytu do 
> W=10000000)
>
> 0x1F50: ANDLW 0x80 (W=10000000)
>
> 0x1F52: XORWF divisor, W, ACCESS (0x5D)                  (10000000 XOR 
> 00000001 = 10000001) ????
>
> 0x1F54: BTFSS STATUS, 2, ACCESS
>
> Se mi nezdá řádek 0x1F52, ten přeci o podmínce nic neříká.
>
> Díky za reakce. Míra
>
>

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


Další informace o konferenci Hw-list