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

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
}