Kod: Markera allt
char id;
bit adapter_identified;
bit adapter_unknown;
void validate_adc(void) {
unsigned int ADRES = (ADRESH << 8) | ADRESL;
adapter_identified = 0;
adapter_unknown = 0;
if (ADRES >= VALUE_BARRIER)
id = ID_BARRIER;
else if (ADRES >= VALUE_REEF)
id = ID_REEF;
... massa fler else if ...
else
id = 0;
}
Om jag lägger till följande i slutet av ovanstående funktion:
Kod: Markera allt
if (id > 0)
adapter_identified = 1;
else
adapter_unknown = 1;
Kod: Markera allt
00EC 0875 MOVF id, W
00ED 1903 BTFSC STATUS, 0x2
00EE 28F1 GOTO 0xF1
00EF 14F4 BSF adapter_identified, 0x1
00F0 0008 RETURN
00F1 1574 BSF adapter_identified, 0x2
00F2 0008 RETURN
Jag kan inte för mitt liv förstå var de övriga 33 bytesen kommer ifrån. Jag har disassemblerat båda varianter och kört en diff -u på dem, men får ingen riktig klarhet i saken.
33 bytes är väl inte hela världen, kan man kanske tycka, men det finns bara totalt 8192 bytes i ROM till programkod och det här projektet är just nu bara i startfasen, så att ödsla utrymme för saker som jag inte vet var det kommer från känns som en dum idé.
Har MPLABX nån sorts bytekod-diff eller liknande, eller hur kan jag kolla var dessa extra bytes kommer från?