public void timerCount(uint cycles) { RegArrayHandler regArrayHandler = new RegArrayHandler(); if ((regArrayHandler.getRegArray(0x81) & 0b00001000) == 0) { if ((regArrayHandler.getRegArray(0x81) & 0b00100000) == 0) { Console.WriteLine("Timer mit Befehlstakt erhöht!"); if ((DataStorage.prescalerCount + cycles) >= DataStorage.prescalerValue) { if (regArrayHandler.getRegArray(0x01) == 255) { regArrayHandler.setRegArray(0x0B, regArrayHandler.getRegArray(0x0B) | 0b00000100); //triggerInterrupt(); regArrayHandler.setRegArray(0x01, 0); DataStorage.prescalerCount = 0; } else { regArrayHandler.setRegArray(0x01, (regArrayHandler.getRegArray(0x01) + 1)); DataStorage.prescalerCount = 0; } } else { DataStorage.prescalerCount = DataStorage.prescalerCount + (int)cycles; } }
public void checkInterrupt() { if ((regArrayHandler.getRegArray(0x0B) & 0x80) == 0x80) { //Timer if (((regArrayHandler.getRegArray(0x0B) & 0x20) == 0x20) && ((regArrayHandler.getRegArray(0x0B) & 0x04) == 0x04)) { DataStorage.stack1.SetValueToStck(Pcl.getPCL()); Pcl.setPCL(0x04 - 1); regArrayHandler.setRegArray(0x0B, (regArrayHandler.getRegArray(0x0B) & 0b01111111)); } //RB0 if (((regArrayHandler.getRegArray(0x0B) & 0x10) == 0x10) && ((regArrayHandler.getRegArray(0x0B) & 0x02) == 0x02)) { DataStorage.stack1.SetValueToStck(Pcl.getPCL()); Pcl.setPCL(0x04 - 1); regArrayHandler.setRegArray(0x0B, (regArrayHandler.getRegArray(0x0B) & 0b01111111)); } //Rb7-4 if (((regArrayHandler.getRegArray(0x0B) & 0x08) == 0x08) && ((regArrayHandler.getRegArray(0x0B) & 0x01) == 0x01)) { DataStorage.stack1.SetValueToStck(Pcl.getPCL()); Pcl.setPCL(0x04 - 1); regArrayHandler.setRegArray(0x0B, (regArrayHandler.getRegArray(0x0B) & 0b01111111)); } } }
public void nextCommand() { uint oldCycles; uint cycleDiff; if (PCL.getPCL() < DataStorage.commandList.Count) { Console.WriteLine(DataStorage.commandList.ElementAt((int)PCL.getPCL()).command); oldCycles = DataStorage.cycleCount; handleCommand(); cycleDiff = DataStorage.cycleCount - oldCycles; timer0.timerCount(cycleDiff); interrupts.checkInterrupt(); Watchdog.checkWatchdog(cycleDiff); } regArrayHandler.setRegArray(0x02, PCL.getPCL()); }
private void FileRegister_CellEditEnding(object sender, System.Windows.Controls.DataGridCellEditEndingEventArgs e) { var editingTextBox = e.EditingElement as TextBox; string newValue = editingTextBox.Text; if (e.EditAction == DataGridEditAction.Commit) { if (newValue.Length <= 2) { try { byte b = (byte)int.Parse(newValue, System.Globalization.NumberStyles.HexNumber); editingTextBox.Text = b.ToString("X2"); regArrayHandler.setRegArray((uint)(e.Row.GetIndex() * 8 + e.Column.DisplayIndex), b); UpdateSFR(); UpdateFileRegisterUI(); UpdatePin(); } catch { e.Cancel = true; (sender as DataGrid).CancelEdit(DataGridEditingUnit.Cell); MessageBox.Show("Invalid hexadecimal value", "Error", MessageBoxButton.OK, MessageBoxImage.Error); } } else { e.Cancel = true; (sender as DataGrid).CancelEdit(DataGridEditingUnit.Cell); MessageBox.Show("Only one hexadecimal byte allowed", "Error", MessageBoxButton.OK, MessageBoxImage.Error); } } }
public static void otherReset() { uint tmr0value = DataStorage.regArray[0x01]; uint statusvalue = DataStorage.regArray[0x03] & 0b00000111; uint fsrvalue = DataStorage.regArray[0x04]; uint portavalue = DataStorage.regArray[0x05]; uint portbvalue = DataStorage.regArray[0x06]; uint eedatavalue = DataStorage.regArray[0x08]; uint eeadrvalue = DataStorage.regArray[0x09]; uint intconvalue = DataStorage.regArray[0x0B] & 0b00000001; initPCL(); for (int i = 0; i < DataStorage.regArray.Length; i++) { DataStorage.regArray[i] = 0b00000000; } regArrayHandler.setRegArray(0x01, tmr0value); regArrayHandler.setRegArray(0x03, statusvalue); regArrayHandler.setRegArray(0x04, fsrvalue); regArrayHandler.setRegArray(0x05, portavalue); regArrayHandler.setRegArray(0x06, portbvalue); regArrayHandler.setRegArray(0x08, eedatavalue); regArrayHandler.setRegArray(0x09, eeadrvalue); regArrayHandler.setRegArray(0x0B, intconvalue); regArrayHandler.setRegArray(0x81, 0b11111111); regArrayHandler.setRegArray(0x85, 0b00011111); regArrayHandler.setRegArray(0x86, 0b11111111); initStartCounter(); initWatchdog(); }