Hallo,
ich hab das jetzt mal versucht umzusetzen. Leider ohne irgendeinen Erfolg. Es tut sich einfach nichts... 
Hab unten mal den aktuellen Code angehängt.
Eigentlich soll folgendes funktionieren:
Ich sende 4 Ziffern, bsp.:
5049 (50 für PORTD.6 und 49 für "an")
5050 (50 für PORTD.6 und 50 für "aus")
5159 (51 für PORTD.7 und ...)
Leider scheint bei der Übertragung so einiges nicht zu funktionieren. Ich verwende als UART-to-USB Converster ein mysmart USB MK II. Ich habe die RXD und die TXD Leitung angeschlossen und die Masse verbunden. Komischerweise hängt sich das Teil fast immer auf. Verbinde ich die Masse nicht passiert das nicht, aber dann bekomm ich für jedes gesendete Zeichen einen komischen Schnörkel zurück.
Code:
' #############################################################
' #### USB-IO-plus
' #### by Jonathan Lorenz $PROG &H00,&H00,&H00,&H00' generated. Take care that the chip supports all fuse bytes.$PROG &H00,&H00,&H00,&H00' generated. Take care that the chip supports all fuse bytes.$PROG &H00,&H00,&H00,&H00' generated. Take care that the chip supports all fuse bytes.$PROG &H00,&H00,&H00,&H00' generated. Take care that the chip supports all fuse bytes.
' #### USBtoUART -> AVR
' #### Interface: GPIO, ADC, PWM, I2C, etc. (->Datasheet AVR)
' #############################################################
' #### empfange Anweisungen vom PC über USBtoUART
' #### setzen oder lesen der Pins
' #### Steuerung der Schnittstellen
' #############################################################
' #### getting instructions from PC over USBtoUART
' #### writing or reading the pins
' #### driving the Interfaces
' #############################################################
' #### Bascom-AVR IDE [1.11.9.8]
' #############################################################
$regfile = "M8def.dat" '.dat-file ATmega8'
$crystal = 8000000 'Taktfrequenz 8MHz'
$hwstack = 350 'Größe Hardwarestack'
$swstack = 350 'Größe Softwarestack'
$framesize = 200 'Größe Frame'
$baud = 19200 'Baudrate UART
'Tccr1a = &B10100010 'initialisieren der PWM-Frequenz 30,52 Hz bei 9 Bit
'Tccr1b = &B10000010 'initialisieren der PWM-Frequenz 30,52 Hz bei 9 Bit
'Declare Sub Empfang()
Declare Sub Verarbeitung()
Declare Sub Setzen()
'Config Adc = Single , Prescaler = Auto , Reference = Avcc
'Start Adc
Config Lcdpin = Pin , Db4 = Portb.1 , Db5 = Portb.2 , Db6 = Portd.5 , Db7 = Portb.7 , E = Portd.3 , Rs = Portd.2
Config Lcd = 16 * 2
Config Portd.6 = Output
Config Portd.7 = Output
Config Portb.0 = Output
Dim I as Byte ' Splitting der Hauptschleife
Dim Empfang_string As String * 10
Dim Port As String * 10
Dim Wert As String * 10
Dim B_port As Byte
Dim B_wert As Byte
Dim Zaehler As Byte
Portd.6 = 0
Portd.7 = 0
Portb.0 = 0
Zaehler = 0
Enable Interrupts 'Interrupts global zulassen
Enable Urxc 'Interrupt URXC einschalten
On Urxc Empfangen 'Interrupt-Routine setzen
Cls
Cursor On Blink
Lcd "USB-IO_plus"
Waitms 150
Locate 2 , 1
Lcd "."
Waitms 150
Locate 2 , 2
Lcd "."
Waitms 150
Locate 2 , 3
Lcd "."
Waitms 150
Locate 2 , 4
Lcd "initialisiert"
' #############################################################
' #### Hauptprogramm
' #############################################################
Do
' Toggle Portb.0 'Blinkende LED zur Kontrolle des Programmdurchlaufes
' For I = 0 To 200
' Waitms 1
' Next I
' Empfang
' Verarbeitung
' Setzen
Loop
End 'end program
' #############################################################
' #### UART Empfang
' #############################################################
'Sub Empfang()
' If Ischarwaiting() = 1 Then
' Input Empfang_string
' If Zaehler < 3 Then
' Incr Zaehler
' Else
' Zaehler = 0
' End If
' Else
' !nop
' End If
'End Sub
' #############################################################
' #### Datenverarbeitung
' #############################################################
Sub Verarbeitung()
Port = Left(empfang_string , 2) 'Byte 1 und 2 extrahieren
Wert = Mid(empfang_string , 3 , 2) 'Byte 3 und 4 extrahieren
B_port = Val(port) 'String zu Wert konvertieren
B_wert = Val(wert) 'String zu Wert konvertieren
End Sub
' #############################################################
' #### Ausgänge setzen
' #############################################################
Sub Setzen()
Select Case B_port 'zu setzenden Pin auswählen
Case 50 : If B_wert = 49 Then '50=2 | 49=1
Portd.6 = 1
Elseif B_wert = 50 Then ' | 50=2
Portd.6 = 0
End If
Case 51 : If B_wert = 49 Then '51=3 | 49=1
Portd.7 = 1
Elseif B_wert = 50 Then ' | 50=2
Portd.7 = 0
End If
Case Else : !nop
End Select
End Sub
' #############################################################
' #### UART Interrupt
' #############################################################
Empfangen:
Empfang_string = Waitkey() 'Zeichen aus dem Buffer einlesen
Verarbeitung
Setzen
Toggle Portb.0
Return
' #############################################################
' #### Stand 16|12|2011
' #############################################################
Lesezeichen