angelhaken
09.02.2005, 13:07
Guten Tag zusammen,
nach langem suchen im Internet und auf unendlich vielen Hotlines müssen wir jetzt leider endgültig feststellen, dass wir an dieser stelle nicht weiterkommen.
Es geht um folgendes:
Wir, also drei meiner Kollegen und ich, sind in Mönchengladbach auf der Fachhochschule für Technik und Medien und streben hier unseren Elektrotechnikertitel an. Momentan haben wir die so genannten Projektwochen, d.h. wir selbst haben uns eine Problemstellung gesucht, die es zu lösen gilt. Wir nennen unser Thema „Entwicklung und Aufbau eines Medikamenten-Einnahme-Erinnerungs-Timer“ kurz MEET. Wir wollen also ein Batteriebetriebenes Handgerät entwickeln mit der M I Unit als Herzstück. Ein Arzt soll später über eine Visual Basic 6.0 Oberfläche die Möglichkeit haben:
1. Einen Medikamentennamen (z.B. „Hustentropfen“)
2. Eine Menge (z.B. „3“)
3. Eine Einheit (z.B. „ml“)
4. Eine Einnahme Empfehlung (z.B. „mit Wasser verdünnt einnehmen“)
5. Eine Uhrzeit zu der das Medikament eingenommen werden soll (z.B. „14.00h“)
6. Ein Startdatum ab wann das Medikament zu ersten mal eingenommen wird (z.B. „22.02.2005“)
und 7. Einen Intervall (z.B. ab Startdatum „täglich“ oder „alle zwei Tage“….)
auf den Mikrokontroller zu schicken und zu speichern.
Der Kontroller soll dann die mit der DCF-77 empfangene Uhrzeit mit der vom Arzt angegebenen Uhrzeit und Datum vergleichen und bei Übereinstimmung die Punkte 1 bis 4 auf das Vierzeilige Display ausgeben.
Hier kommt unser Problem:
Wie bekommen wir die Die Punkte 1 – 6 in dem EEPROM des Controllers im laufenden Betrieb als Zeichenketten so gespeichert, das einzelne Teile z.B. die Uhrzeit ausgelesen werden können um sie zu vergleichen um dann einzelne Teile wie z.B. Med.Name, Menge, Einheit, Empfehlung passend zu der richtigen Uhrzeit ausgegeben werden können auch wenn mehrere dieser Punkte 1 – 6 vorhanden sind ( Meist gilt es ja mehrere Medikamente zu verschiedenen Zeiten einzunehmen ).
Da wir dazu die genauen Angaben der Speicheradressen der einzelnen String angeben müssten ist diese Problem wahrscheinlich ja nur über die Assemblerprogrammierung möglich. (Vorschläge mit C-Control währen noch lieber)
Den passenden Assembler der dem Buch mit der Bestellnummer Conrad : 919179 beiliegt ist laut Aussagen mehrerer ihrer Kollegen nicht mehr erhältlich!
Bitte schicken sie uns Lösungsansätze oder Lösungen per Email zu!
Michael.Erkes@t-online.de;
Micha2010@freenet.de;
Herrrossy1@gmx.de;
Cruecke@web.de
Das Fach Projektarbeit wird zu einer eigenen Abschluss - Zeugnisnote zum Techniker und ist somit sehr wichtig für uns.
Wir müssen bis Mitte nächster Woche damit fertig sein.
Würden uns über schnelle Antworten und Lösungsvorschläge freuen, da wir unter starken Zeitdruck stehen!
Mit freundlichen Grüßen
Michael E.
Rainer O.
Christian R.
Ronald G.
O:)
'*** Daten-Definition ***
define lcd_buf byte
define lcd_param byte
define daten byte
define position byte
define light port[2]
light=on
' *** Definition LCD-Ports ***
define lcd_port byteport[2]
define lcd_rs port[14]
define lcd_rw port[13]
define lcd_e port[15]
'*** ASCII-Codes ***
define A_ &H41
define B_ &H42
define C_ &H43
define D_ &H44
define E_ &H45
define F_ &H46
define G_ &H47
define H_ &H48
define I_ &H49
define J_ &H4A
define K_ &H4B
define L_ &H4C
define M_ &H4D
define N_ &H4E
define O_ &H4F
define P_ &H50
define Q_ &H51
define R_ &H52
define S_ &H53
define T_ &H54
define U_ &H55
define V_ &H56
define W_ &H57
define X_ &H58
define Y_ &H59
define Z_ &H5A
define ka_ &H61
define kb_ &H62
define kc_ &H63
define kd_ &H64
define ke_ &H65
define kf_ &H66
define kg_ &H67
define kh_ &H68
define ki_ &H69
define kj_ &H6A
define kk_ &H6B
define kl_ &H6C
define km_ &H6D
define kn_ &H6E
define ko_ &H6F
define kp_ &H70
define kq_ &H71
define kr_ &H72
define ks_ &H73
define kt_ &H74
define ku_ &H75
define kv_ &H76
define kw_ &H77
define kx_ &H78
define ky_ &H79
define kz_ &H7A
define A1_ &H31
define A2_ &H32
define A3_ &H33
define A4_ &H34
define A5_ &H35
define A6_ &H36
define A7_ &H37
define A8_ &H38
define A9_ &H39
define LEERZ &H20
define MINUS &H2D
define NULL &H30
define GLEICH &H3D
define DOPPELPUNKT &H3A
define PUNKT &H2E
define KOMMA &H2C
define FRAGEZ &H3F
'*** Programmoperationen ***
GoSub LCD_INIT
#loop
position = 0
lcd_param = 1: GoSub LCD_GOTOLINE
lcd_param = Null + Day / 10: GoSub LCD_WRITECHAR
lcd_param = Null + Day Mod 10: GoSub LCD_WRITECHAR
lcd_param = PUNKT: GoSub LCD_WRITECHAR
lcd_param = Null + Month / 10: GoSub LCD_WRITECHAR
lcd_param = Null + Month Mod 10: GoSub LCD_WRITECHAR
lcd_param = PUNKT: GoSub LCD_WRITECHAR
lcd_param = Null + Year / 10: GoSub LCD_WRITECHAR
lcd_param = Null + Year Mod 10: GoSub LCD_WRITECHAR
lcd_param = leerz: GoSub LCD_WRITECHAR
lcd_param = leerz: GoSub LCD_WRITECHAR
lcd_param = leerz: GoSub LCD_WRITECHAR
lcd_param = leerz: GoSub LCD_WRITECHAR
lcd_param = leerz: GoSub LCD_WRITECHAR
lcd_param = leerz: GoSub LCD_WRITECHAR
lcd_param = Null + Hour / 10: GoSub LCD_WRITECHAR
lcd_param = Null + Hour Mod 10: GoSub LCD_WRITECHAR
lcd_param = doppelpunkt: GoSub LCD_WRITECHAR
lcd_param = Null + Minute / 10: GoSub LCD_WRITECHAR
lcd_param = Null + Minute Mod 10: GoSub LCD_WRITECHAR
lcd_param = 2: GoSub LCD_GOTOLINE
lcd_param = M_: GoSub LCD_WRITECHAR
lcd_param = e_: GoSub LCD_WRITECHAR
lcd_param = d_: GoSub LCD_WRITECHAR
lcd_param = i_: GoSub LCD_WRITECHAR
lcd_param = k_: GoSub LCD_WRITECHAR
lcd_param = a_: GoSub LCD_WRITECHAR
lcd_param = m_: GoSub LCD_WRITECHAR
lcd_param = e_: GoSub LCD_WRITECHAR
lcd_param = n_: GoSub LCD_WRITECHAR
lcd_param = t_: GoSub LCD_WRITECHAR
lcd_param = doppelpunkt: GoSub LCD_WRITECHAR
lcd_param = 4: GoSub LCD_GOTOLINE
lcd_param = D_: GoSub LCD_WRITECHAR
lcd_param = o_: GoSub LCD_WRITECHAR
lcd_param = s_: GoSub LCD_WRITECHAR
lcd_param = i_: GoSub LCD_WRITECHAR
lcd_param = s_: GoSub LCD_WRITECHAR
lcd_param = doppelpunkt: GoSub LCD_WRITECHAR
'******** Eingabe ***************
'************************************************* ************************************************** **********
#init1
lcd_param = 3: GoSub LCD_GOTOLINE
GoTo eingabe1
#eingabe1
baud r1200
get daten
'Andieser Stelle soll nicht das von Vicual Basic 6
'eingegebene Zeichen/Wort (hier ein bestimmtes Medikament)
'auf dem Display erscheinen sondern sollte im EEPROM
'gespeichert und zu einer gewissen Uhrzeit ausgegeben. werden)
'Geht das nur über Assembler??? Und wenn ja - wie???
'Vielen Dank im Voraus.
position = position + 1
If position = &H15 Then GoTo posi
If daten = leerz Then GoTo init2
lcd_param = daten: GoSub LCD_WRITECHAR
GoTo eingabe1
#init2
lcd_param = 4: GoSub zeile4
GoTo eingabe2
#eingabe2
baud r1200
get daten
position = position + 1
if position=&h0e then goto loop
if daten = leerz then goto loop
lcd_param = daten: GoSub LCD_WRITECHAR
GoTo eingabe2
#zeile4
If lcd_param = 4 Then lcd_param = &HE6
GoTo LCD_WRITECMD
#posi
position = 0
GoTo init2
'************************************************* ************************************************** ***************
'*** LCD_Interface ***
#LCD_INIT
' alle ports 0
lcd_port = OFF
' 8-Bit-Modus aktivieren
lcd_param = &H34: GoSub LCD_WRITECMD
' mit 8-Bit-Command in 4-Bit-Modus umschalten
lcd_port=&B00000010
tog lcd_e
tog lcd_e
' ab jetzt 4-Bit-Modus
lcd_param = &H9: GoSub LCD_WRITECMD ' Umstellung auf 4 Zeilen Modus
lcd_param = &H28: GoSub LCD_WRITECMD
lcd_param = &HC: GoSub LCD_WRITECMD
' Display loeschen
#LCD_CLS
lcd_param = &H2: GoSub LCD_WRITECMD
lcd_param = &H1: GoSub LCD_WRITECMD
Return
' Zeilenwechsel
#LCD_GOTOLINE
If lcd_param = 1 Then lcd_param = &H80
If lcd_param = 2 Then lcd_param = &H94
If lcd_param = 3 Then lcd_param = &HC0
If lcd_param = 4 Then lcd_param = &HD4
GoTo LCD_WRITECMD
' LCD-Kommando
#LCD_WRITECMD
lcd_buf = OFF
GoTo LCD_WRITE
' Zeichenausgabe
#LCD_WRITECHAR
lcd_buf = &B00100000
' Kommando oder Zeichen an Display senden
#LCD_WRITE
lcd_port = lcd_buf or (lcd_param shr 4) ' Hi-Nibble
tog lcd_e
tog lcd_e
lcd_port = lcd_buf Or (lcd_param And &HF) ' Lo-Nibble
tog lcd_e
tog lcd_e
Return
](*,)
nach langem suchen im Internet und auf unendlich vielen Hotlines müssen wir jetzt leider endgültig feststellen, dass wir an dieser stelle nicht weiterkommen.
Es geht um folgendes:
Wir, also drei meiner Kollegen und ich, sind in Mönchengladbach auf der Fachhochschule für Technik und Medien und streben hier unseren Elektrotechnikertitel an. Momentan haben wir die so genannten Projektwochen, d.h. wir selbst haben uns eine Problemstellung gesucht, die es zu lösen gilt. Wir nennen unser Thema „Entwicklung und Aufbau eines Medikamenten-Einnahme-Erinnerungs-Timer“ kurz MEET. Wir wollen also ein Batteriebetriebenes Handgerät entwickeln mit der M I Unit als Herzstück. Ein Arzt soll später über eine Visual Basic 6.0 Oberfläche die Möglichkeit haben:
1. Einen Medikamentennamen (z.B. „Hustentropfen“)
2. Eine Menge (z.B. „3“)
3. Eine Einheit (z.B. „ml“)
4. Eine Einnahme Empfehlung (z.B. „mit Wasser verdünnt einnehmen“)
5. Eine Uhrzeit zu der das Medikament eingenommen werden soll (z.B. „14.00h“)
6. Ein Startdatum ab wann das Medikament zu ersten mal eingenommen wird (z.B. „22.02.2005“)
und 7. Einen Intervall (z.B. ab Startdatum „täglich“ oder „alle zwei Tage“….)
auf den Mikrokontroller zu schicken und zu speichern.
Der Kontroller soll dann die mit der DCF-77 empfangene Uhrzeit mit der vom Arzt angegebenen Uhrzeit und Datum vergleichen und bei Übereinstimmung die Punkte 1 bis 4 auf das Vierzeilige Display ausgeben.
Hier kommt unser Problem:
Wie bekommen wir die Die Punkte 1 – 6 in dem EEPROM des Controllers im laufenden Betrieb als Zeichenketten so gespeichert, das einzelne Teile z.B. die Uhrzeit ausgelesen werden können um sie zu vergleichen um dann einzelne Teile wie z.B. Med.Name, Menge, Einheit, Empfehlung passend zu der richtigen Uhrzeit ausgegeben werden können auch wenn mehrere dieser Punkte 1 – 6 vorhanden sind ( Meist gilt es ja mehrere Medikamente zu verschiedenen Zeiten einzunehmen ).
Da wir dazu die genauen Angaben der Speicheradressen der einzelnen String angeben müssten ist diese Problem wahrscheinlich ja nur über die Assemblerprogrammierung möglich. (Vorschläge mit C-Control währen noch lieber)
Den passenden Assembler der dem Buch mit der Bestellnummer Conrad : 919179 beiliegt ist laut Aussagen mehrerer ihrer Kollegen nicht mehr erhältlich!
Bitte schicken sie uns Lösungsansätze oder Lösungen per Email zu!
Michael.Erkes@t-online.de;
Micha2010@freenet.de;
Herrrossy1@gmx.de;
Cruecke@web.de
Das Fach Projektarbeit wird zu einer eigenen Abschluss - Zeugnisnote zum Techniker und ist somit sehr wichtig für uns.
Wir müssen bis Mitte nächster Woche damit fertig sein.
Würden uns über schnelle Antworten und Lösungsvorschläge freuen, da wir unter starken Zeitdruck stehen!
Mit freundlichen Grüßen
Michael E.
Rainer O.
Christian R.
Ronald G.
O:)
'*** Daten-Definition ***
define lcd_buf byte
define lcd_param byte
define daten byte
define position byte
define light port[2]
light=on
' *** Definition LCD-Ports ***
define lcd_port byteport[2]
define lcd_rs port[14]
define lcd_rw port[13]
define lcd_e port[15]
'*** ASCII-Codes ***
define A_ &H41
define B_ &H42
define C_ &H43
define D_ &H44
define E_ &H45
define F_ &H46
define G_ &H47
define H_ &H48
define I_ &H49
define J_ &H4A
define K_ &H4B
define L_ &H4C
define M_ &H4D
define N_ &H4E
define O_ &H4F
define P_ &H50
define Q_ &H51
define R_ &H52
define S_ &H53
define T_ &H54
define U_ &H55
define V_ &H56
define W_ &H57
define X_ &H58
define Y_ &H59
define Z_ &H5A
define ka_ &H61
define kb_ &H62
define kc_ &H63
define kd_ &H64
define ke_ &H65
define kf_ &H66
define kg_ &H67
define kh_ &H68
define ki_ &H69
define kj_ &H6A
define kk_ &H6B
define kl_ &H6C
define km_ &H6D
define kn_ &H6E
define ko_ &H6F
define kp_ &H70
define kq_ &H71
define kr_ &H72
define ks_ &H73
define kt_ &H74
define ku_ &H75
define kv_ &H76
define kw_ &H77
define kx_ &H78
define ky_ &H79
define kz_ &H7A
define A1_ &H31
define A2_ &H32
define A3_ &H33
define A4_ &H34
define A5_ &H35
define A6_ &H36
define A7_ &H37
define A8_ &H38
define A9_ &H39
define LEERZ &H20
define MINUS &H2D
define NULL &H30
define GLEICH &H3D
define DOPPELPUNKT &H3A
define PUNKT &H2E
define KOMMA &H2C
define FRAGEZ &H3F
'*** Programmoperationen ***
GoSub LCD_INIT
#loop
position = 0
lcd_param = 1: GoSub LCD_GOTOLINE
lcd_param = Null + Day / 10: GoSub LCD_WRITECHAR
lcd_param = Null + Day Mod 10: GoSub LCD_WRITECHAR
lcd_param = PUNKT: GoSub LCD_WRITECHAR
lcd_param = Null + Month / 10: GoSub LCD_WRITECHAR
lcd_param = Null + Month Mod 10: GoSub LCD_WRITECHAR
lcd_param = PUNKT: GoSub LCD_WRITECHAR
lcd_param = Null + Year / 10: GoSub LCD_WRITECHAR
lcd_param = Null + Year Mod 10: GoSub LCD_WRITECHAR
lcd_param = leerz: GoSub LCD_WRITECHAR
lcd_param = leerz: GoSub LCD_WRITECHAR
lcd_param = leerz: GoSub LCD_WRITECHAR
lcd_param = leerz: GoSub LCD_WRITECHAR
lcd_param = leerz: GoSub LCD_WRITECHAR
lcd_param = leerz: GoSub LCD_WRITECHAR
lcd_param = Null + Hour / 10: GoSub LCD_WRITECHAR
lcd_param = Null + Hour Mod 10: GoSub LCD_WRITECHAR
lcd_param = doppelpunkt: GoSub LCD_WRITECHAR
lcd_param = Null + Minute / 10: GoSub LCD_WRITECHAR
lcd_param = Null + Minute Mod 10: GoSub LCD_WRITECHAR
lcd_param = 2: GoSub LCD_GOTOLINE
lcd_param = M_: GoSub LCD_WRITECHAR
lcd_param = e_: GoSub LCD_WRITECHAR
lcd_param = d_: GoSub LCD_WRITECHAR
lcd_param = i_: GoSub LCD_WRITECHAR
lcd_param = k_: GoSub LCD_WRITECHAR
lcd_param = a_: GoSub LCD_WRITECHAR
lcd_param = m_: GoSub LCD_WRITECHAR
lcd_param = e_: GoSub LCD_WRITECHAR
lcd_param = n_: GoSub LCD_WRITECHAR
lcd_param = t_: GoSub LCD_WRITECHAR
lcd_param = doppelpunkt: GoSub LCD_WRITECHAR
lcd_param = 4: GoSub LCD_GOTOLINE
lcd_param = D_: GoSub LCD_WRITECHAR
lcd_param = o_: GoSub LCD_WRITECHAR
lcd_param = s_: GoSub LCD_WRITECHAR
lcd_param = i_: GoSub LCD_WRITECHAR
lcd_param = s_: GoSub LCD_WRITECHAR
lcd_param = doppelpunkt: GoSub LCD_WRITECHAR
'******** Eingabe ***************
'************************************************* ************************************************** **********
#init1
lcd_param = 3: GoSub LCD_GOTOLINE
GoTo eingabe1
#eingabe1
baud r1200
get daten
'Andieser Stelle soll nicht das von Vicual Basic 6
'eingegebene Zeichen/Wort (hier ein bestimmtes Medikament)
'auf dem Display erscheinen sondern sollte im EEPROM
'gespeichert und zu einer gewissen Uhrzeit ausgegeben. werden)
'Geht das nur über Assembler??? Und wenn ja - wie???
'Vielen Dank im Voraus.
position = position + 1
If position = &H15 Then GoTo posi
If daten = leerz Then GoTo init2
lcd_param = daten: GoSub LCD_WRITECHAR
GoTo eingabe1
#init2
lcd_param = 4: GoSub zeile4
GoTo eingabe2
#eingabe2
baud r1200
get daten
position = position + 1
if position=&h0e then goto loop
if daten = leerz then goto loop
lcd_param = daten: GoSub LCD_WRITECHAR
GoTo eingabe2
#zeile4
If lcd_param = 4 Then lcd_param = &HE6
GoTo LCD_WRITECMD
#posi
position = 0
GoTo init2
'************************************************* ************************************************** ***************
'*** LCD_Interface ***
#LCD_INIT
' alle ports 0
lcd_port = OFF
' 8-Bit-Modus aktivieren
lcd_param = &H34: GoSub LCD_WRITECMD
' mit 8-Bit-Command in 4-Bit-Modus umschalten
lcd_port=&B00000010
tog lcd_e
tog lcd_e
' ab jetzt 4-Bit-Modus
lcd_param = &H9: GoSub LCD_WRITECMD ' Umstellung auf 4 Zeilen Modus
lcd_param = &H28: GoSub LCD_WRITECMD
lcd_param = &HC: GoSub LCD_WRITECMD
' Display loeschen
#LCD_CLS
lcd_param = &H2: GoSub LCD_WRITECMD
lcd_param = &H1: GoSub LCD_WRITECMD
Return
' Zeilenwechsel
#LCD_GOTOLINE
If lcd_param = 1 Then lcd_param = &H80
If lcd_param = 2 Then lcd_param = &H94
If lcd_param = 3 Then lcd_param = &HC0
If lcd_param = 4 Then lcd_param = &HD4
GoTo LCD_WRITECMD
' LCD-Kommando
#LCD_WRITECMD
lcd_buf = OFF
GoTo LCD_WRITE
' Zeichenausgabe
#LCD_WRITECHAR
lcd_buf = &B00100000
' Kommando oder Zeichen an Display senden
#LCD_WRITE
lcd_port = lcd_buf or (lcd_param shr 4) ' Hi-Nibble
tog lcd_e
tog lcd_e
lcd_port = lcd_buf Or (lcd_param And &HF) ' Lo-Nibble
tog lcd_e
tog lcd_e
Return
](*,)