www.cavefischer.at/Sharp Pocket Computer


Empfang von mehreren Bytes (Rx) vom Sharp PC mit Arduino UNO
Übertragung einer Textvariablen



Das anschließende Arduino Programm empfängt an der seriellen Schnittstelle (UART) 16 bzw. 24 Bytes, die vom Pocket Computer gesendet werden.
Am Pocket Computer wird der Standard INPUT Befehl zur Eingabe der Zeichen verwendet, die in der dimensionierten Variablen Z$(0) gespeichert werden.
Arduino-seitig wird zum Empfang die Funktion "Serial.read" verwendet; die Bitrate wird auf 4800 baud eingestellt.
Der Ausgang Fo1 bzw. Fo3 (Pin 4) des Sharp Pocket Computers wird über einen NPN Treiber Tranistor (z.B. BC546, BC547, BC548, ...) in open-collector Schaltung mit RX0 vom Arduino verbunden.
Beim ersten Aufruf muß das Basic Programm mit RUN gestartet werden, um das Maschinenprogramm in den Speicher zu übertragen.
Das eigentliche Programm zur Übertragung der Zeichenfolge wird in der Folge mit DEF A gestartet.


Steckbrett mit Arduino UNO:



Programm für Arduino:

// Rx (D0) mit 4800 bit/s von Sharp PC-1401 (Pin 4 = Port Fo 1)
// Rx (D0) mit 4800 bit/s von Sharp PC-1403 (Pin 4 = Port Fo 3)

int inByte = 0;

void setup() {
  Serial.begin(4800, SERIAL_8N1);
}

void loop() {
  if (Serial.available() > 0) {
    inByte = Serial.read();
    Serial.println(inByte);
  }
}

BASIC Programm für Sharp PC-1401 (Übertragung von 16 Bytes):


10:RESTORE
20:FOR X=0 TO 70
30:READ D
40:POKE &4100+X,D
50:NEXT X
60:END
100:"A" CLEAR
110:DIM Z$(0)*16
120:INPUT Z$(0)
130:CALL &4100
140:GOTO 120
200:DATA 120,&41,&16,&85,2,&45,219,&84,2,&BF,219,2,15,52
210:DATA &83,4,85,120,&41,&1E,47,7
220:DATA 16,&40,&FE,&84,0,1,27,55
230:DATA 18,94,96,0,95,206,97,1,95,78,0,2,1
240:DATA &83,198,18,94,56,6,96,0,77,44,5,97,1,206,206,95,209,90
250:DATA 43,19,78,18,96,0,95,78,18,55

Assemblerdarstellung des Maschinenprogramms für PC-1401
&4100: 120 &41 &16 CALL &4116             
&4103: &85     LP05               
&4104: 002 &45   LIA &45           &45BF (17855) = Startadresse der Variablen Z$(0)*16 in das X-Reg laden
&4106: 219     EXAM               
&4107: &84     LP04               
&4108: 002 &BF   LIA &BF             
&410A: 219     EXAM               
&410B: 002 015   LIA 15             
&410D: 052     PUSH               
&410E: &83     LP03   <         
&410F: 004     IX             
&4110: 085     MVMD             
&4111: 120 &41 &1E CALL &411E           
&4114: 047 007   LOOP 7         
&4116: 016 &40 &FE LIDP &40FE             
&4119: &84     LP04               
&411A: 000 001   LII 1             
&411C: 027     EXBD               
&411D: 055     RTN               
&411E: 018 094   LIP 94             
&4120: 096 000   ANIM 0             
&4122: 095     OUTF               
&4123: 206     NOPT               
&4124: 097 001   ORIM 1             
&4126: 095     OUTF               
&4127: 078 000   WAIT 0             
&4129: 002 001   LIA 1             
&412B: &83     LP03   <     
&412C: 198     TSMA             
&412D: 018 094   LIP 94           
&412F: 056 006   JRZP 6     
&4131: 096 000   ANIM 0         
&4133: 077     NOPW           
&4134: 044 005   JRP 5     
&4136: 097 001   ORIM 1 <     
&4138: 206     NOPT           
&4139: 206     NOPT           
&413A: 095     OUTF   <       
&413B: 209     RC             
&413C: 090     SL             
&413D: 043 019   JRNCM 19     
&413F: 078 018   WAIT 18             
&4141: 096 000   ANIM 0             
&4143: 095     OUTF               
&4144: 078 018   WAIT 18             
&4146: 055     RTN               


BASIC Programm für Sharp PC-1403 (Übertragung von 24 Bytes):


10:RESTORE
20:FOR X=0 TO 57
30:READ D
40:POKE &F000+X,D
50:NEXT X
60:END
100:"A" CLEAR
110:DIM Z$(0)*24
120:INPUT Z$(0)
130:CALL &F000
140:GOTO 120
200:DATA &85,2,&FA,219,&84,2,&F7,219,2,23,52,&83,4,85,120,&F0,&14,47,7,55
210:DATA 18,94,97,4,95,206,206,2,1,&83,198,18,94,56,7
220:DATA 96,0,78,9,44,5,97,4,78,15,95,209,90,43,20,78,31,96,0,95,78,59,55

Assemblerdarstellung des Maschinenprogramms für PC-1403
&F000: &85     LP05               
&F001: 002 &FA   LIA &FA           &FAF7 (64247) = Startadresse der Variablen Z$(0)*24 in das X-Reg laden
&F003: 219     EXAM               
&F004: &84     LP04               
&F005: 002 &F7   LIA &F7             
&F007: 219     EXAM               
&F008: 002 023   LIA 23             
&F00A: 052     PUSH               
&F00B: &83     LP03   <       Adresse des B-Reg (03) in das P-Reg laden
&F00C: 004     IX           X-Reg inkrementieren und in DP-Reg laden
&F00D: 085     MVMD           Inhalt der Adresse, die im DP-Reg steht in die Adresse, die im P-Reg steht laden
&F00E: 120 &F0 &14 CALL &F014           
&F011: 047 007   LOOP 7         
&F013: 055     RTN               
&F014: 018 094   LIP 94             
&F016: 097 004   ORIM 4             
&F018: 095     OUTF             4 an Port F senden, entspricht High an Fo3 (Pin 4) = Startbit
&F019: 206     NOPT               
&F01A: 206     NOPT               
&F01B: 002 001   LIA 1             
&F01D: &83     LP03   <     
&F01E: 198     TSMA             
&F01F: 018 094   LIP 94           
&F021: 056 007   JRZP 7     
&F023: 096 000   ANIM 0         
&F025: 078 009   WAIT 9         
&F027: 044 005   JRP 5     
&F029: 097 004   ORIM 4 <     
&F02B: 078 015   WAIT  15         
&F02D: 095     OUTF   <       
&F02E: 209     RC             
&F02F: 090     SL             
&F030: 043 020   JRNCM 20     
&F032: 078 031   WAIT 31             
&F034: 096 000   ANIM 0             
&F036: 095     OUTF             0 an Port F senden, entspricht Low an Fo3 (Pin 4) = Stoppbit
&F037: 078 059   WAIT 59             
&F039: 055     RTN               


Pinbelegung:

Arduino UNO Pin Name Sharp PC
11-pol. Schnittstelle
GND GND Pin 3
RX 0 (Input, über open-collector Transistorstufe) Port Fo 1 (PC-1401)
Port Fo 3 (PC-1403)
Pin 4


zum Seitenanfang

© 2022-2025: Walter Fischer