using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; using System.Windows.Forms; namespace PIC_Simulator { class Register { // Speicherarray anlegen: List arrMemList = new List(); // BANK 0 definieren byte BANK0_INDF = 0x0; //0000 0000 byte BANK0_TMR0 = 0x0; //0000 0000 byte BANK0_PCL = 0x0; //0000 0000 byte BANK0_STATUS = 0x18; //0001 1000 byte BANK0_FSR = 0x0; //0000 0000 byte BANK0_PORTA = 0x0; //0000 0000 byte BANK0_PORTB = 0x0; //0000 0000 byte BANK0_EEDATA = 0x0; //0000 0000 byte BANK0_EEADR = 0x0; //0000 0000 // BANK 1 definieren byte BANK1_INDF = 0x0; //0000 0000 byte BANK1_OPTION_REG = 0xFF; //1111 1111 byte BANK1_PCL = 0x0; //0000 0000 byte BANK1_STATUS = 0x18; //0001 1000 byte BANK1_FSR = 0x0; //0000 0000 byte BANK1_TRISA = 0x1F; //0001 1111 byte BANK1_TRISB = 0xFF; //1111 1111 byte BANK1_EECON1 = 0x0; //0000 0000 byte BANK1_EECON2 = 0x0; //0000 0000 // Gemeinsam genutzte Register byte BANK_PCLATH = 0x0; //0000 0000 byte BANK_INTCON = 0x0; //0000 0000 //############## PIC COMMANDS BINARY ############################# // --- Bit-Oriented File Register Operations --- public string BCF = "0100"; // 4 Stellen zum Vergleichen public string BSF = "0101"; public string BTFSC = "0110"; public string BTFSS = "0111"; //--- Byte-Oriented File Register Operations --- public string ADDWF = "000111"; //6 Stellen zum Vergleichen public string ANDWF = "000101"; //6 public string COMF = "001001"; //6 public string DECF = "000011"; //6 public string DECFSZ = "001011"; //6 public string INCF = "001010"; //6 public string INCFSZ = "001111"; //6 public string IORWF = "000100"; //6 public string MOVF = "001000"; //6 public string RLF = "001101"; //6 public string RRF = "001100"; //6 public string SUBWF = "000010"; //6 public string SWAPF = "001110"; //6 public string XORWF = "000110"; //6 public string CLRF = "0000011"; //7 Stellen zum Vergleichen public string CLRW = "0000010"; //7 public string MOVWF = "0000001"; //7 public string NOP1 = "00000000000000"; //14 Stellen zum Vergleichen public string NOP2 = "00000000100000"; //14 public string NOP3 = "00000001000000"; //14 public string NOP4 = "00000001100000"; //14 // --- Literal and Control Operations --- public string CALL = "100"; //3 Stellen zum Vergleichen public string GOTO = "101"; //3 public string MOVLW = "1100"; //4 Stellen zum Vergleichen public string RETLW = "1101"; //4 public string SUBLW = "11110"; //5 Stellen zum Vergleichen public string ADDLW = "11111"; //5 public string ANDLW = "111001"; //6 Stellen zum Vergleichen public string IORLW = "111000"; //6 public string XORLW = "111010"; //6 public string CLRWDT = "00000001100100"; //14 public string RETFIE = "00000000001001"; //14 public string RETURN = "00000000001000"; //14 public string SLEEP = "00000001100011"; //14 //############## PIC COMMANDS BINARY ############################# // Findet den auszuführenden Befehl public void findOrder(string Order) { string OrderBinary; string Reduced; // Hex to Int Umrechnung Funktionsaufruf OrderBinary = hex2binary(Order); // 14 Zeichen Reduced = OrderBinary; if (Reduced.Equals(NOP1)) { MessageBox.Show("Erfolgreich NOP1" + Reduced); } else if (Reduced.Equals(NOP2)) { MessageBox.Show("Erfolgreich NOP2" + Reduced); } else if (Reduced.Equals(NOP3)) { MessageBox.Show("Erfolgreich NOP3" + Reduced); } else if (Reduced.Equals(NOP4)) { MessageBox.Show("Erfolgreich NOP4" + Reduced); } else if (Reduced.Equals(CLRWDT)) { MessageBox.Show("Erfolgreich CLRWDT" + Reduced); } else if (Reduced.Equals(RETFIE)) { MessageBox.Show("Erfolgreich RETFIE" + Reduced); } else if (Reduced.Equals(RETURN)) { MessageBox.Show("Erfolgreich RETURN" + Reduced); } else if (Reduced.Equals(SLEEP)) { MessageBox.Show("Erfolgreich SLEEP" + Reduced); } else { // Reduzieren und Vergleich mit 7 Zeichen Reduced = OrderBinary.Substring(0, 7); } //7 Zeichen if (Reduced.Equals(CLRF)) { MessageBox.Show("Erfolgreich CLRF" + Reduced); } else if (Reduced.Equals(CLRW)) { MessageBox.Show("Erfolgreich CLRW" + Reduced); } else if (Reduced.Equals(MOVWF)) { MessageBox.Show("Erfolgreich MOVWF" + Reduced); } else { // Reduzieren und Vergleich mit 6 Zeichen Reduced = OrderBinary.Substring(0, 6); } // 6 Zeichen if (Reduced.Equals(ANDWF)) { MessageBox.Show("Erfolgreich ANDWF " + Reduced); } else if (Reduced.Equals(COMF)) { MessageBox.Show("Erfolgreich COMF " + Reduced); } else if (Reduced.Equals(DECF)) { MessageBox.Show("Erfolgreich DECF " + Reduced); } else if (Reduced.Equals(DECFSZ)) { MessageBox.Show("Erfolgreich DECFSZ " + Reduced); } else if (Reduced.Equals(INCF)) { MessageBox.Show("Erfolgreich INCF " + Reduced); } else if (Reduced.Equals(INCFSZ)) { MessageBox.Show("Erfolgreich INCFSZ " + Reduced); } else if (Reduced.Equals(IORWF)) { MessageBox.Show("Erfolgreich IORWF " + Reduced); } else if (Reduced.Equals(MOVF)) { MessageBox.Show("Erfolgreich MOVF " + Reduced); } else if (Reduced.Equals(RLF)) { MessageBox.Show("Erfolgreich RLF " + Reduced); } else if (Reduced.Equals(RRF)) { MessageBox.Show("Erfolgreich RRF " + Reduced); } else if (Reduced.Equals(SUBWF)) { MessageBox.Show("Erfolgreich SUBWF " + Reduced); } else if (Reduced.Equals(SWAPF)) { MessageBox.Show("Erfolgreich SWAPF " + Reduced); } else if (Reduced.Equals(XORWF)) { MessageBox.Show("Erfolgreich XORWF " + Reduced); } else if (Reduced.Equals(ANDLW)) { MessageBox.Show("Erfolgreich ANDLW " + Reduced); } else if (Reduced.Equals(IORLW)) { MessageBox.Show("Erfolgreich IORLW " + Reduced); } else if (Reduced.Equals(XORLW)) { MessageBox.Show("Erfolgreich XORLW " + Reduced); } else { // Reduzieren und Vergleich mit 5 Zeichen Reduced = OrderBinary.Substring(0, 5); } // 5 Zeichen if (Reduced.Equals(SUBLW)) { MessageBox.Show("Erfolgreich SUBLW " + Reduced); } else if (Reduced.Equals(ADDLW)) { MessageBox.Show("Erfolgreich ADDLW " + Reduced); } else { // Reduzieren und Vergleich mit 4 Zeichen Reduced = OrderBinary.Substring(0, 4); } //4 Zeichen if (Reduced.Equals(BCF)) { MessageBox.Show("Erfolgreich BCF " + Reduced); } else if (Reduced.Equals(BSF)) { MessageBox.Show("Erfolgreich BSF " + Reduced); } else if (Reduced.Equals(BTFSC)) { MessageBox.Show("Erfolgreich DBTFSC " + Reduced); } else if (Reduced.Equals(BTFSS)) { MessageBox.Show("Erfolgreich BTFSS " + Reduced); } else if (Reduced.Equals(MOVLW)) { MessageBox.Show("Erfolgreich MOVLW " + Reduced); } else if (Reduced.Equals(RETLW)) { MessageBox.Show("Erfolgreich RETLW " + Reduced); } else {// Reduzieren und Vergleich mit 3 Zeichen Reduced = OrderBinary.Substring(0, 3); } if (Reduced.Equals(CALL)) { MessageBox.Show("Erfolgreich CALL " + Reduced); } else if (Reduced.Equals(GOTO)) { MessageBox.Show("Erfolgreich GOTO " + Reduced); } else { } } private string hex2binary(string hexvalue) { string binaryval = ""; binaryval = Convert.ToString(Convert.ToInt32(hexvalue, 16), 2).PadLeft(14,'0'); return binaryval; } private void fillpicmemory() { int[] line1 = new int[8]; int[] line2 = new int[8]; int[] line3 = new int[8]; int[] line4 = new int[8]; int[] line5 = new int[8]; int[] line6 = new int[8]; int[] line7 = new int[8]; int[] line8 = new int[8]; int[] line9 = new int[8]; int[] line10 = new int[8]; int[] line11 = new int[8]; int[] line12 = new int[8]; int[] line13 = new int[8]; int[] line14 = new int[8]; int[] line15 = new int[8]; int[] line16 = new int[8]; int[] line17 = new int[8]; int[] line18 = new int[8]; int[] line19 = new int[8]; int[] line20 = new int[8]; int[] line21 = new int[8]; int[] line22 = new int[8]; int[] line23 = new int[8]; int[] line24 = new int[8]; int[] line25 = new int[8]; int[] line26 = new int[8]; int[] line27 = new int[8]; int[] line28 = new int[8]; int[] line29 = new int[8]; int[] line30 = new int[8]; int[] line31 = new int[8]; } } }