Das Open-Control-Projekt - Die Alternative zur C-Control-I


Das Forum zur C-Control-1
Welche C-Control-Varianten existieren?
Übersicht - Suchen - Neueste 50 Beiträge - Neuer Beitrag - Login - Registrieren
INFO - FAQ - CC2-Forum - CCPro-Forum 

 Hilfe Kategorie: Programmierung Basic (von micha2010 - 9.02.2005 12:51)


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.


' *** 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                                         ' An dieser Stelle soll nicht das von Vicual Basic 6
position = position + 1                           ' eingegebene Zeichen/Wort (hier ein bestimmtes Medikament)
If position = &H15 Then GoTo posi             ' auf dem Display erscheinen sondern sollte im EEPROM
If daten = leerz Then GoTo init2                 ' gespeichert und zu einer gewissen Uhrzeit ausgegeben. werden)
lcd_param = daten: GoSub LCD_WRITECHAR        ' Geht das nur über Assembler??? Und wenn ja - wie???
GoTo eingabe1                                     ' Vielen Dank im Voraus.

#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




 Antwort schreiben

Bisherige Antworten:

Re: Hilfe (von ManfredW - 9.02.2005 21:16)
Re: Hilfe (von Achim - 9.02.2005 14:57)
Re: Hilfe (von Kay - 9.02.2005 14:34)
Re: Hilfe (von Dierk - 9.02.2005 14:19)