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 |