www.cavefischer.at/Sharp Pocket Computer
10:POKE &4100,2,0,120,&A8,&70,&EB,&38,55
20:INPUT "0-255:";X
30:POKE &4101,X
40:CALL &4100
50:GOTO 20
| Assemblerdarstellung des Maschinenprogramms | |||||||||
| &4100: | 002 | 000 | LIA | 0 | Inhalt der Adresse &4101 wird in das A-Register (Akku) übertragen | ||||
| &4102: | 120 | &A8 | &70 | CALL | &A870 | Inhalt des A-Registers (Akku) wird mit der Funktion "Device-Select" an den Fo2-Port (Dout) übertragen | |||
| &4105: | &EB | &38 | CAL | &B38 | Ports werden zurückgesetzt | ||||
| &4107: | 055 | RTN | Rücksprung ins Basic | ||||||
// Uebertragung von "Device-Select" und Datenbytes zum Arduino UNO
const int OUT_ACK9 = 4; // Pin D4, ACK, pin 9 der 11-pol. Buchsenleiste
const int IN_Xout7 = 6; // Pin D6, Xout, pin 7 der 11-pol. Buchsenleiste
const int IN_Dout5 = 8; // Pin D8, Dout, pin 5 der 11-pol. Buchsenleiste
const int IN_Busy4 = 9; // Pin D9, Busy, pin 4 der 11-pol. Buchsenleiste
int DataBit;
int DataByte;
int i;
void setup() {
Serial.begin(9600);
pinMode(OUT_ACK9, OUTPUT);
pinMode(IN_Xout7, INPUT);
pinMode(IN_Dout5, INPUT);
pinMode(IN_Busy4, INPUT);
Serial.println();
Serial.println("Bereit:");
Serial.println();
}
void loop() {
if (digitalRead(IN_Xout7)) { // Uebertragung von DeviceSelect
i = 0;
DataByte = 0;
do {
digitalWrite(OUT_ACK9, HIGH);
while (!digitalRead(IN_Busy4));
DataBit = digitalRead(IN_Dout5);
digitalWrite(OUT_ACK9, LOW);
while (digitalRead(IN_Busy4));
DataByte = DataByte | (DataBit << i);
i++;
} while (i < 8);
while (digitalRead(IN_Xout7));
digitalWrite(OUT_ACK9, HIGH);
delayMicroseconds(400);
digitalWrite(OUT_ACK9, LOW);
Serial.print("DeviceSelect:");
Serial.println(DataByte);
}
if (digitalRead(IN_Busy4) && !digitalRead(IN_Xout7)) { // Uebertragung eines Datenbytes
i = 0;
DataByte = 0;
do {
while (!digitalRead(IN_Busy4));
DataBit = digitalRead(IN_Dout5);
digitalWrite(OUT_ACK9, HIGH);
while (digitalRead(IN_Busy4));
digitalWrite(OUT_ACK9, LOW);
DataByte = DataByte | (DataBit << i);
i++;
} while (i < 8);
Serial.println(DataByte);
}
} // Ende loop
| Pinbelegung | Signalverlauf bei Übertragung des Wertes 15 | ||
|---|---|---|---|
| Arduino UNO Pin | Name | Sharp PC 11-pol. Schnittstelle |
![]() |
| GND | GND | Pin 3 | |
| D9 (Input) | Busy | Pin 4 | |
| D8 (Input) | Dout | Pin 5 | |
| D6 (Input) | Xout | Pin 7 | |
| D4 (Output) | ACK | Pin 9 |