Da
mir zur Programmierung die Verwendung des Terminals in Lpmikros.exe
nützlich erschien, habe ich Ihre Unterprogramme WrCOM und RdCOM
entsprechend verändert.
Folgende Schritte sind dann zur Verwendung des Terminals nötig:
1. Programm mit LPmikroISP.exe in den Controller laden
2. LPmikroISP.exe schließen
3. Lpmikros.exe starten und Terminal verwenden
Leider lassen sich die Fuses des ATtiny26 mit LPmikroISP.exe nicht ändern.
Anpassung der seriellen Schnittstelle an den internen Oszillator mit 1 MHz:
;RS232test1,
N
Bytes
senden
;Gesendet
wird
der
Buchstabe
U
(0b01010101)
;Die
neuen
Verzögerungswerte
wurden
durch
Dreisatz
ermittelt
;Der
Grundtakt
des
tn26=1MHz,
des
tn13=1,2MHz
;Delay
für
1,5Bitlängen=58/1,2=48,333
;Delay
für
1
Bitlänge
=38/1,2=31,666
;Danach
experimentell
korrigiert
.include
"tn26def.inc"
.def
A
=
r16
.def
Delay
=
r17
.def
Count
=
r18
.def
Count2
=
r19
;Port
B
.equ
TXD
=
1
.equ
RXD
=
2
.equ
Del_1
=
30
.equ
Del_15
=
48
rjmp
Anfang
Anfang:
ldi
A,LOW(RAMEND)
;Stackpointer
setzen
out
SP,A
sbi
ddrb,TXD
;Datenrichtung
TXD
Schleife:
rcall
RdCOM
mov
Count2,A
Cnt:
ldi
A,85
rcall
WrCOM
dec
Count2
brne
Cnt
rjmp
Schleife
RdCOM:
sbis
pinb,RXD
;Empfangen
rjmp
RdCOM
ldi
Delay,Del_15
D1:
dec
Delay
brne
D1
ldi
A,0
ldi
Count,8
L1:
lsr
A
sbic
pinb,RXD
ori
A,128
ldi
Delay,Del_1
D2:
dec
Delay
brne
D2
dec
Count
brne
L1
ldi
Delay,Del_1
D3:
dec
Delay
brne
D3
com
A
ret
WrCOM:
sbi
portb,TXD
;Senden
ldi
Delay,Del_1
D4:
dec
Delay
brne
D4
ldi
Count,8
L2:
sbrc
A,0
rjmp
OFF
rjmp
ON
ON
:
sbi
portb,TXD
rjmp
BitD
OFF:
cbi
portb,TXD
rjmp
BitD
BitD:
ldi
Delay,Del_1
D5:
dec
Delay
brne
D5
lsr
A
dec
Count
brne
L2
cbi
PORTB,TXD
ldi
Delay,Del_1
D6:
dec
Delay
brne
D6
ret