Compilerversionen / Korrekturen |
letzte Änderung:
|
Hier finden Sie in chronologischer Auflistung
die Neuerungen, Fehlerbereinigungen usw. für den
PIC-BASIC-Compiler iL_BAS16 und Zubehör. |
Ver. 5.7-10 23.11.2007
|
|
Ver. 5.7-8 29.06.2007 Implementierung der Typen 16F688, 12F635, 16F636 und 16F639 (Beta-Stadium) Compiler Ver. 5.7-9 18.07.2007 Implementierung der Typen 12F683, 16F685, 16F687, 16F689 und 16F690 |
|
Ver. 5.7-7 18.05.2007 Die Befehle I2CRDB und I2CRDBN funktionierten nur, wenn der DEBUG nicht aktiv war |
|
Ver. 5.7-6 06.05.2007 AUTO +x funktioniert jetzt. |
|
Ver. 5.7-5 14.04.2007 diverse Anpassungen für iL-TROLL Variante |
|
Ver. 5.7-4 07.03.2007 Bei der iL-TROLL-Version können Variablen nicht mehr absolut sondern nur mittels AUTO definiert werden. |
|
Ver. 5.7-3 20.02.2007
|
|
Ver. 5.7-2 01.02.2007
|
|
Ver.
5.7-1 05.11.2006
|
|
Ver.
5.7-0 22.09.2006
|
|
Assembler
Ver.5.6-10 17.07.2006
|
|
Ver.
5.6-25 07.07.2006
FOR varA16 = varC16 TO varB16 FOR varA16 = var/const TO varB16 +/- const (*) erlaubt. (*) erzeugt aber einen ineffizienten Code; besser man addiert die Konstante vor der Schleife zur Endvariablen.
ST7036 im Modul EA DOGM162S-A |
|
Ver.
5.6-24 24.05.2006
|
|
Ver.
5.6-23 19.05.2006 interne Optimierungen |
|
Ver.
5.6-22 05.05.2006
|
|
Ver.
5.6-21 26.04.2006
|
|
Ver.
5.6-20 25.04.2006
|
|
Ver.
5.6-19 21.04.2006
|
|
Ver.
5.6-18 25.03.2006
|
|
Ver.
5.6-17 15.03.2006
|
|
Ver.
5.6-16 13.02.2006
|
|
Ver.
5.6-15 28.01.2006
|
|
Ver. 5.6-14
22.01.2006
|
Ver. 5.6-13
26.11.2005
|
Ver 5.6-12
03.11.2005
|
Ver 5.6-11
26.10.2005
|
Ver
5.6-10 08.06.2005
|
Ver 5.6-09
07.05.2005
|
Ver 5.6-08
14.04.2005 - 27.04.2005 verschiedene Bugfixes:
|
Ver. 5.6-07
24.02.2005
|
Ver. 5.6-06 12.02.2005
|
Ver. 5.6-05
04.02.2005
|
Ver. 5.6-04
28.01.05
|
Ver. 5.6-03 18.01.05
|
Ver. 5.6-02
17.12.04
|
Ver. 5.6-01
10.12.2004 -> Neue Versionsnummer 5.6
|
Ver. 5.5-26
18.11.2004
|
Ver. 5.5-25
11.11.2004
|
Ver. 5.5-24
28.09.2004
|
Ver. 5.5-23
06.09.2004
|
Ver. 5.5-22
21.08.2004
|
Ver. 5.5-21
21.07.2004
|
Ver. 5.5-20
07.06.2004
|
Ver. 5.5-19 21.04.2004
|
Ver. 5.5-18
18.04.2004
|
Ver. 5.5-17
01.03.2004
|
Ver. 5.5-16
25.02.2004 Ver. 5.5-15 21.02.2004
|
Ver. 5.5-14
09.02.2004
|
Ver. 5.5-13
28.01.2004 Ver. 5.5-12 26.01.2004
|
Ver. 5.5-11 17.01.2004
|
Ver. 5.5-10
18.12.2003
Rx2 = R/S (Pin 4) war falsch. Siehe Version 5.5-14!!!!!!!! Rx3 = E (Pin 6) Rx4 = D4 (Pin 11) Rx5 = D5 (Pin 12) Rx6 = D6 (Pin 13) Rx7 = D7 (Pin 14) (Pin 5 = RW muss auf GND liegen) Diese Anschlussvariante wird durch das Anhängen des Schlüsselwortes UPLINES (upper lines) realisiert. Bsp: LCDINIT rb,4,20,uplines |
Ver. 5.5-09 30.11.2003
|
Ver.
5.5-01 15.07.2003
|
15.07.2003
Einführung der Compilerversion 5.5.
|
Die Version 5 des Compilers iL_BAS16STD und iL_BAS16PRO führt ein neues Konzept der Variablendeklaration ein. Die bisherigen vordefinierten Variablen A,B,C usw. waren bei den kleinen PIC-Bausteinen ideal. Bei Bausteinen mit sehr viel Datenspeicher wird diese Art der Deklaration aber zu unübersichtlich. Jetzt werden den Symbolvariablen direkt die absoluten Speicheradressen zugeordnet. Weitere Informationen im Handbuch (Download) |
Ver. 5.0-55 15.07.2002 Das Datenfeld für DATA und READDATA war versehentlich auf 1024 Einträge gestellt. Jetzt sind 2048 Einträge frei verfügbar.
Ver. 5.0-54 18.06.2002 Beim 16F62x wurde der WRITE-Befehl falsch ausgeführt.
Ver. 5.0-53 11.05.2002 Befehl DOZE für 12-Core PICs korregiert. Beim SLEEP Befehl ist der Parameter 2.3 Sekunden. Eine kleinere Auflösung ist nicht möglich. Somit bedeutet n=1 -> 2,3s; n=2 -> 4,6s. Befehl INC RB bzw. DEC RA o.ä. Befehle jetzt möglich.
Ver. 5.0-52 15.02.2002 Beim SERIN mittels UART wird jetzt das CREN nur im Fehlerfall verändert. Sonst bei hohen Übertragungsraten Fehler, da zwischendurch der Empfänger abgeschaltet wird.
Ver. 5.0-51 29.01.2002 Die Befehle SET, RES und TOGGLE var,var funktionierten auf Bank 1 und 3 nicht richtig. (Zugriffe auf Bank 0 und 1 waren ok).
Ver. 5.0-50 21.10.2001 Bei dem Befehl SEROUT trat bei Verwendung der Softwareroutinen und der Paritätsbildung dann ein Fehler auf, wenn man Konstanten ausgeben wollte. Jetzt können neben den Variablen auch Konstanten ausgegeben werden.
Ver. 5.0-49 25.09.2001 Einführung des Schalters $LRANGE xx. xx ist ein Dezimalwert. $LRANGE xx hat nur Einfluss auf das Programm iL_PAGE0. Es legt fest, wie groß der Bereich um die Seitengrenze sein soll, bei der ein GOTO in ein LJMP, bzw. ein CALL in ein LCALL umgesetzt wird. Da es hin und wieder Konstellationen gab, in denen ein Programmabsturz erfolgte, weil il_PAGE0 eine Umsetzung in einen LJMP oder LCALL nicht durchgeführt hatte, weil die Grenzen (bisher 16) zu eng waren. Der Defaultwert ist weiterhin 16. SET, RES und TOGGLE auf Bank 1,2,3 nachgearbeitet.
Ver. 5.0-48 14.08.2001 (noch nicht abgeschlossen) PCKEYOUT implementiert. Dieser Befehl erlaubt die serielle Datenausgabe mittels übertragungsprotokoll der PC-Tastatur. Somit kann ein PIC Daten anstelle der Tastatur an den PC schicken. Auch wenn man ein Zusatzgerät aufbauen will, das die Daten "parallel" zur Tastatur an den Rechner sendet. Beispiele sind die Scanner oder der Zusatztastenblock. Der Befehl hat folgenden Aufbau: PCKEYOUT port,datenpin,clockpin,wert1,wert2... Die unterschiedliche Tastnecodes sind nicht implementiert. Stattdessen kann jedes beliebige Zeichen ausgegeben werden. Hält man sich an die Vorgaben der PC-Tastatur, sind in Abhängigkeit der Codes entsprechende Ausgaben zu machen. Dieser Befehl funktioniert nicht beim 12C5xx und 16C5x. Ebenso muss die Quarzfrequenz größer oder gleich 2 MHz betragen.
Ver. 5.0-47 01.08.2001 Die Bausteine PIC16F870, 16F871, 16F627 und 16F628 wurden implementiert.
Ver. 5.0-46 12.07.2001 Übernahme des Übertragsbits in 16-Bit Assition in ERR-Variable korregiert. In der I2CSLAVE-Routine wird jetzt während des Empfangs GIE gelöscht und am Ende der Routine wieder gesetzt, falls Interrupts oder CLOCK verwendet wird.
Ver. 5.0-45 15.06.2001 Beim SERIN- und SEROUT-Befehl dürfen die Parameter PIN und BAUD jetzt auch Variablen sein. PIN muss eine 8-Bit-Variable, BAUD eine 16-Bit- Variable sein!. Der Parameter BAUD wird in eine Verzögerungszeit um- gerechnet, die vom PIC-Kern, Quarzfrequenz und der Baudrate abhängig ist. Da diese Berechnung nicht zur Laufzeit erfolgen kann, muss sie der Programmierer im Vorfeld berechnen und statt der absoluten Baud- rate diesen Wert als Parameter in der Variablen übergeben. Diese Be- rechnung führt der Compiler bei der Angabe der Baudrate als Konstante selbst durch. Das mitgelieferte Programm BAUDCALC.EXE übernimmt diese Arbeit da die Formeln kompliziert und nicht linear sind. Bsp. let baud=329 'bei 6,144 MHz und 4800 Baud let baud=407 'bei 6,144 MHz und 2400 Baud let pin=2 let wert="A" serout rb,pin,baud,wert
Ver.5.0-44 09.03.2001 LET var=RB oder LET RA=var u.ä. sind jetzt erlaubt.
Ver. 5.0-43 01.03.2001 Das automatische Setzen des RCIE-Bits im PIE1-Register beim Einbinden der UART-Empfangsroutine erfolgt nicht mehr. Es gab beim Zusammenspiel mit anderen Interruptquellen (z.B. CLOCK) Probleme, wenn der SERIN nicht in einer ISR verwendet wurde. Soll jetzt SERIN in einer ISR verwendet werden, muss das RCIE-Bit explizit gesetzt werden (SET PIE1,5 oder SET RCIE).
Ver. 5.0-42 16.02.2001
Die internen Funktionen $STRIS und $LTRIS für die 14-Bit Type
entfernt (SLEEP, DOZE). Fehler der sich durch 5.0-41 ergeben hat (ind.
Adressierung für Bitoperationen -> Problem in
Interrupt, wegen nicht zurückgesichertem FSR-Register)
behoben.
SERIN und SEROUT beim 1250x und Baudraten <250 verbessert.
CALVAL wird jetzt richtig in das SRC-File eingefügt.
Ver. 5.0-41 19.01.2001 Array-Zugriffe beim 16C57 funktionieren jetzt auch mit der neuen Variablendeklaration. Ebenso Zugriffe auf Bank 1,2 und 3. SET und RES können auf die Bänke 1,2 und 3 angewendet werden. Allerdings sind nur 8-Bit-Variablen möglich, so dass mittels indirekter Zugriffe nur Bank 0 und 1 erreicht werden können.
Ver. 5.0-40 19.12.2000 Syntaxcheck verfeinert. ($ 34 statt $34 wird als Fehler erkannt)
Ver. 5.0-39 15.11.2000 Bugfix
in iL_BAS16SEP $CCON und $CCOFF eingeführt. Damit kann der
Carrycheck am Ende einer Addition/Subtraktionsroutine ein- bzw.
ausgeschaltet werden.
Optimierungen bei Addition und Subtraktionen mit 8-Bit Werten bzw.
Konstanten. Die gleiche Art der Optimierung erfolgt bei logischen
Verknüpfungen AND, OR, XOR. Optimierungen bei Vergleichen mit
8-Bit Argumenten.
Ver. 5.0-38 13.11.2000 READ-Befehl beim 16F87x korregiert. War Zugriff auf ROM.
Ver. 5.0-37 07.11.2000
DOZE-Befehl: Beschreiben des OPTION-Registers korregiert.
Ver. 5.0-36 30.10.2000
Timinganpassungen (XTAL)
Ver. 5.0-35 20.09.2000
Ein von vielen Kunden gewünschter Befehl wurde implementiert.
CONDEZ und CONASC konvertieren eine Byte- oder Wortvariable in den
Dezimalwert bzw. in dessen ASCII-Äquivalent. Das Ergebnis
dieser Konvertierung wird je nach Variablentyp in 3 bzw. 5
Speicherstellen geschrieben. Die Startadresse für diesen
Bereich wird angegeben. Syntax: CONDEZ var8,pufferstart (Pufferlen=3)
CONDEZ var16,pufferstart (Pufferlen=5) CONASC var8,pufferstart
(Pufferlen=3) CONASC var16,pufferstart (Pufferlen=5)
Ver. 5.0-34 18.09.2000
Fehler bei MOD-Befehl behoben.
Ver. 5.0-33 12.09.2000
PEEK und POKE in einer IF-THEN-Anweisung jetzt möglich.
Ver. 5.0-32 31.07.2000
Timing für SERIN und SEROUT bei PICs mit 12 Bit Befehlsbreite
optimiert. (Diese Bausteine benötigen mehr Befehle, da nur
eine Stacktiefe von 2 Ebenen vorhanden ist.)
Ein neuer Schalter $NCALDEF wurde notwendig, da es sich gezeigt hat,
dass das Programmiergerät von Microchip beim Lesen der
OBJ-Datei für die PICs mit internem RC-Oszillator den vom
Compiler erzeugten DEFAULT-WERT (wichtig für JW-Typen) falsch
interpretiert und dadurch das OSCCAL-Register bei OTP- Type falsch
gesetzt wird.
Der Befehl CALVAL definiert den Kalibrationswert der bei JW-Typen in
das OSCCAL-Register geschrieben werden soll. Dieser Wert geht beim
Löschen dieser Bausteine verloren; deshalb sollte man sich
diesen Wert bei der erstmaligen Benutzung notieren. Wird kein Wert
definiert, gilt $80 als Defaultwert.
Ver. 5.0-31 22.07.2000
Der Schalter HL bzw. LH beim INTERRUPT wurde nicht richtig ins OPTION-
Register übernommern. Es ergaben sich dann Probleme, wenn z.B.
an RB0 per Interrupt ein SERIN gestartet werden sollte.
Ver. 5.0-30 11.07.2000
Der Übergabeparamter /E unterdrückt die
ENTER-Bestätigung im Fehlerfall. (war notwendig für
Windows IDE iL_EDy)
Fehlermeldung bei PULSOUT und neuer Variablendeklaration behoben.
Ver. 5.0-29 13.06.2000
PRINT-Befehl verbessert.
Ver. 5.0-28 20.05.2000
Die Formatanweisung war bei der neuen Variablendeklaration fehlerhaft.
Dies wurde hiermit behoben.
Ver. 5.0-27 16.05.2000
ADINP für 12C67x bei ADCFG5 korregiert
Ver. 5.0-26 09.05.2000
Zeitbasis beim FREQIN musste geändert werden. Jetzt entspricht
1000 einer Torzeit von 1s (effektiv aber nur 500ms, da beide Flanken
gezählt werden).
Ver. 5.0-25 09.04.2000
Syntaxcheck erweitert.
Ver. 5.0-24 22.03.2000
Bei den Bausteinen 12E51x und 12E67x wird das interne EEPROM jetzt mit
den Befehlen READ und WRITE angesprochen. Allerdings muss nach dem
Schreiben eines Bytes etwa 10ms gewartet werden, bevor der
nächste Schreibbefehl ausgeführt werden kann! Die
I2C-Befehle werden damit für externe Anwendungen wieder frei.
Ver. 5.0-23 12.02.2000
Seltener Fehler in Interruptbehandlung (FSR) behoben. T0CS_INT, T0SE0
und T0SE1 sind jetzt für alle Type einsetzbar.
Ver. 5.0-22 05.02.2000
Interner Zugriff auf Variablen aus unterschiedlichen Bänken
verbessert. (->STORE_DATEI) Wenn LCD und Tastaturmatrix an
unterschiedlichen Ports sind, können jetzt 16 Tasten abgefragt
werden.
Ver. 5.0-21 01.02.2000
Symbolcheck verbessert.
Ver. 5.0-20 26.01.2000
Fehler in SERIN (nur bei bestimmten Umständen) behoben.
Ver. 5.0-19 19.01.2000
Fehler in SETBAUD behoben (b muss real sein) Fehler in SEROUT (nur bei
bestimmten Umständen) behoben; auch DEFAULT.EQU HIGH cont,var
und HIGH const,const sind möglich (gilt auch für
LOW,REVERS und INP, OUTP).
Ver. 5.0-18 11.01.2000
Arrayzugriffe auf Bank 2 und 3 funktionieren jetzt.
Ver. 5.0-17 07.12.1999
ADDELAY x als neuer Befehl aufgenommen. Damit kann der Anwender die
Zeit für das Laden des Haltekondensators selbst bestimmen. Ist
das Flag zum automatischen Ein- und Ausschalten des Wandlers aktiviert,
beträgt diese Verzögerung ca. 40us bei 4MHz was einem
Zahlenwert von x=10 entspricht. Bleibt der AD-Wandler dauernd
eingeschaltet, und wird ADDELAY nicht definiert, erfolgt keine
Verzögerung, was sich u.U. dadurch bemerkbar macht, dass sich
die Kanäle gegenseitig beeinflussen und/oder der Maximalwert
nie erreicht wird. Die Verzögerungszeit berechnet sich
näherungsweise wie folgt:
t = (4/fq) * 4 * x
Auflösung von DEFINEs die sich auf vorausgehende
Symboldefinitionen beziehen wurde weiter verbessert. Somit sind auch
unter der neuen Variablendeklaration folgende Definitionen
möglich:
z.B.
define FLAGS=$A0
define NULL=0
define EINS=1
define NULLBIT=FLAGS,NULL
define EINSBIT=FLAGS,EINS
Der neue Befehl $LIST ersetzt die Programmsequenz
ASM
LIST
ENDASM
Wenn Sie also z.B. den Schalter /M_OBJ setzen wollen, so reichts es
jetzt aus, wenn Sie $LIST /M_OBJ schreiben.
Ver. 5.0-16 04.12.1999
Beim PRINT-Befehl funktionierte bisher nur die Ausgabe von Texten und
Konstanten. Ab jetzt funktioniert auch die Variablenausgabe wie im
Handbuch beschrieben. Z.Z. allerdings nur für den 16F87x.
Außerdem sind die Speicherplätze 68H bis 6CH als
zusätzlicher Hilfsspeicher notwendig. Der ADINP wurde
für den 16F87x nochmals überarbeitet. Ein
linksbündiges Resultat kann direkt in eine 8-Bit-Variable
übernommen werden. Wenn der AD-Wandler automatisch ein- und
ausgeschaltet wird, fügt der Compiler nach dem Einschalten
eine Warteschleife von ca. 35us ein, damit der Haltekondensator auch
auf den Maximumwert aufgeladen werden kann.
Ver. 5.0-15 25.11.1999
RCTIME und PWM Fehler beim 16C505 behoben.
Ver. 5.0-14 24.11.1999
Korrektur beim LOOKDN-Befehl (letztes Element wurde nicht getestet).
Das AD-Result format select bei den PIC 16F87x (ADCFGxR oder ADCFGxL)
wird nun richtig ausgewertet.
Ver. 5.0-13 10.11.1999
Fehlerhafter Eintrag in DEFAULT.EQU für den 16C505 korregiert,
auch Programmänderung war notwendig.
Ver. 5.0-12 09.11.1999
Bei der neuen Variablendeklaration funktionierte der PULSOUT-Befehl
nicht mehr.
Ver. 5.0-12 03.11.1999
Weitere PIC-Controller aufgenommen.
Ver. 5.0-11 22.10.1999
Interne Symboltabelle vergrößert (auf Heap).
Ver. 5.0-10 20.10.1999
Sound port,pin,1000,400 arbeitet jetzt richtig.
Ver. 5.0-09 16.10.1999
Die Deklaration von 16-Bit-Konstanten funktioniert jetzt auch bei der
neuen Variablendeklaration. Jetzt sind auch Bitabfragen für
Variablen in den Bänken 1,2 und 3 möglich.
Der Befehl RESTORE darf auch in IF-THEN-ELSE Konstruktionen verwendet
werden.
Ver. 5.0-00
11.08.1999
Ab dieser Version werden die
PIC16F87x-Bausteine unterstützt. Da diese Bausteine bis zu 4
Bänke mit Daten-RAM besitzen, konnte die bisherige
Variablendeklaration micht mehr beibehalten werden. Es wäre zu
einem chaotischem Wirrwarr geworden. Aus diesem Grund wurde die
Variablendeklaration komplett überarbeitet. Es
entfällt die Datei iL_BAS16.EQU. An deren Stelle tritt die
Datei DEFAULT.EQU. Sie definiert jetzt nur diejenigen Variablen, die
vom Assembler benötigt werden. Auch der Assembler wurde
dahingehend geändert, dass er nun von sich aus keine
Symboldefinitionen beinhaltet. Diese in der Datei DEFAULT.EQU
festgelegten Bezeichnungen dürfen auch aus dem BASIC-Programm
heraus verwendet werden. Eine erneute Definition führt zu
einer Fehlermeldung. Alle weiteren Variablen, die vom BASIC und oder
einer eigenen Assemblerroutine (ASM, ENDASM) verwendet werden,
müssen im Programmkopf oder einer eigenen INCLUDE-Datei
definiert werden. Dabei muss nach folgendem Schema vorgegangen werden:
DEFINE temp=$60 AS BYTE
Damit wird die Variable temp an der Speicherstelle 60H als Byte
abgelegt. Die Angabe AS BYTE kann auch weggelassen werden, da der
Defaultwert BYTE ist.
DEFINE temp1=$E0 as WORD
Hier wird die Variable temp1 als WORD-Variable (16-Bit vorzeichenlos)
an der Speicherstelle E0H (in Bank 1) abgelegt.
Eine Variable muss aus mindestens ZWEI Zeichen bestehen!. Dabei muss
das erste unbedingt ein Buchstabe sein.
Zu beachten ist, dass der Variablen immer eine absolute Speicherzelle
zugewiesen wird. Sollen ältere Programme mit dem neuen
Compiler übersetzt werden kann man durch das Einfügen
des Schalters $OLDVAR den alten Variablenmodus erzwingen, und spart
sich so das Umschreiben des kompletten Programms.
Die Bausteine 16CE623, 16CE624 und 16CE625 werden unterstützt.
Sie werden allerdings als 16E623, 16E624 und 16E625 bezeichnet. Das
interen EEPROM wird über die Befehle READ und WRITE
angesprochen, wobei nach jedem WRITE- Befehl ein WAIT 10 folgen sollte,
falls es nicht gewährleistet ist, dass zwischen zwei
WRITE-Befehlen mind. 10ms verstreichen.
Alternativ kann man nach einem EEPROM-Zugriff das ERR-Bit 3
prüfen. Ist es 0, war die Operation erfolgreich, bei 1 konnte
das EEPROM nicht angesprochen werden.
Der PRINT-Befehl erlaubt es Variablen seriell auszugeben. Dies ist
für die Debuggingphase äußerst
nützlich. Im Gegensatz zum SEROUT-Befehl, wird diese Befehl
immer per Software generiert, auch wenn die verwendeten Pins an den
USART angeschlossen sind. Darüberhinaus stehen die
Formatierungszeichen %, $, und # zur Verfügung. Die Funktion
ist beim LCDWRITE-Befehl beschrieben.
Syntax:
PRINT port,pin,baud,"Text",var8,var18,var8,$,var16,%
=Dez.=Dez. =Hexd. =Binärdarstellung
PRINT port,pin,baud,"Text",13,10
erzeugt ein CR LF
entspr. PRINT port,pin,baud,"Text",13,#,10,#
Für Leerzeichen zwischen zwei Ausgaben muss ein " " oder 32
eingefügt werden.
*******************************************
Ver.4.1-27 04.08.1999
Die Schalter CMCFG und VRCFG aufgenommen. Diese Angaben werden in der
DEFINE DEVICE-Anweisung gesetzt, falls ein PIC16C620...16C622 bzw
PIC16CE623...CE625 zum Einsatz kommen. Mit diesen Schaltern werden die
Komparatoren bzw. die Spannungsreferenzen eingestellt. Es ergeben sich
folgende Zusammenhänge:
CMCFG0 Komparator Reset
CMCFG1 3 Inp mux C1OUT = RA2-RA0 (od. RA2-RA3) C2OUT = RA2-RA1
CMCFG2 4 Inp mux C1OUT = Vref-RA0 (Vref-RA3) C2OUT = Vref-RA1 (Vref-RA2)
CMCFG3 2 gem.Vref C1OUT = RA2-RA0 C2OUT = RA2-RA1 RA3=digital IO
CMCFG4 2 Komp. C1OUT = RA3-RA0 C2OUT = RA2-RA1
CMCFG5 1 Komp. C2OUT = RA2-RA1 RA0 und RA3 sind digital IO
CMCFG6 2 gem.Vref C1OUT(RA3)=RA2-RA0 C2OUT(RA4)=RA2-RA1
CMCFG7 aus RA0..RA3 sind digital IO
Bei CMCFG1 und CMCFG2 entscheidet das CIS-Bit im CMCON-Register ob RA0
oder RA3 bzw. RA1 oder RA2 auf den Komparator geführt wird.
Dieses Bit kann nicht in der DEFINE-Anweisung gesetzt werden, sondern
muss während des Programmlaufes mittels SET- bzw. RES-Befehl
nach Bedarf geändert werden. Beim VRCFG muss das
Konfigurationsbyte direkt, d.h. ohne Leerzeichen, dem
Schlüsselwort VRCFG folgen. Dazu muss aus der Tabelle der
entsprechende Wert berechnet werden. Die Angabe erfolgt als
Dezimalwert. Die entsprechende
Zuordnung lautet:
Bit 7 Wert = 0 -> Vref aus
Wert = 128 -> Vref ein
Bit 6 Wert = 0 -> Vref keine Verbindung zu RA2
Wert = 64 -> Vref mit RA2 verbunden
Bit 5 Wert = 0 -> Vref großer Spannungsbereich
Wert = 32 -> Vref kleiner Spannungsbereich
Bit 4 -
Bit 3 bit Bit 0 Spannungsbereich errechnet sich wie folgt:
wenn Bit 5 = 1 -> Vref=(x/24)*Vdd mit x = 0 bis 15
wenn Bit 5 = 0 -> Vref=0.25*Vdd+(x/32)*Vdd
Hinweis:
Beachten Sie dazu auch das Kapitel im entsprechenden Datenblatt.
Ver.4.1-26 02.08.1999
Fehler beim 16-Bit-Vergleich ">=" behoben.
Ver.4.1-25 27.07.1999
Für TXDDELAY wurde der Defaultwert auf 125 gesetzt. Da manche
ältere PIC-Typen einen Fehler in der USART-Hardware haben,
wenn das BRGH-Bit auf 1 steht, wurde defaultmäßig
BRGH auf 0 gesetzt, auch wenn dadurch der Fehler zwischen eingestellter
und gewünschter Baudrate größer wird.
Ver.4.1-24 21.07.1999
Neuer Befehl SETBAUD const implementiert. Dieser Befehl erlaubt es im
Zusammenhang mit der Hardware-Serin-Routine im Interruptbetrieb die
Empfangsbaudrate einzustellen. Normalerweise wird beim Datenempfang
mittels Interrupt erst dann zum Befehl SERIN (in ISR) verzweigt, wenn
das 1. Byte bereits empfangen wurde. Hatte man zuvor ein Byte
über den Befehl SEROUT (UART) mit einer anderen Baudrate
gesendet, würde somit das erste empfangene Zeichen falsch
sein. SETBAUD schafft hier Abhilfe und definiert z.B. nachdem man den
letzten Wert per SEROUT ausgegeben wurde. Zur Sicherheit
überprüft SETBAUD zuerst, ob der Sendepuffer leer
ist, denn nur dann darf die Baudrate verändert werden.
Ver.4.1-23 14.07.1999
Neuer Befehl BITPOS var1,var2 implementiert. Dieser Befehl erlaubt es
aus einem Zahlenwert zwischen 0 und 7 die Bit-Position zu bestimmen. Es
dürfen allerdings nur 8-Bit-Variablen verwendet werden.
Beispiel:
LET a=5
BITPOS b,a 'b bekommt %00100000 zugewiesen
Ver.4.1-22 10.07.1999
Fehler im Parser behoben. Bei einer Leerzeile und vorausgegangenem bzw.
nachfolgendem Label das aus einem Schlüsselwort besteht wurde
eine falsche Zeile erzeugt. 12.07.1999 Routinen für seriellen
Übertragung via USART korregiert.
Ver.4.1-21 08.07.1999
Die Befehle DATA, READDATA und RESTORE wurden implementiert. Mittels
diesen Befehlen können sehr einfach sehr große
Konstantenfelder aufgebaut werden. Das Feld mit den Werten wird mittels
dem Schlüsselwort DATA definiert. Um auch auf Bereiche
innerhalb des Feldes zugreifen zu können, kann der aktuelle
Zugriffszeiger mit Hilfe von RESTORE zeile gesetzt werden. Der
eigentliche Datenzugriff erfolgt mit READDATA. Wenn beim SEROUT- bzw.
SERIN-Befehl auf den Pin zugegriffen wird, bei dem der PIC die UART
unterstützt, wird dies vom Compiler automatisch erkannt und
die entsprechenden Routinen für die
Hardwareunterstützung eingebunden. Der SEROUT-Befehl sendet
dabei einfach Byte für Byte. Vor jedem Senden wird
geprüft ob der Sendepuffer leer ist; wenn nicht, wird solange
gewartet. Da bei einer Übertragung eines Strings (SEROUT
port,pin,baud,"Teststring") unter Umständen die Daten
für den Emfänger zu schnell gesendet werden, wird
nach jedem gesendeten Byte eine Pause von 650us (bei 4MHz) eingelegt.
Diese Verzögerung kann mittels TXDDELAY n (1256)
verändert werden, wobei der Defaultwert auf 125
(->650us bei 4MHz) steht. Sind größere
Zeiträume zwischen den einzelnen Byte gefordert, muss dies
mittels WAIT und entsprechenden Schleifen realisiert werden. Der
SERIN-Befehl kann entweder im Pollingbetrieb oder Interruptbetrieb
verwendet werden. Im Pollingbetrieb wartet das Programm solange an
dieser Stelle, bis ein Datenbyte empfangen wird. Falls andere
Interrupts freigegeben sind, werden diese im Bedarfsfall bearbeitet. Im
Interrupt-Betrieb (SERIN port,pin,baud,INT,var) muss der SERIN-Befehl
in eine Interruptserviceroutine eingebunden werden. Dabei ist darauf zu
achten, dass bei mehreren möglichen Interruptquellen diejenige
herausgefunden werden muss, die den Interrupt auch tatsächlich
ausgelöst hat. Neben dem RCIE-Flag im PIE1-Register wird auch
das PEIE-Flag im INTCON-Register automatisch eingeschaltet. Der
Anwender muss nur noch für das Ein- und Ausschalten des GIE
(Global Interrupt Enable) sorgen.
Ver.4.1-20 01.07.1999
Die FOR-NEXT-Schleifen wurden überarbeitet. Jetzt
dürfen bis zu 16 Schleifen geschachtelt werden, das gilt auch
für die "kleinen Bausteine" wie z.B. dem PIC16C54 oder
PIC12C508.
Weiter
zurückliegende Änderungen und Neuerungen entnehmen
Sie bitte der Datei HISTORIE.TXT.