ok..hier....das ganz lies noch einen temperatursensor aus..
Code:
$regfile = "m128def.dat" ' Bei Mega 128 "
$framesize = 60
$swstack = 60
$hwstack = 60
$crystal = 16000000 'Quarzfrequenz
$baud = 19200 'Baudrate für Funkmodul
$baud1 = 9600 'Baudrate für MAX
Dim A As Single
Dim B As Single
Dim Z As Byte
Dim Zahl As Single
Dim Licht As String * 7
'Aus- und Eingänge
Ddrb = &B11000000
'I2C Deklarationen
Config Scl = Portd.0
Config Sda = Portd.1
Declare Function I2cstart() As Byte
Declare Sub Ic2send(byval Databyte As Byte) As Byte
Declare Sub Funtion I2creceive(byref Databyte As Byte) As Byte
Declare Sub Sub I2cstop
'Deklaration abgeschlossen
Config Pine.2 = Output
Rdy_hostempfangsbereit Alias Porte.2 'Auf Low setzen wenn Empfangsbereit für Daten vom Funkmodul
Config Pine.5 = Input
Bsy_funkmodulsendebereit Alias Porte.5 'Ist Low wenn Funkmodul frei zum senden
Open "com2:" For Binary As #2 'Ausgabe über zweite serielle Schnittstelle (MAX)
Sound Portg.2 , 2000 , 800 'gibt einen langen Kontrollton aus
Sound Portg.2 , 1000 , 600 'gibt einen kurzen Kontrollton aus
Config Serialin = Buffered , Size = 120
Config Serialout = Buffered , Size = 120
Config Serialout1 = Buffered , Size = 120
Enable Interrupts
' ---------------------------------------------------
Print "### Initalisierung erfolgreich abgeschlossen! ###" 'Kopfzeilen senden
Print "### Dieses Programm wurde im Rahmen einer Facharbeit von Stefan Rau geschrieben. ###"
Print ""
Wait 1
Print "### Messung initalisieren... ###"
Wait 1
'i2cstart
Dim Device As Byte
Dim Deviceread As Byte
Dim Lowtemp As Byte
Dim Hightemp As Byte
Dim Value As Word '!!!!!!!
I2cinit
Device = 144 'Wenn alle Adressleitungen des 1621 auf GND sind.
Deviceread = 145
'----------------------------------------------Hauptprogramm------------------------------------------------------------
B = 0
Do
I2cstart
I2cwbyte Device
I2cwbyte &HEE 'Temperaturmessung anstoßen
I2cstop
I2cstart
I2cwbyte Device
I2cwbyte &HAA 'Temperaturmessung Lesekommando
I2cstop
I2cstart
I2cwbyte Deviceread
I2crbyte Lowtemp , Ack 'LSB holen
I2crbyte Hightemp , Nack 'MSB holen
I2cstop
Value = Lowtemp * 10
If Hightemp = 128 Then
Value = Value + 5
End If
Print "Temp:" ; Value
B = B + 1
If B = 15 Then Sound Portg.2 , 20 , 800 : B = 0
Waitms 500 'Pause bis zur nächsten Messung
'lichtmodus überprüfen
Rdy_hostempfangsbereit = 0 'empfangsbereitschaft am Funkmodul herstellen
Do
Zahl = Zahl + 1
Z = Inkey()
If Z <> 0 Then Licht = Licht + Chr(z)
If Len(licht) = 7 Or Zahl = 20 Then Exit Do
Loop
If Len(licht) = 7 Then
Tempo = Mid(licht , 7 , 1)
Modus = Val(tempo)
Select Case Modus
Case 0 'beide Modis aus
Portb.6 = 0
Portb.7 = 0
Case 1 '2. Blinkmodus an
Portb.6 = 1
Portb.7 = 0
Case 2 'Landelichter an
Portb.6 = 0
Portb.7 = 1
Case 3 'beide Modis an
Portb.6 = 1
Portb.7 = 1
End Select
End If
'lichtmodustest
'Portb.6 = 1
'Wait 5
'Portb.6 = 0
'Wait 5
'ende lichtmodustest
Loop
End
Lesezeichen