public void Set(int value) { switch (registerSelected) { case RegisterSelected.PRA: PRA = value; OnPeripheralWrite?.Invoke(this, new PeripheralEventArgs(Peripheral.PRA, value)); break; case RegisterSelected.DDRA: DDRA = value; break; case RegisterSelected.CRA: CRA = value; break; case RegisterSelected.PRB: PRB = value; OnPeripheralWrite.Invoke(this, new PeripheralEventArgs(Peripheral.PRB, value)); break; case RegisterSelected.DDRB: DDRB = value; break; case RegisterSelected.CRB: CRB = value; break; } //Debug.WriteLine("WRITE: {0:X4}", value); }
public void Set(int registerSelect, int value) { switch (registerSelect) { // RS1 = 0, RS0 = 0 case 0: switch (CRA & 4) { // CRA-B4 = 1 case 4: PRA = value; OnPeripheralWrite?.Invoke(this, new PeripheralEventArgs(Peripheral.PRA, value)); return; // CRA-B4 = 0 case 0: DDRA = value; return; } break; // RS1 = 0, RS0 = 1 case 1: CRA = value; return; // RS1 = 1, RS0 = 0 case 2: switch (CRB & 4) { // CRB-B4 = 1 case 4: PRB = value; OnPeripheralWrite?.Invoke(this, new PeripheralEventArgs(Peripheral.PRB, value)); return; // CRB-B4 = 0 case 0: DDRB = value; return; } break; // RS1 = 1, RS0 = 1 case 3: CRB = value; return; } throw new Exception("Invalid state"); }