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"







Zitieren

Lesezeichen