Hi,
woher hast du die DS1631_Generic.bas? Wie auf Seite 66 steht, liegt diese im Basic++-Unterverzeichnis "lib" und sieht dann so aus:
Desweiteren schreibt man "sein" Programm in der "Hauptdatei" und bindet nur die benötigten Treiber (hier für den DS1631) ein.Code:'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 'III BASIC++ DEMO ZUM BASIC-COMPUTER UNIT M 1.2/2.0 IIIII 'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII '-------------------------------------------------------------------- ' Beispiel zum BASIC-COMPUTER mit dem Programmer/Application-Board '-------------------------------------------------------------------- ' LIBRARY: COMMON DS1631 CONTROL ROUTINES ' '--------------------------------------------------------------------- 'DS1631RESET(ADDR as byte) RESET 'DS1631CONVERT(ADDR as byte) START CONVERSION 'DS1631GET_STATUS(ADDR as byte) READ STATUS REGISTER,RETURN BYTE 'DS1631SET_STATUS(ADDR as byte,DATA as byte) WRITE STATUS REGISTER 'DS1631GET_TEMP(ADDR as byte) RETURN WORD WITH TEMP '------------------------------------------------------------------- '-------------------------- '--- DS1631 COMMANDS ------ '-------------------------- const CONVERT=51h const STOP_CONVERT=22h const READ_TEMP=AAh const CONF=ACh const RESET=54h '----------------------------------------------------- '------------------ DS1631 RESET ------------------ '----------------------------------------------------- FUNCTION DS1631RESET(ADDR as byte) IIC.INIT IIC.START IIC.SEND ADDR IIC.SEND RESET IIC.STOP IIC.OFF END FUNCTION '----------------------------------------------------- '------------------ DS1631 CONVERT ---------------- '----------------------------------------------------- FUNCTION DS1631CONVERT(ADDR as byte) IIC.INIT IIC.START IIC.SEND ADDR IIC.SEND CONVERT IIC.STOP IIC.OFF END FUNCTION '----------------------------------------------------- '----------------- GET DS1631 STATUS ----------------- '----------------------------------------------------- FUNCTION DS1631GET_STATUS(ADDR as byte) define DATA as byte IIC.INIT IIC.START IIC.SEND ADDR IIC.SEND CONF IIC.STOP IIC.START IIC.SEND (ADDR+1) IIC.GET DATA IIC.STOP IIC.OFF RETURN DATA END FUNCTION '------------------------------------------------------- '----------------- SET DS1631 STATUS ----------------- '------------------------------------------------------- FUNCTION DS1631SET_STATUS(ADDR as byte,DATA as byte) IIC.INIT IIC.START IIC.SEND ADDR IIC.SEND CONF IIC.SEND DATA IIC.STOP END FUNCTION '------------------------------------------------------- '----------------- WAIT DS1631 READY ----------------- '------------------------------------------------------- FUNCTION DS1631WAIT_READY(ADDR as byte) #WT if (DS1631GET_STATUS(ADDR)) and 80h = 0 then goto WT END FUNCTION '----------------------------------------------------- '----------------- GET DS1631 TEMP ----------------- '----------------------------------------------------- FUNCTION DS1631GET_TEMP(ADDR as byte) define TEMP as word define DATA as byte IIC.INIT IIC.START IIC.SEND ADDR IIC.SEND READ_TEMP IIC.STOP IIC.START IIC.SEND (ADDR+1) IIC.GET DATA TEMP=DATA*256 IIC.GET DATA TEMP=TEMP+DATA IIC.STOP IIC.OFF RETURN TEMP END FUNCTION
Dadurch, dass du eine andere Generic.bas verwendest, in der die Variablen doppelt deklariert werden, bekommst du die ersten Fehlermeldungen.
Die restlichen FM erhälst du, weil die im Hauptprog aufgerufenen Funktionen (z.B. DS1631Reset(ADR)) nicht in der importierten Datei enthalten sind.
Weitere Vorgehensweise:
1. Verwende die richtige DS1631_Generic.bas
2. Verwende das Original-Hauptprogramm von Seite 66
3 Bringe dies durch Upload in die C-Control zum Laufen
4. Ändere/Erweitere nach belieben das Hauptprgramm um weitere Funktionen (z.B. 10s Temp anzeigen, 10s Uhrzeit anzeigen)
5. Wenn du dich damit ein wenig vertraut gemacht hast, schreibe das eigentliche Programm...







Zitieren

Lesezeichen