protected override void SetCoreRegisters() { base.SetCoreRegisters(); INDF0 = GetRegister("INDF0"); INDF1 = GetRegister("INDF1"); FSR0L = GetRegister("FSR0L"); FSR0H = GetRegister("FSR0H"); FSR1L = GetRegister("FSR1L"); FSR1H = GetRegister("FSR1H"); FSR0 = GetRegister("FSR0"); FSR1 = GetRegister("FSR1"); BSR = GetRegister("BSR"); AddIndirectParents(true, (INDF0, (FSRIndexedMode.INDF, FSR0)), (INDF1, (FSRIndexedMode.INDF, FSR1)) ); AddAlwaysAccessibleRegisters(true, INDF0, INDF1, PCL, STATUS, FSR0L, FSR0H, FSR1L, FSR1H, BSR, WREG, PCLATH, INTCON); SetRegistersValuesAtPOR(); }
/// <summary> /// This method sets each of the standard "core" registers of the Basic PIC16. /// They are retrieved from the registers symbol table which has been previously populated by loading the PIC definition as provided by Microchip. /// </summary> /// <remarks> /// This permits to still get a direct reference to standard registers and keeps having some flexibility on definitions. /// </remarks> /// <exception cref="InvalidOperationException">Thrown if a register cannot be found in the symbol table.</exception> protected override void SetCoreRegisters() { base.SetCoreRegisters(); RP0 = GetBitField("RP0"); RP1 = GetBitField("RP1"); INDF = GetRegister("INDF"); FSR = GetRegister("FSR"); AddPseudoBSR(); BSR = GetRegister("BSR"); AddIndirectParents(true, (INDF, (FSRIndexedMode.INDF, FSR)) ); AddAlwaysAccessibleRegisters(true, INDF, PCL, STATUS, FSR, PCLATH, INTCON); }
private void AddPseudoBSR() { ISFRRegister bsr = new PseudoSFR() { Name = "BSR", Description = "Pseudo-register BSR", NMMRID = "0xb", Addr = 0, MCLR = "------00", POR = "------00", AccessBits = "------nn", BitWidth = 8 }; var reg = new PICRegisterStorage(bsr, 0); reg.BitFields.Add(new PICRegisterBitFieldSortKey(0, 8), RP0); reg.BitFields.Add(new PICRegisterBitFieldSortKey(1, 8), RP1); AddRegister(reg); }