hallo,

folgendes problem:

nach start des programmes funktioniert alles ca 24 stunden, dann zeigt der display nix mehr an.

hardware: c-control-station+I/O terminal

code:

Code:
'INTERFACE ZUM I/O TERMINAL
define sdio         port[5]'1
define sclio        port[6]'2
define strobe       port[4]'3
define light        port[3]

'---- FUNCTION KEYS -------
define FUNCTION1    port[9]
define FUNCTION2    port[10]
define FUNCTION3    port[11]
define FUNCTION4    port[12]
'------- LEDs -------------
define LED1         port[13]
define LED2         port[14]
define LED3         port[15]
define LED4         port[16]

'--- BIN-DEZIMAL-CONVERTER ---
define tausender           byte[1]
define hunderter           byte[2]
define zehner              byte[3]
define einer               byte[4]

'---- MINI LCD 2x8 --------
define lcd_char      byte[13]
define lcd_data      byte[14]
define  CHAR         byte[15]
'---- PORT TREIBER --------
define LED_PORT      byte[16]
define EXT_PORT      byte[17]
define MASK          byte[18]
'----- PROGRAMM ------------
define value         byte[19]
define temp1          byte[20]
define temp2          byte[21]
define key            byte[22]
define digit     byte[23]

define T_Boden        word[1]
define value17       word[2]
define gp           word[3]
define value16       word[4]
define zeit           word[5]
define VORON         word[6]
define VOROFF        word[7]
define NACHON        word[8]
define NACHOFF       word[9]
define T_Wasser      word[10]
define counter       word[11]
define DUENG         word[12]
'VormittagLicht
'------ TEMP FÜHLER --------
define T1           AD[5]
define T2           AD[6]
define KEY_VAL      AD[4]
define YES ON
define NO OFF
'------ ABCD  ----------

define A_ &HC1
define B_ &HC2
define C_ &HC3
define D_ &HC4
define E_ &HC5
define F_ &HC6
define G_ &HC7
define H_ &HC8
define I_ &HC9
define J_ &HCA
define K_ &HCB
define L_ &HCC
define M_ &HCD
define N_ &HCE
define O_ &HCF
define P_ &HD0
define Q_ &HD1
define R_ &HD2
define S_ &HD3
define T_ &HD4
define U_ &HD5
define V_ &HD6
define W_ &HD7
define X_ &HD8
define Y_ &HD9
define Z_ &HDA
define LEERZ &HA0
define MINUS &HAD
define NULL &HB0
define EINS &HB1
define ZWEI &HB2
define DREI &HB3
define VIER &HB4
define FUENF &HB5
define SECHS &HB6
define SIEBEN &HB7
define ACHT &HB8
define NEUN &HB9
define GLEICH &HBD
define DOPPELPUNKT &HBA
define PUNKT &HAE
define GRAD &HDF
define FRAGEZ &HAF
define STERN &HAA


T_Boden = 200
T_Wasser = 290





'IIIIIIIIIIIII INITIALISIERUNG IIIIIIIIIIIIIIIIIIIII
strobe=off:light=on:LED_PORT=255:EXT_PORT=0:gosub write_ports:gosub clear_display
gosub lcd2x8_init:light=on
gosub begruessung:pause 50
gosub clear_display
'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
'IIIIIIIIIIIIIII PROGRAMM START IIIIIIIIIIIIIIIIIIII
'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
#MAINLOOP
gosub show_time:pause 100
gosub schalt
gosub tempsteuerung1:gosub tempsteuerung2:gosub tempanzeige1:gosub tempanzeige2
pause 5
goto MAINLOOP

'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
'IIIIIIIIIIIIIII PROGRAMM ENDE  IIIIIIIIIIIIIIIIIIII
'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII




'ZEITABFRAGE
#schalt
  if TAGAN then gosub 1on
  if NACHMITTAGAN then gosub 1on
  if NACHTAN then gosub 4on
  if DUENGERAN then gosub Duenger
return


#TAGAN
if ( HOUR > 8) and ( HOUR<  12) then return YES else return NO
#NACHMITTAGAN
if ( HOUR > 13 ) and ( HOUR< 21 )then return YES else return NO
#NACHTAN
if (HOUR > 21) or ( HOUR < 8 ) then return YES else return NO
#DUENGERAN
if ( HOUR = 12 )and ( SECOND = 0)  then return YES else return NO


#tempsteuerung1
looktab ttab1, T1, value16
value16=value16-80
if value16 < T_Boden then gosub 2on else gosub 2off
return
#tempsteuerung2
looktab ttab1, T2, value17
value17=value17-80
if value17 < T_Wasser then gosub 3on else gosub 3off
return
#tempanzeige1
gosub setline1
lcd_char=T_:gosub write_char
lcd_char=EINS:gosub write_char
lcd_char=&HA0:gosub write_char
hunderter=value16/100:lcd_char=hunderter+&HB0:gosub write_char
gp=hunderter*100
zehner=(value16-gp)/10:lcd_char=zehner+&HB0:gosub write_char
lcd_char=&HAC:gosub write_char:
einer=value16-gp-(zehner*10):lcd_char=einer+&HB0:gosub write_char
lcd_char=&HA0:gosub write_char:lcd_char=&HC3:gosub write_char:lcd_char=&HA0:gosub write_char
return
#tempanzeige2
gosub setline2
lcd_char=T_:gosub write_char
lcd_char=ZWEI:gosub write_char
lcd_char=&HA0:gosub write_char
hunderter=value17/100:lcd_char=hunderter+&HB0:gosub write_char
gp=hunderter*100
zehner=(value17-gp)/10:lcd_char=zehner+&HB0:gosub write_char
lcd_char=&HAC:gosub write_char:
einer=value17-gp-(zehner*10):lcd_char=einer+&HB0:gosub write_char
lcd_char=&HA0:gosub write_char:lcd_char=&HC3:gosub write_char:lcd_char=&HA0:gosub write_char
return

#show_time
gosub clear_display
gosub setline1
value=hour:gosub show_2_digits
lcd_char =&HBA : gosub write_char
value=minute:gosub show_2_digits
lcd_char =&HBA : gosub write_char
value=second:gosub show_2_digits
pause 100
return

#Duenger
gosub 5on
pause 20
gosub 5off
return


'IIIIIIIIIIIII UNTERPROGRAMME IIIIIIIIIIIIIIIIIIIIIII
#1off
EXT_PORT=EXT_PORT and &HFE:goto write_ports
#1on
EXT_PORT=EXT_PORT or &H01:goto write_ports
#2off
EXT_PORT=EXT_PORT and &HFD:goto write_ports
#2on
EXT_PORT=EXT_PORT or &H02:goto write_ports
'-----------------------------------------------------
#3off
EXT_PORT=EXT_PORT and &HFB:goto write_ports
#3on
EXT_PORT=EXT_PORT or &H04:goto write_ports
#4off
EXT_PORT=EXT_PORT and &HF7:goto write_ports
#4on
EXT_PORT=EXT_PORT or &H08:goto write_ports
'-----------------------------------------------------
#5off
EXT_PORT=EXT_PORT and &HEF:goto write_ports
#5on
EXT_PORT=EXT_PORT or &H10:goto write_ports
#6off
EXT_PORT=EXT_PORT and &HDF:goto write_ports
#6on
EXT_PORT=EXT_PORT or &H20:goto write_ports
'------------------------------------------------------
#7off
EXT_PORT=EXT_PORT and &HBF:goto write_ports
#7on
EXT_PORT=EXT_PORT or &H40:goto write_ports
'------------------------------------------------------
#8off
EXT_PORT=EXT_PORT and &H7F:goto write_ports
#8on
EXT_PORT=EXT_PORT or &H80:goto write_ports
'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
#1rton
LED_PORT=LED_PORT and &HFE:goto write_ports
#1rtoff
LED_PORT=LED_PORT or &H01:goto write_ports
#1gnon
LED_PORT=LED_PORT and &HFD:goto write_ports
#1gnoff
LED_PORT=LED_PORT or &H02:goto write_ports
'-----------------------------------------------------
#2rton
LED_PORT=LED_PORT and &HFB:goto write_ports
#2rtoff
LED_PORT=LED_PORT or &H04:goto write_ports
#2gnon
LED_PORT=LED_PORT and &HF7:goto write_ports
#2gnoff
LED_PORT=LED_PORT or &H08:goto write_ports
'-----------------------------------------------------
#3rton
LED_PORT=LED_PORT and &HEF:goto write_ports
#3rtoff
LED_PORT=LED_PORT or &H10:goto write_ports
#3gnon
LED_PORT=LED_PORT and &HDF:goto write_ports
#3gnoff
LED_PORT=LED_PORT or &H20:goto write_ports
'------------------------------------------------------
#4gnon
LED_PORT=LED_PORT and &HBF:goto write_ports
#4gnoff
LED_PORT=LED_PORT or &H40:goto write_ports
'------------------------------------------------------
#5gnon
LED_PORT=LED_PORT and &H7F:goto write_ports
#5gnoff
LED_PORT=LED_PORT or &H80:goto write_ports


#display_binary
gosub setline1
lcd_char=((value and &H80) shr 7)+&HB0:gosub write_char
lcd_char=((value and &H40) shr 6)+&HB0:gosub write_char
lcd_char=((value and &H20) shr 5)+&HB0:gosub write_char
lcd_char=((value and &H10) shr 4)+&HB0:gosub write_char
lcd_char=((value and &H08) shr 3)+&HB0:gosub write_char
lcd_char=((value and &H04) shr 2)+&HB0:gosub write_char
lcd_char=((value and &H02) shr 1)+&HB0:gosub write_char
lcd_char=(value and &H01)+&HB0:gosub write_char
return

#begruessung' Aquarium '
gosub setline1
lcd_char=A_:gosub write_character
lcd_char=Q_:gosub write_character
lcd_char=U_:gosub write_character
lcd_char=A_:gosub write_character
lcd_char=R_:gosub write_character
lcd_char=I_:gosub write_character
lcd_char=U_:gosub write_character
lcd_char=M_:gosub write_character

return


#time_msg ' Zeit '
gosub setline1

lcd_char=LEERZ:gosub write_char
lcd_char=Z_:gosub write_char
lcd_char=E_:gosub write_char
lcd_char=I_:gosub write_char
lcd_char=T_:gosub write_char

return
#grad ' GRAD'
gosub setline1

lcd_char=LEERZ:gosub write_char
lcd_char=G_:gosub write_char
lcd_char=R_:gosub write_char
lcd_char=A_:gosub write_char
lcd_char=D_:gosub write_char

return



'--------------------------------------------
'-------- I/O-TERMINAL PORT Treiber ---------
'--------------------------------------------
#write_ports
MASK=&H80
#shift_mask1
if MASK=0 then goto  write_ledport
if (MASK and EXT_PORT)=0 then goto shift_lo1
sdio=on:sclio=off:sclio=on:MASK=MASK shr 1:goto shift_mask1
#shift_lo1
sdio=off:sclio=off:sclio=on:MASK=MASK shr 1:goto shift_mask1
'--------------------------------------------
#write_ledport
MASK=&H80
#shift_mask2
if MASK=0 then goto exit_driver
if (MASK and LED_PORT)=0 then goto shift_lo2
sdio=on:sclio=off:sclio=on:MASK=MASK shr 1:goto shift_mask2
#shift_lo2
sdio=off:sclio=off:sclio=on:MASK=MASK shr 1:goto shift_mask2
#exit_driver
strobe=on:strobe=off:return
'--------------------------------------------
'-------- I/O-TERMINAL LCD Treiber ----------
'--------------------------------------------
#setline1
lcd_char=&H84:goto mode_control
#setline2
lcd_char=&HC4:goto mode_control
#clear_display
lcd_char=&H01:goto mode_control
#scroll_display_left
lcd_char=&H18:goto mode_control
#scroll_display_right
lcd_char=&H1C:goto mode_control
#write_character
beep 368,1,0
#write_char
sclio=on:sdio=on:sdio=off:sclio=off
lcd_data=&H74:gosub write_byte
lcd_data=&H40:gosub write_byte
lcd_data=lcd_char:gosub write_byte
sdio=off:sclio=on:sdio=on:return
'--------------------------------------------

'------ 2 DIGITS AM LCD ANZEIGEN -------
#show_2_digits
 zehner=value/10
 lcd_char=zehner+&HB0
 gosub write_char
 'einer abfragen
 einer=value-(zehner*10)
 lcd_char=einer+&HB0
 gosub write_char
 return
'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
'-----------------------------------------------
#mode_control
sclio=on:sdio=on:sdio=off:sclio=off
lcd_data=&H74:gosub write_byte
lcd_data=&H00:gosub write_byte
lcd_data=lcd_char:gosub write_byte
sdio=off:sclio=on:sdio=on:return
#write_byte
sdio=(lcd_data and &H80)shr 7:sclio=on:sclio=off
sdio=(lcd_data and &H40)shr 6:sclio=on:sclio=off
sdio=(lcd_data and &H20)shr 5:sclio=on:sclio=off
sdio=(lcd_data and &H10)shr 4:sclio=on:sclio=off

sdio=(lcd_data and &H08)shr 3:sclio=on:sclio=off
sdio=(lcd_data and &H04)shr 2:sclio=on:sclio=off
sdio=(lcd_data and &H02)shr 1:sclio=on:sclio=off
sdio=lcd_data and &H01:sclio=on:sclio=off
deact sdio:sclio=on:sclio=off:sdio=off:return
#lcd2x8_init
sclio=on:sdio=on:sdio=off:sclio=off
lcd_data=&H74:gosub write_byte
lcd_data=&H00:gosub write_byte
lcd_data=&H25:gosub write_byte
lcd_data=&H06:gosub write_byte
lcd_data=&H24:gosub write_byte
lcd_data=&H0C:gosub write_byte
lcd_data=&H84:gosub write_byte
sdio=off:sclio=on:sdio=on:return


'--------------------------------------------
'------ I/O-TERMINAL KEYBOARD DECODER   -----
'--------------------------------------------
#key_decode
key=255:if key_val<8 then return
#get_stable
key=key_val:if key<>key_val then goto get_stable
if key_val>8   then key=10 'F1 KEY
if key_val>25  then key=11 'F2 KEY
if key_val>41  then key=12 'F3 KEY
if key_val>57  then key=1  ' 1 KEY
if key_val>74  then key=2  ' 2 KEY
if key_val>90  then key=3  ' 3 KEY
if key_val>106 then key=4  ' 4 KEY
if key_val>124 then key=5  ' 5 KEY
if key_val>140 then key=6  ' 6 KEY
if key_val>156 then key=7  ' 7 KEY
if key_val>170 then key=9  ' 9 KEY
if key_val>187 then key=8  ' 8 KEY
if key_val>203 then key=0  ' 0 KEY
if key_val>221 then key=13  ' CLEAR
if key_val>238 then key=14 ' RETURN
return



table ttab1 "temperaturen.tab"
table ttab2 "temperaturen.tab"