www.cavefischer.at/Sharp Pocket Computer


Empfang von mehreren Bytes (Rx) vom Sharp PC mit Arduino UNO



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);
}

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
&4100: 120 &41 &16 CALL &4116          
&4103: &85     LP05            
&4104: 002 &45   LIA &45          
&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 69
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 120,&F0,&16,&85,2,&FA,219,&84,2,&F7,219,2,23,52
210:DATA &83,4,85,120,&F0,&1E,47,7
220:DATA 16,&EF,&FE,&84,0,1,27,55
230:DATA 18,94,96,0,95,78,48,97,4,95,206,2,1
240:DATA &83,198,18,94,56,7,96,0,78,10,44,5,97,4,78,14,95,209,90
250:DATA 43,20,78,32,96,0,95,55

Assemblerdarstellung des Maschinenprogramms
&F000: 120 &F0 &16 CALL &F016          
&F003: &85     LP05            
&F004: 002 &FA   LIA &FA          
&F006: 219     EXAM            
&F007: &84     LP04            
&F008: 002 &F7   LIA &F7          
&F00A: 219     EXAM            
&F00B: 002 023   LIA 23          
&F00D: 052     PUSH            
&F00E: &83     LP03   <      
&F00F: 004     IX          
&F010: 085     MVMD          
&F011: 120 &F0 &1E CALL &F01E        
&F014: 047 007   LOOP 7      
&F016: 016 &EF &FE LIDP &EFFE          
&F019: &84     LP04            
&F01A: 000 001   LII 1          
&F01C: 027     EXBD            
&F01D: 055     RTN            
&F01E: 018 094   LIP 94          
&F020: 096 000   ANIM 0          
&F022: 095     OUTF            
&F023: 078 048   WAIT 48          
&F025: 097 004   ORIM 4          
&F027: 095     OUTF            
&F028: 206     NOPT            
&F029: 002 001   LIA 1          
&F02B: &83     LP03   <  
&F02C: 198     TSMA          
&F02D: 018 094   LIP 94        
&F02F: 056 007   JRZP 7  
&F031: 096 000   ANIM 0      
&F033: 078 010   WAIT 10      
&F035: 044 005   JRP 5  
&F037: 097 004   ORIM 4 <  
&F039: 078 014   WAIT  14      
&F03B: 095     OUTF   <    
&F03C: 209     RC          
&F03D: 090     SL          
&F03E: 043 020   JRNCM 20  
&F040: 078 032   WAIT 32          
&F042: 096 000   ANIM 0          
&F044: 095     OUTF            
&F045: 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: Walter Fischer