diff --git a/de/darkress/pic16f84sim/Main.java b/de/darkress/pic16f84sim/Main.java index 84500fb..8d2e52b 100644 --- a/de/darkress/pic16f84sim/Main.java +++ b/de/darkress/pic16f84sim/Main.java @@ -13,7 +13,7 @@ class Main { public static void main(String[] args) throws InterruptedException { - Command[] program = Parser.parser("de/darkress/pic16f84sim/TPicSim101.LST"); + Command[] program = Parser.parser("de/darkress/pic16f84sim/TestPrograms/TPicSim2.LST"); /*for(int i = 0; i < instructions.size(); i++) { program.add(CommandDecoder.decode(instructions.get(i))); diff --git a/de/darkress/pic16f84sim/microcontroller/Memory.java b/de/darkress/pic16f84sim/microcontroller/Memory.java index 4a4033b..dade9e9 100644 --- a/de/darkress/pic16f84sim/microcontroller/Memory.java +++ b/de/darkress/pic16f84sim/microcontroller/Memory.java @@ -121,6 +121,11 @@ public class Memory memory[0x8A] = data & 0x1F; } + public static int getOption() + { + return memory[0x81]; + } + public static boolean getZeroBit() { return (memory[0x03] & 0x04) == 0x04; diff --git a/de/darkress/pic16f84sim/microcontroller/Timer.java b/de/darkress/pic16f84sim/microcontroller/Timer.java new file mode 100644 index 0000000..e115609 --- /dev/null +++ b/de/darkress/pic16f84sim/microcontroller/Timer.java @@ -0,0 +1,19 @@ +package de.darkress.pic16f84sim.microcontroller; + +public class Timer +{ + private boolean getPrescalerAsssignment() { + return (Memory.getOption() & 0x08) == 0x08; + } + + private int getPrescalerFactor() { + final int MULTIPLIER = 2; + int prescalerPower = Memory.getOption() & 0x07; + int prescaler = (int)Math.pow(2, prescalerPower); + if(!getPrescalerAsssignment()) + { + return prescaler * MULTIPLIER; + } + return prescaler; + } +}