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