Пример #1
0
        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);
        }
Пример #2
0
        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");
        }