Working Component Management
This commit is contained in:
@ -2,46 +2,49 @@ package fabrik.simulator.pic16f84;
|
||||
|
||||
import fabrik.simulator.pic16f84.interfaces.*;
|
||||
|
||||
public class PreScaler extends PICComponent implements PICComponentInterface {
|
||||
public class PreScaler extends PICComponent implements PreScalerInterface {
|
||||
|
||||
private final int PSA = 0x3;
|
||||
private final int OPTION = 0x81;
|
||||
private final TimerInterface timer;
|
||||
private int scaler;
|
||||
|
||||
public PreScaler (DataRegisterInterface dataRegister, TimerInterface timer) {
|
||||
public PreScaler () {
|
||||
super();
|
||||
scaler = 0b111;
|
||||
this.dataRegister = dataRegister;
|
||||
this.timer = timer;
|
||||
}
|
||||
|
||||
public boolean isPrescalerOnTimer (){
|
||||
@Override
|
||||
public boolean isPrescalerOnTimer(){
|
||||
return dataRegister.getDirectBit(OPTION, PSA) == 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public int getScaler() {
|
||||
return scaler;
|
||||
}
|
||||
|
||||
public int getFactor () {
|
||||
@Override
|
||||
public int getFactor() {
|
||||
int scale = dataRegister.getDirectRegister(OPTION) & 0b111;
|
||||
int timer = isPrescalerOnTimer() ? 1 : 0;
|
||||
return (int) Math.pow (2, scale+timer);
|
||||
}
|
||||
|
||||
public void reset (){
|
||||
@Override
|
||||
public void reset(){
|
||||
dataRegister.setDirectBit(OPTION, 0, 0);
|
||||
dataRegister.setDirectBit(OPTION, 1, 0);
|
||||
dataRegister.setDirectBit(OPTION, 2, 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void resetFromRegister() {
|
||||
scaler = getFactor();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void decrement(boolean manual) {
|
||||
scaler--;
|
||||
if (scaler == 0) {
|
||||
@ -52,6 +55,6 @@ public class PreScaler extends PICComponent implements PICComponentInterface {
|
||||
|
||||
@Override
|
||||
public void initialize(PICComponents picComponents) {
|
||||
|
||||
super.initialize(picComponents);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user