Pin-Timer
This commit is contained in:
@ -57,6 +57,8 @@ public class IOPorts {
|
|||||||
DataRegister.setDirectRegister(PORTB, ((~((~dataLatch[B])&0xFF | trisLatch[B])) | (trisLatch[B] & DataRegister.getDirectRegister(PORTB))) & 0xFF);
|
DataRegister.setDirectRegister(PORTB, ((~((~dataLatch[B])&0xFF | trisLatch[B])) | (trisLatch[B] & DataRegister.getDirectRegister(PORTB))) & 0xFF);
|
||||||
DataRegister.setDirectRegister(TRISA, trisLatch[A]);
|
DataRegister.setDirectRegister(TRISA, trisLatch[A]);
|
||||||
DataRegister.setDirectRegister(TRISB, trisLatch[B]);
|
DataRegister.setDirectRegister(TRISB, trisLatch[B]);
|
||||||
|
if (((trisLatch[A] >> 4) & 1 )== 1)
|
||||||
|
Timer.incrementFromPin(DataRegister.getDirectRegister(PORTA));
|
||||||
ToggleButtonGroup[] buttons = Controller_Frontend.getPORTbuttons();
|
ToggleButtonGroup[] buttons = Controller_Frontend.getPORTbuttons();
|
||||||
for (int i = 0; i < buttons.length; i++){
|
for (int i = 0; i < buttons.length; i++){
|
||||||
int port = (i < 8) ? PORTA : PORTB;
|
int port = (i < 8) ? PORTA : PORTB;
|
||||||
|
|||||||
@ -1,5 +1,7 @@
|
|||||||
package fabrik.simulator.pic16f84;
|
package fabrik.simulator.pic16f84;
|
||||||
|
|
||||||
|
import javafx.stage.Stage;
|
||||||
|
|
||||||
public class Timer {
|
public class Timer {
|
||||||
private static final int TIMERREG = 0x1;
|
private static final int TIMERREG = 0x1;
|
||||||
private static final int T0IF = 0x2;
|
private static final int T0IF = 0x2;
|
||||||
@ -8,6 +10,8 @@ public class Timer {
|
|||||||
private static final int INTCON = 0x0B;
|
private static final int INTCON = 0x0B;
|
||||||
private static final int OPTION = 0x81;
|
private static final int OPTION = 0x81;
|
||||||
|
|
||||||
|
private static int oldpin = 0;
|
||||||
|
|
||||||
|
|
||||||
public static void cycles(int cycles){
|
public static void cycles(int cycles){
|
||||||
if (DataRegister.getDirectBit(OPTION, T0CS) == 0){
|
if (DataRegister.getDirectBit(OPTION, T0CS) == 0){
|
||||||
@ -27,6 +31,27 @@ public class Timer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void incrementFromPin (int register){
|
||||||
|
if (DataRegister.getDirectBit(OPTION, T0CS) == 1){
|
||||||
|
int newpin = (register >> 4) & 1;
|
||||||
|
if (newpin != oldpin) {
|
||||||
|
System.out.println(newpin + " " + oldpin);
|
||||||
|
if (DataRegister.getDirectBit(OPTION, T0SE) == 0) {
|
||||||
|
// Low to high
|
||||||
|
if (newpin == 1 && oldpin == 0) {
|
||||||
|
increment();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// High to low
|
||||||
|
if (newpin == 0 && oldpin == 1) {
|
||||||
|
increment();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
oldpin = newpin;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private static void increment() {
|
private static void increment() {
|
||||||
int timer = DataRegister.getDirectRegister(TIMERREG);
|
int timer = DataRegister.getDirectRegister(TIMERREG);
|
||||||
timer++;
|
timer++;
|
||||||
|
|||||||
Reference in New Issue
Block a user