TPS 3: Rechnen mit Variablen 

Elektronik-Labor  Projekte   TPS



Die Tasten-programmierbare Steuerung soll nun drei Variablen A, B, C und D erhalten. Außerdem kommt ein analoger Eingang und ein PWM-Ausgang hinzu. Beide werden auf 4 Bit begrenzt und sind nur über die Variable A zugänglich (A = ADC, PWM = A). A kann auch direkt mit einer Zahl geladen werden. Um B, C oder D zu füllen, muss man zuerst A laden und den Inhalt dann der anderen Variablen zuweisen. Mit A und B können einige Rechenschritte durchgeführt werden. C und D können als Zwischenspeicher dienen und werden später noch als Zähler für Zählschleifen gebraucht.

 

4: A = 0...15
5: Ziel 1...9 = A
  (B, C, D, Dout, Dout 0, Dout.1, Dout.2, Dout.3, PWM)
6: A = Quelle 1...9
  
(B, C, D, Din, Din.0, Din.1, Din.2, Din.3, ADC)
7: A = Ausdruck 1...10
   (A + 1,  A = A – 1, A + B,  A = A – B,  A * B, A / B, A And B, A Or B,  A Xor B, Not A)

Die folgenden Beispiele stehen auskommentiert am Anfang des Quelltextes. Man kann die Programme über die Tasten eingeben oder (solange der Controller noch auf dem STK steckt) die Kommentarzeichen entfernen und das jeweilige Programm per Bascom ins EEPROM übertragen. Diese zeitsparende Methode hat sich während der Firmware-Entwicklung bewährt.

 
 
'Binärzähler:
'Dat = &H71 : Writeeeprom Dat , 0     'A = A + 1
'Dat = &H54 : Writeeeprom Dat , 1     'Dout = A

'Dat = &H29 : Writeeeprom Dat , 2     '1000 ms
'Dat = &H33 : Writeeeprom Dat , 3     'Adr = Adr - 3
'Analog-Digitalwandler und Ausgangsport
'Dat = &H69 : Writeeeprom Dat , 0     'A =  ADC
'Dat = &H54 : Writeeeprom Dat , 1     'Dout = A

'Dat = &H29 : Writeeeprom Dat , 2     '1000 ms
'Dat = &H33 : Writeeeprom Dat , 3     'Adr = Adr - 3
'Digitalwandler und PWM
'Dat = &H69 : Writeeeprom Dat , 0    'A =  ADC
'Dat = &H59 : Writeeeprom Dat , 1    'PWM =A
'Dat = &H54 : Writeeeprom Dat , 2    'Dout = A
'Dat = &H29 : Writeeeprom Dat , 3    '
1000 ms
'Dat = &H34 : Writeeeprom Dat , 4    '
Adr = Adr - 3


Download: TPS3



'--------------------------------------------------------------
' Tasten-programmierbare Steuerung TPS
' Test 3: Variablen und Rechenbefehle
'--------------------------------------------------------------


Dim A As Byte
Dim B As Byte
Dim C As Byte
Dim D As Byte


Config Adc = Single , Prescaler = Auto , Reference = Off
Start Adc
Config Timer1 = Pwm , Prescale = 8 , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down
Start Timer1

...

Ausfuehren:
Adr = 0
Do
Readeeprom Eebyte , Adr
Adr = Adr + 1
Dat = Eebyte And 15
Kom = Eebyte / 16
If Kom = 1 Then '1: Direkte Portausgabe
Portd = 255 - Dat 'invertierte Portausgabe wegen STK500
End If
If Kom = 2 Then '2: Wartezeit
If Dat = 0 Then Waitms 1
If Dat = 1 Then Waitms 2
If Dat = 2 Then Waitms 5
If Dat = 3 Then Waitms 10
If Dat = 4 Then Waitms 20
If Dat = 5 Then Waitms 50
If Dat = 6 Then Waitms 100
If Dat = 7 Then Waitms 200
If Dat = 8 Then Waitms 500
If Dat = 9 Then Waitms 1000
If Dat = 10 Then Waitms 2000
If Dat = 11 Then Waitms 5000
If Dat = 12 Then Waitms 10000
If Dat = 13 Then Waitms 20000
If Dat = 14 Then Waitms 30000
If Dat = 15 Then Waitms 60000
End If
If Kom = 3 Then '3: Sprung - relativ
Adr = Adr - 1
Adr = Adr - Dat
End If
If Kom = 4 Then
A = Dat
End If
If Kom = 5 Then
If Dat = 1 Then B = A 'Variablen
If Dat = 2 Then C = A
If Dat = 3 Then D = A
If Dat = 4 Then Portd = 255 - A 'Port
If Dat = 5 Then
If A.0 = 0 Then Portd.0 = 0 Else Portd.0 = 1 'Portbits
End If
If Dat = 6 Then
If A.0 = 0 Then Portd.1 = 0 Else Portd.1 = 1
End If
If Dat = 7 Then
If A.0 = 0 Then Portd.2 = 0 Else Portd.2 = 1
End If
If Dat = 8 Then
If A.0 = 0 Then Portd.3 = 0 Else Portd.3 = 1
End If
If Dat = 9 Then
Dd = A * 17 'PWM
Pwm1a = Dd 'PWM
End If
End If
If Kom = 6 Then
If Dat = 1 Then A = B 'Variablen
If Dat = 2 Then A = C
If Dat = 3 Then A = D
If Dat = 4 Then A = Pinb 'Port
If Dat = 5 Then A = Portb.0 'Portbits
If Dat = 6 Then A = Portb.1
If Dat = 7 Then A = Portb.2
If Dat = 8 Then A = Portb.3
If Dat = 9 Then
Dd = Getadc(4) 'ADC
Dd = Dd / 64
A = Dd
End If
End If
If Kom = 7 Then
If Dat = 1 Then A = A + 1
If Dat = 2 Then A = A - 1
If Dat = 3 Then A = A + B
If Dat = 4 Then A = A - B
If Dat = 5 Then A = A * B
If Dat = 6 Then A = A / B
If Dat = 7 Then A = A And B
If Dat = 8 Then A = A Or B
If Dat = 9 Then A = A Xor B
If Dat = 10 Then A = Not A
A = A And 15
End If

Loop
End If

zurück 
weiter

   


Elektronik-Labor  Projekte   TPS