Ejemplo n.º 1
0
        private void box_CodeView_DoubleClick(object sender, EventArgs e)
        {
            int line = box_CodeView.GetLineFromCharIndex(box_CodeView.SelectionStart);

            PICBefehl b = programm.befehle.FirstOrDefault(i => i.zeilennummer == line);

            if (b != null)
            {
                if (programm.Breakpoints.Contains(b.labelnummer))
                {
                    programm.Breakpoints.Remove(b.labelnummer);
                }
                else
                {
                    programm.Breakpoints.Add(b.labelnummer);
                }

                OberflaecheAktualisieren();
            }
        }
Ejemplo n.º 2
0
        public void OberflaecheAktualisieren()
        {
            // Zeile highlighten

            var a = box_CodeView.SelectionStart;

            if (programm.befehle.Count > 0 && programm.PCCounter < programm.befehle.Count)
            {
                Highlight(programm.befehle[programm.PCCounter].zeilennummer);
            }

            foreach (var bp in programm.Breakpoints)
            {
                PICBefehl b = programm.befehle.FirstOrDefault(i => i.labelnummer == bp);
                if (b != null)
                {
                    HighlightBreakpoint(b.zeilennummer);
                }
            }

            box_CodeView.SelectionStart  = a;
            box_CodeView.SelectionLength = 0;

            // Memory aktualisieren

            for (int y = 0; y < 16; y++)
            {
                for (int x = 0; x < 16; x++)
                {
                    string nummer = string.Format("{0:X2}", programm.GetRegisterOhneBank((uint)(y * 16 + x)));
                    if (nummer != lvMemory.Items[y].SubItems[x + 1].Text)
                    {
                        lvMemory.Items[y].SubItems[x + 1].Text = nummer;
                    }
                }
            }

            // Spezialregister aktualisieren

            lvSpecial.Items[0].SubItems[1].Text  = string.Format("0x{0:X2}", programm.Register_W);
            lvSpecial.Items[1].SubItems[1].Text  = string.Format("{0,4}", programm.PCCounter);
            lvSpecial.Items[2].SubItems[1].Text  = string.Format("0b{0}", Convert.ToString(programm.GetRegisterOhneBank(PICProgramm.ADDR_STATUS), 2).PadLeft(8, '0'));
            lvSpecial.Items[3].SubItems[1].Text  = string.Format("0b{0}", Convert.ToString(programm.GetRegisterOhneBank(PICProgramm.ADDR_OPTION), 2).PadLeft(8, '0'));
            lvSpecial.Items[4].SubItems[1].Text  = string.Format("0b{0}", Convert.ToString(programm.GetRegisterOhneBank(PICProgramm.ADDR_INTCON), 2).PadLeft(8, '0'));
            lvSpecial.Items[5].SubItems[1].Text  = string.Format("{0}ms", programm.Stepcount * int.Parse(insertTime.Text));
            lvSpecial.Items[6].SubItems[1].Text  = "0b" + Convert.ToString(programm.Latch_RA, 2).PadLeft(8, '0');
            lvSpecial.Items[7].SubItems[1].Text  = "0b" + Convert.ToString(programm.Latch_RB, 2).PadLeft(8, '0');
            lvSpecial.Items[8].SubItems[1].Text  = programm.GetRegisterOhneBank(PICProgramm.ADDR_STATUS, PICProgramm.STATUS_BIT_C) ? "1" : "0";
            lvSpecial.Items[9].SubItems[1].Text  = programm.GetRegisterOhneBank(PICProgramm.ADDR_STATUS, PICProgramm.STATUS_BIT_DC) ? "1" : "0";
            lvSpecial.Items[10].SubItems[1].Text = programm.GetRegisterOhneBank(PICProgramm.ADDR_STATUS, PICProgramm.STATUS_BIT_Z) ? "1" : "0";
            lvSpecial.Items[11].SubItems[1].Text = string.Format("{0:0.000}ms", programm.WatchDog.time * 1000);

            lbStack.Items.Clear();
            foreach (var u in programm.Stack)
            {
                lbStack.Items.Add(u.ToString());
            }

            // RA + RB aktualisieren

            btn_RA_0.Text = (programm.GetRegisterOhneBank(PICProgramm.ADDR_PORT_A, 0) ? 1 : 0).ToString();
            btn_RA_1.Text = (programm.GetRegisterOhneBank(PICProgramm.ADDR_PORT_A, 1) ? 1 : 0).ToString();
            btn_RA_2.Text = (programm.GetRegisterOhneBank(PICProgramm.ADDR_PORT_A, 2) ? 1 : 0).ToString();
            btn_RA_3.Text = (programm.GetRegisterOhneBank(PICProgramm.ADDR_PORT_A, 3) ? 1 : 0).ToString();
            btn_RA_4.Text = (programm.GetRegisterOhneBank(PICProgramm.ADDR_PORT_A, 4) ? 1 : 0).ToString();
            btn_RA_5.Text = (programm.GetRegisterOhneBank(PICProgramm.ADDR_PORT_A, 5) ? 1 : 0).ToString();
            btn_RA_6.Text = (programm.GetRegisterOhneBank(PICProgramm.ADDR_PORT_A, 6) ? 1 : 0).ToString();
            btn_RA_7.Text = (programm.GetRegisterOhneBank(PICProgramm.ADDR_PORT_A, 7) ? 1 : 0).ToString();

            btn_RA_Tris_0.Text = (programm.GetRegisterOhneBank(PICProgramm.ADDR_TRIS_A, 0) ? "i" : "o");
            btn_RA_Tris_1.Text = (programm.GetRegisterOhneBank(PICProgramm.ADDR_TRIS_A, 1) ? "i" : "o");
            btn_RA_Tris_2.Text = (programm.GetRegisterOhneBank(PICProgramm.ADDR_TRIS_A, 2) ? "i" : "o");
            btn_RA_Tris_3.Text = (programm.GetRegisterOhneBank(PICProgramm.ADDR_TRIS_A, 3) ? "i" : "o");
            btn_RA_Tris_4.Text = (programm.GetRegisterOhneBank(PICProgramm.ADDR_TRIS_A, 4) ? "i" : "o");
            btn_RA_Tris_5.Text = (programm.GetRegisterOhneBank(PICProgramm.ADDR_TRIS_A, 5) ? "i" : "o");
            btn_RA_Tris_6.Text = (programm.GetRegisterOhneBank(PICProgramm.ADDR_TRIS_A, 6) ? "i" : "o");
            btn_RA_Tris_7.Text = (programm.GetRegisterOhneBank(PICProgramm.ADDR_TRIS_A, 7) ? "i" : "o");

            btn_RB_0.Text = (programm.GetRegisterOhneBank(PICProgramm.ADDR_PORT_B, 0) ? 1 : 0).ToString();
            btn_RB_1.Text = (programm.GetRegisterOhneBank(PICProgramm.ADDR_PORT_B, 1) ? 1 : 0).ToString();
            btn_RB_2.Text = (programm.GetRegisterOhneBank(PICProgramm.ADDR_PORT_B, 2) ? 1 : 0).ToString();
            btn_RB_3.Text = (programm.GetRegisterOhneBank(PICProgramm.ADDR_PORT_B, 3) ? 1 : 0).ToString();
            btn_RB_4.Text = (programm.GetRegisterOhneBank(PICProgramm.ADDR_PORT_B, 4) ? 1 : 0).ToString();
            btn_RB_5.Text = (programm.GetRegisterOhneBank(PICProgramm.ADDR_PORT_B, 5) ? 1 : 0).ToString();
            btn_RB_6.Text = (programm.GetRegisterOhneBank(PICProgramm.ADDR_PORT_B, 6) ? 1 : 0).ToString();
            btn_RB_7.Text = (programm.GetRegisterOhneBank(PICProgramm.ADDR_PORT_B, 7) ? 1 : 0).ToString();

            btn_RB_Tris_0.Text = (programm.GetRegisterOhneBank(PICProgramm.ADDR_TRIS_B, 0) ? "i" : "o");
            btn_RB_Tris_1.Text = (programm.GetRegisterOhneBank(PICProgramm.ADDR_TRIS_B, 1) ? "i" : "o");
            btn_RB_Tris_2.Text = (programm.GetRegisterOhneBank(PICProgramm.ADDR_TRIS_B, 2) ? "i" : "o");
            btn_RB_Tris_3.Text = (programm.GetRegisterOhneBank(PICProgramm.ADDR_TRIS_B, 3) ? "i" : "o");
            btn_RB_Tris_4.Text = (programm.GetRegisterOhneBank(PICProgramm.ADDR_TRIS_B, 4) ? "i" : "o");
            btn_RB_Tris_5.Text = (programm.GetRegisterOhneBank(PICProgramm.ADDR_TRIS_B, 5) ? "i" : "o");
            btn_RB_Tris_6.Text = (programm.GetRegisterOhneBank(PICProgramm.ADDR_TRIS_B, 6) ? "i" : "o");
            btn_RB_Tris_7.Text = (programm.GetRegisterOhneBank(PICProgramm.ADDR_TRIS_B, 7) ? "i" : "o");

            if (btnWD1.Font.Bold != programm.WatchDog.Aktiviert)
            {
                btnWD1.Font = new Font(btnWD1.Font, programm.WatchDog.Aktiviert ? FontStyle.Bold : FontStyle.Regular);
            }
            if (btnWD0.Font.Bold == programm.WatchDog.Aktiviert)
            {
                btnWD0.Font = new Font(btnWD0.Font, programm.WatchDog.Aktiviert ? FontStyle.Regular : FontStyle.Bold);
            }
            if (btnClockStart.Font.Bold != programm.TaktgeberAktiviert)
            {
                btnClockStart.Font = new Font(btnClockStart.Font, programm.TaktgeberAktiviert ? FontStyle.Bold : FontStyle.Regular);
            }
        }