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 

 Ein Speicherresistentes Programm stört mein altes Kategorie: Programmierung Basic (von Markus Kolat, Homepage - 9.12.2005 12:19)
Markus Kolat nutzt:  CC1-Station V2.0
Hallo,
ich habe ein zum testen ein Treiberprogramm zum DCF Synchronisation
auf meine Station hochgeladen und danach mein altes und nun kann ich meine Rollos zwar
aber nicht runterfahren. Wie Bekomme ich das Treiberprogramm aus den Speicher damit
ich die Rollos wieder runterfahren kann, oder habe ich in meinem Programm ein Fehler.

Vielen Dank im vorraus

Treiberprogramm:
'--------------------------------------------------------------------
' ERWEITERUNG:    BASIC-SYSTEMERWEITERUNG DCF-SYNCHRONISATION       -
'                 RXD                                               -
'--------------------------------------------------------------------
' Diese Demo ladet die BASIC-SYSTEMERWEITERUNG "PAGE0_EXT1.S19"
' und zeigt wie die RTC der MICRO mit einer DCF-Uhr synchronisiert wird.
' Der Aufruf SYS  DCFSYNC startet die Synchronisation, die nach ca. 2 Minuten
' abgeschlossen ist.
' Zur Kontrolle wird über die serielle Schnittstelle der Inhalt der RTC ausgegeben
' and mit LED 5 die Pulse am DCF-Eingang sichtbar gemacht.
' Mit dieser Erweiterung wird auch der Befehl RXD freigeschaltet der anzeigt, ob
' die Uhrzeit Synchronisiert ist.
' Verwendet wird er z.B. so:
'
' if RXD then goto SYNC
' if NOT RXD then goto UNSYNC

' In unserem Beispiel wird der BEEPER aktiviert wenn die Uhrzeit synchronisiert ist.
' Nach der Synchronisation läuft die Uhrzeit mit RTC-Genauigkeit weiter, sodass
' Sie SYS DCFSYNC entsprechend den Anforderungen an die Genauigkeit der RTC häufiger
' aufrufen müssen.
' Wenn die RTC einmal synchronisiert ist, wird der Interrupt abgeschaltet und muss für
' eine erneute Synchronisaton mit SYS DCFSYNC aktiviert werden.
' Gleichzeitig wir damit RXD auf false gesetzt und erst wieder true, wenn die Uhr
' erneut synchron ist.

' EINSCHRÄNKUNGEN:
' Die DCF Synchronisation betrifft nur die Uhrzeit. Datum und Wochentag werden
' nicht synchronisiert, da hierfür im System keine Variablen vorgesehen sind.
' Benötigen Sie in Ihrer Anwendung das Datum, so können sie dieses mit einem
' kleinen Unterprogramm erzeugen und in den Variablen ablegen.
'  !! Die Synchronisation beeinhaltet keine Korrektur von Übertragungsfehlern !!
' Wenn Sie die Uhreit hundertprozentig sicher anzeigen zu wollen, müssen Sie
' für eine Verifizierung mehrer Rahmen selbst Sorge tragen.
'
'
' ACHTUNG:
' Das Treiberprogramm läuft interruptgesteuert im Hintergrund, auf der
' SYSCODE PAGE 0
' Deswegen verringert sich die max. Länge des nutzbaren Basicbereiches um 256 Bytes
' also auf 1792 Bytes. Als Benutzer müssen Sie selbst darauf achten´, dass durch ein
' überlanges BASIC-Programm der Maschinencode auf Page0 nicht überschrieben wird.
' Der SYSCODE muss nur ein einziges Mal geladen werden. Er verbleibt dann resident
' im Speicher.
' Das angeschlossene DCF-Uhrenmodul muss während der Sekundenimpulse von HI auf LO tasten.
'
'-----------------------------------------------------------------------
' SIE DÜRFEN DIESEN TREIBER NUR LADEN, WENN DIE PAGE0/1 NICHT VON ANDEREN
' TREIBERN/SYSTEMERWEITERUNGEN, DIE SIE BENÖTIGEN, BELEGT IST !
' Der Treiber ist nicht für die MICRO mit der OS-Version 2.00 geeignet
'---------------------------------------------------------------------
'--------------------------
'------ I/O PORTS ---------
'--------------------------
define DCFIN    port[4]
define TASTER   port[3]
define LED      port[5]
define BEEPER   port[6]
'--------------------------
'---- SYSTEM MEMORY -------
'--------------------------
define OLD_SEC      byte[1]
define  a           byte[2]
'--------------------------
'---- SYSTEM JUMPS  -------
'--------------------------
const DCFSYNC=FD09h


SYS DCFSYNC
'------- DIE UHR EINSTELLEN ---------------------
LED=on
HOUR=0
MINUTE=0
SECOND=0
baud R9600
pause 5
print"START"
'--------------------------------------------------
'        SYNCHRONIZE THE RTC WITH DCF77           -
'--------------------------------------------------

#TICKING
IF DCFIN=off then LED=on
if DCFIN=on then LED=off
if OLD_SEC = second then goto TICKING

#BLINK
OLD_SEC=second
print HOUR;
print":";
print MINUTE;
print ":";
print SECOND
if RXD then beep 100,5,BEEPER
goto TICKING




syscode "page0_ext1.s19"


attributes
ccproject                  
 
end attributes

------------------------------------------------------------------------------------------------------------------------------------
Meine Rollosteuerung:
'--------------------------
'------ I/O PORTS ---------
'--------------------------
define ADC8           ad[8]
define LIGHT       port[16]
'werden für die Relais. und LED benötigt
define SDA          as port[9]
define SCL          as port[10]
'--------------------------
'---- SYSTEM MEMORY -------
'--------------------------

define EXTPORT      as byteport[4]
define LED1         as port[25]
define LED2         as port[26]
define LED3         as port[27]
define LED4         as port[28]
define KINDHOCH     as port[29] 'REL1
define SCHLAFHOCH   as port[30] 'REL2
define KINDRUNTER   as port[17] 'REL3 31
define SCHLAFRUNTER  as port[18] 'REL4  18

import "C:\Programm\CCB\basicpp\LIB\GET_KEY.BAS"
import "C:\Programm\CCB\basicpp\LIB\GET_VALUE.BAS"

'damit wird der Bildschirm und anderes Inizialisiert
'(nur zum Anfang erforderlich)
#INIT
LCD.INIT
SDA=on
SCL=on
EXTPORT=OFF

'jetzt werden alle LED und Relais ausgeschaltet damit
'kein Rolladenmotor durchbrennt und nichts falsches angezeigt wird.
KINDHOCH=OFF
SCHLAFHOCH=OFF
KINDRUNTER=OFF
SCHLAFRUNTER=OFF
LED1=OFF
LED2=OFF
LED3=OFF
LED4=OFF
LCD.POS 1,1
LCD.PRINT "                "
LCD.POS 2,1
LCD.PRINT "                "
PAUSE 150

#SCHLEIFE
define INVALUE as word
LCD.INIT
LCD.PRINT " CODE EINGEBEN"
LIGHT=off

'-----------------------------------------------------
'  
'-----------------------------------------------------

INVALUE=GET_VALUE()
'------ START REQUESTING A VALID CODE (1357) ---------
if INVALUE=1  then goto KINDHOCH
if INVALUE=4  then goto KINDRUNTER
if INVALUE=44 then goto KINDHALBRUNTER
if INVALUE=2  then goto SCHLAFHOCH
if INVALUE=5  then goto SCHLAFRUNTER
if INVALUE=55 then goto SCHLAFHALBRUNTER
if INVALUE=45 then goto ALLERUNTER
if INVALUE=12 then goto ALLEHOCH
'if (hour=8 and minute>=15) then goto ALLEHOCH
LCD.POS 2,1
LCD.PRINT "unbekannte Eing."
pause 100
goto SCHLEIFE
'-----------------------------------------------------
#KINDHOCH
KINDRUNTER=OFF
LCD.POS 1,1
LCD.PRINT "  Kinderzimmer  "
LCD.POS 2,1
LCD.PRINT " wird geoeffnet "
KINDHOCH=ON
PAUSE 1500
KINDHOCH=OFF
goto SCHLEIFE
'-----------------------------------------------------
#KINDRUNTER
KINDHOCH=OFF
LCD.POS 1,1
LCD.PRINT "  Kinderzimmer  "
LCD.POS 2,1
LCD.PRINT "wird geschlossen"
KINDRUNTER=ON
PAUSE 1500
KINDRUNTER=OFF
goto SCHLEIFE
'-----------------------------------------------------
#KINDHALBRUNTER
KINDHOCH=OFF
LCD.POS 1,1
LCD.PRINT "  Kinderzimmer  "
LCD.POS 2,1
LCD.PRINT "wird halb gesch."
KINDRUNTER=ON
PAUSE 650
KINDRUNTER=OFF
goto SCHLEIFE
'----------------------------------------------------
#ALLERUNTER
KINDHOCH=OFF
SCHLAFHOCH=OFF
LCD.POS 1,1
LCD.PRINT "  alle Rollos   "
LCD.POS 2,1
LCD.PRINT " werden geschl. "
KINDRUNTER=ON
PAUSE 1500
SCHLAFRUNTER=ON
PAUSE 1500
KINDRUNTER=OFF
SCHLAFRUNTER=OFF
goto SCHLEIFE
'-----------------------------------------------------
#ALLEHOCH
KINDRUNTER=OFF
SCHLAFRUNTER=OFF
LCD.POS 1,1
LCD.PRINT "  alle Rollos   "
LCD.POS 2,1
LCD.PRINT "werden geoeffnet"
KINDHOCH=ON
PAUSE 1500
SCHLAFHOCH=ON
PAUSE 1500
KINDHOCH=OFF
SCHLAFHOCH=OFF
goto SCHLEIFE
'------------------------------------------------------
#SCHLAFHOCH
SCHLAFRUNTER=OFF
LCD.POS 1,1
LCD.PRINT " Annikas Rollo  "
LCD.POS 2,1
LCD.PRINT " wird geoeffnet "
SCHLAFHOCH=ON
PAUSE 1500
SCHLAFHOCH=OFF
goto SCHLEIFE
'-----------------------------------------------------
#SCHLAFRUNTER
SCHLAFHOCH=OFF
LCD.POS 1,1
LCD.PRINT " Annikas Rollo  "
LCD.POS 2,1
LCD.PRINT "wird geschlossen"
SCHLAFRUNTER=ON
PAUSE 1500
SCHLAFRUNTER=OFF
goto SCHLEIFE
'-----------------------------------------------------
#SCHLAFHALBRUNTER
SCHLAFHOCH=OFF
LCD.POS 1,1
LCD.PRINT " Annikas Rollo  "
LCD.POS 2,1
LCD.PRINT "wird halb geschl"
SCHLAFRUNTER=ON
PAUSE 650
SCHLAFRUNTER=OFF
goto SCHLEIFE
'-----------------------------------------------------

attributes
ccproject    
ccproject    
ccproject    
ccproject    
end attributes


Meine Homepage: http://www.wandbilder.net

 Antwort schreiben

Bisherige Antworten:

Re: Ein Speicherresistentes Programm stört mein altes (von YAZO - 9.12.2005 19:20)
Re: Ein Speicherresistentes Programm stört mein altes (von Dierk - 9.12.2005 16:25)
    Re: Ein Speicherresistentes Programm stört mein altes (von Markus Kolat - 9.12.2005 18:46)
        Re: Ein Speicherresistentes Programm stört mein altes (von dierk - 10.12.2005 11:29)
            Re: Ein Speicherresistentes Programm stört mein altes (von Markus Kolat - 10.12.2005 14:40)