Hey,
ich bin zur Zeit daran mit einem Temperatur- und
Feuchtigkeitssensor(Sensirion SHT71) per Assembler durch ein Display
Temperatur und Feuchtigkeit aus zu geben. Und ich wollte mal fragen ob
jemand da schon Routinen für den ATmega8 geschrieben hat in Assembler,
weil in C gibts die überall wie Sand am Meer.
Nur ich würde es gern in Assembler haben.
Ich hab schon angefangen nur bin ich mir nicht sicher ob das
funktionieren würde. Bzw. wies weiter geht^^.
Zum Aufbau, ich hab zwischen Vdd und Data wie beschrieben einen 10kOhm
Widerstand hingelötet.
Ich habe nur noch nicht wirklich kapiert wie es weiter geht nach dem ich
die Verbindung aufgebaut habe. Also gerade wenn ich eine
Temperaturabfrage machen will.
Hier mal mein Quellcode bis jetzt:
> Und ich wollte mal fragen ob jemand da schon Routinen für den ATmega8> geschrieben hat in Assembler, weil in C gibts die überall wie> Sand am Meer. Nur ich würde es gern in Assembler haben.
Warum lässt du nicht einfach den C-Code durch den Compiler und siehst
dir an, was da rauskommt?
> Ich habe nur noch nicht wirklich kapiert wie es weiter geht...
Wie wäre es mit Reverse Engineering des C-Codes?
Lothar Miller schrieb:>> Ich habe nur noch nicht wirklich kapiert wie es weiter geht...> Wie wäre es mit Reverse Engineering des C-Codes?
Ergäntung von mir:
Wie wäre es mit 'gleich in C schreiben'
Komm jetzt nicht mit 'Ich kann kein C'. Denn: Assembler kannst du ja
auch nicht, wenn ich mir den Code da oben so ansehe.
Hi
>Komm jetzt nicht mit 'Ich kann kein C'. Denn: Assembler kannst du ja>auch nicht, wenn ich mir den Code da oben so ansehe.
Bleibt nur die Frage nach den kleineren Übel.
MfG Spess
Karl heinz Buchegger schrieb:> Komm jetzt nicht mit 'Ich kann kein C'. Denn: Assembler kannst du ja> auch nicht, wenn ich mir den Code da oben so ansehe.
Wieso was soll mit dem Code denn sein?Ich weiß dass ich die rcall auch
direkt machen kann...aber was soll denn damit sein?
spess53 schrieb:> Ich habe das mal für den SHT11 gemacht. Vielleicht hilft es dir.
Danke für die Hilfe, ist der SHT11 nicht von den Befehlen her gleich wie
der SHT71?
So ich habe nun einen etwas anderen Code geschrieben...nur ist mir noch
nicht ganz schlüssig, warum er nicht funktioniert(ist nur die Routine,
aber schon mit der funktioniert es nicht und ich weiß nicht warum):
1
.equ SENSOR_PORT = PORTC
2
.equ SENSOR_DDR = DDRC
3
.equ SENSOR_PIN = PINC
4
.equ PIN_DATA = 4
5
.equ PIN_CLK = 3
6
7
.def rhl=r8
8
.def rhh=r9
9
10
.def tl=r10
11
.def th=r11
12
13
.def rel=r12
14
.def reh=r13
15
16
.def trt=r14
17
18
.def rhrt=r15
19
20
.ifndef XTAL
21
.equ XTAL = 4000000
22
.endif
23
24
;Kurze Pause
25
shortbreak: ; 50us Pause
26
ldi temp1, ( XTAL * 50 / 3 ) / 1000000
27
shortbreak_:
28
dec temp1
29
brne shortbreak_
30
ret ; wieder zurück
31
32
dlow: sbi SENSOR_DDR,PIN_DATA ;set data low
33
rjmp rdelay
34
35
dhigh: cbi SENSOR_DDR,PIN_DATA ;set data high
36
rjmp rdelay
37
38
39
clow: cbi SENSOR_PORT,PIN_CLk ;set clock low
40
rjmp rdelay
41
42
chigh: sbi SENSOR_PORT,PIN_CLK ;set clock high
43
44
rdelay: push temp1 ;1 msek delay to allow the lines to settle