HiTech 9.80 přístup ke struktuře z bloku #asm

Dobrý den,
Očesáno pouze na to nejnutnější:
Mějme

typedef union {
struct StrukturaRead {
char PoradiBitu; // kolikáty bit se přijímá
char;
char;
char;
char;
char;
} Read;
} DS18B20_status_;

DS18B20_status_ DS18B20_status

Při pokusu přístupu
#asm
DECFSZ _DS18B20_status.Read.PoradiBitu, f;
#endasm

To hodí při překladu chybu
…/DS18B20.c:68: error: lexical error
…/DS18B20.c:69: error: syntax error
C:\Users\Colombo\AppData\Local\Temp\ssno.:10494: error: lexical error

Nemáte tušení, jak k té struktuře přistoupit z bloku ASM?

Míra

K strukture asi nijako, ale malo by sa dat zistit kde sa nachadza hodnota v ram,tj adresa a odial vycitavat v asm pomocou priamej adresacie. Naco je todobre ?

dobré je to k tomu. komunikuji s ds18b20 v přerušení (časování sběrnice od TMR) Mám union a v něm struktury. Kvůli rychlému vypočtení CRC to zmáknu v ASM. no a proto přístup z asm do struct. tohle je řešení

Tak nic kloudného jsem nevyggoglil, nakonec jsem to dal takhle a chodí to, i když to košer tedy není. Ale chodí to.

typedef union {

struct {
int StrukturaPoveluAll;
_VycetPoveluDS18B20 Povel;
char Teplota_LSB;
char Teplota_MSB;
char;
};
struct StrukturaRead {
char PoradiBitu; // kolikáty bit se přijímá
char CRC;
_VycetPoveluDS18B20; //Povel
char; //TeplotaLSB;
char; //Teplota_MSB
char Work; // Work
} Read;

} xDS18B20_status;
//--------------------------------------------------------------------------------
xDS18B20_status DS18B20_status;
//--------------------------------------------------------------------------------

void DS18B20_CRCcheck ()
{
DS18B20_status.Read.PoradiBitu = 8; //pocet pripoctenych bitu 8
#asm

PoradiBitu 	set _DS18B20_status;
CRC 		set _DS18B20_status + 1;
Work 	set _DS18B20_status + 5;

vypcr0:
RRCF Work, f; //LSB do C
BC vypcr3;
BTFSC CRC, 7;
goto vypcr4; //CRC (7) = 1, C = 0
vypcr1:
BCF (STATUS), 0; //CRC (7).XOR.C = 0
RLCF CRC, f;
vypcr2:
DECFSZ PoradiBitu, f;
GOTO vypcr0;
RETURN;
vypcr3:
BTFSC CRC, 7;
GOTO vypcr1; //CRC (7).XOR.C = 0
vypcr4:
MOVLW 18h; //CRC (7).XOR.C = 1
XORWF CRC, f; //CRC.XOR.18h
BSF (STATUS), 0;
RLCF CRC, f;
GOTO vypcr2;
#endasm
}