Elektronenrechner 4 + 4 = 5 Bit
Mit einem Mikrocomputer
ATMEL AVR Tiny2313V wird eine kleine rechnende Schaltung aufgebaut.
Der Rechner hat zwei
gespeicherte Programme:
1. Einen
Vorwärts-Rückwärtszähler
2. Einen 4-Bit-Binäradierer
Mit Schalter 1 wird der
Rechner eingeschaltet (EIN = oben = on).
Je nach Stellung des
Schalters 8 beim Einschalten wird gezählt (oben = on) oder addiert (unten = off).
Das Zählen erfolgt langsam
aus einer Verzögerungsschleife im Rechner heraus.
Beim Zählen kann mit
Schalter 9 die Zählrichtung gewechselt werden (oben : vorwärts). Die Ausgabe
erfolgt im Binärcode mit den 6 Leuchtdioden.
Beim Addieren werden die
Schalter 1 bis 8 zur Zahleneingabe genutzt:
Schalter 6..7..8..9 stellen den Summand A (4 Bit) dar;
niederwertigstes Bit auf Schalter 9
Schalter 2..3..4..5 stellen den Summand B (4 Bit) dar;
niederwertigstes Bit auf Schalter 5
oben = on : Eins
unten = off : Null
Die Leuchtdioden geben das
Ergebnis mit 5 Bit aus (AN : Eins).
Vorderseite
Der Rechner ist im Addiermodus, B = 3, A = 1, Summe =
4 !
Als Basis dient eine
Lochrasterplatine mit Lötaugen.
(Der Taster ist für eine
spätere Erweitung vorgesehen.)
Schaltplan
Programmlisting
Der Mikrocomputer arbeitet
mit internem Takt von ca. 0,5 MHz.
.include "tn2313def.inc"
.org 0x000
; es soll port b auf bit
0-5 zählen oder addieren
rjmp reset
reset:
ldi r19, 0x3f
;bit 0-5 out
out ddrb,r19
ldi r19, 0x3f
;bit 5-0 high portd fuer pullup
out portd,r19
ldi r19, 0x03
;bit 1-0 high porta fuer pullup
out porta,r19
ldi r19, 0
in r18,pind ; wenn 0:
zaehlen, wenn 1: addieren logik invers
andi r18,0x10 ;port d
bit 4
breq neuzaehl
neuadd:
in r18,pina
com r18
andi r18,0x03
in r17,pind
com r17
andi r17,0x02
add r17,r17
add r18,r17
in r17,pind
com r17
andi r17,0x01
add r17,r17
add r17,r17
add
r17,r17
add r18,r17 ; in r18 steht der linke operand (4 bit)
in r17,pind
com r17
andi r17, 0x04
add r17,r17
add r18,r17
in r17,pind
com r17
andi r17, 0x08
asr r17
add r18,r17
in r17,pind
com r17
andi r17, 0x10
asr r17
asr r17
asr r17
add r18,r17
in r17,pind
com r17
andi r17, 0x20
asr r17
asr r17
asr r17
asr r17
asr r17
add r18,r17
; dez:
; ldi r19,0
; ldi r20,0
; bst r18,4
; ldi r19,6
; ldi r20,1
; bst r18,3
; ende dez
andi r18,0x1f
com r18
out portb, r18
rjmp
neuadd
neuzaehl: ;Hauptschleife
in r18,pind
andi r18,0x20 ;port d bit
5
breq nieder
inc r19
rjmp ausgeb
nieder: dec r19
ausgeb: out portb,r19
; time-loops ca
250 ms
ldi
r20,120 ; anzahl aussloops
aussloop:
; verzoeg fuer 4 MHz/8 int
Oszil
ldi r21,250 ; 250
ca. 2 ms
innloop: ; 4 zyklen in schleife
dec r21
nop
brne innloop
;
dec r20
brne aussloop
; ende time-loops
rjmp neuzaehl
Die Schalter schalten Ein
gegen Masse, die Leuchtdioden werden auch gegen Masse eingeschaltet.
Daher müssen die binären
Werte entsprechend invertiert werden.