Hallo,
Bin Neuling bei der Programmierung von Microchip PIC's mit MPLAP 7.60
und C18 Compiler.
.
Ich suche eine Option/Schalter, die mir die Zeilen auf dem Bildschirm
nach dem starten des Programms wieder anzeigt. Also dort, wo ich das
Programm beendet habe.
.
Besteht eine Möglichkeit, in MPLAP einen anderen Editor einzubinden?
Gruß Siegfried
Hallo,
du hast die Option den letzten "workspace" zu speichern, so dass dieser
nach dem Programmneustart wieder geöffnet wird.
Ob dieser sich die Editor-Zeilen merkt kann ich nicht beantworten.
Mir persönlich gefällt der Mplab-Editor nicht - ich verwende MPLAB nur
zum Kompilieren und flashen/debuggen.
Gruß
Christian
Hallo,
Firma: UltraEdit (Win)
privat: geany (Win+Linux), programmer's notepad (Win)
Editoren sind Geschmackssache. Der eine arbeitet lieber mit X, der
andere mit Y... darüber kann man streiten :) Einfach ausprobieren.
Gruß
Christian
Hallo,
Danke für die Info.
Habe aber ein Problem mit einem Bit testen.
Folgende Zeile
#define bit_set(var,bitnr) ((var) |= 1 << (bitnr))
#define bit_clear(var,bitnr) ((var) &= ~(1 << (bitnr)))
#define bit_test(var,bitnr) ((var) & (1 << (bitnr)))
unsigned char Testen;
unsigned char Count_1;
OE_1, SPI1_EN,LED_RUN und LED_DATA sind IO Pin zugeordnet.
..
Testen = 0xF0;
if (bit_test(Testen, 4) == 1)
{
OE_1 = 1;
Count_1++;
}
if (bit_test(Testen, 5) == 1)
{
SPI1_EN = 1;
Count_1++;
}
if (bit_test(Testen, 6) == 1)
{
LED_RUN = 1;
Count_1++;
}
if (bit_test(Testen, 7) == 1)
{
LED_DATA = 1;
Count_1++;
}
Versuche verzweifelt ein Bit zu testen. Dieses funktioniert nicht.
Testen habe ich 0xF0 zugewiesen, und somit müßten die Bit 4 bis 7 eine 1
haben.
Habe warscheinlich meinen schlechten Tag oder soll es mit dem Free C18
zu tun haben?
Setzen und löschen funktionieren.
Es werden die Zeilen zwischen den { .. } nicht ausgeführt
Gruß Siegfried
Hallo,
ich vermute, dass dein Problem folgendes ist:
mit "bit_test(Testen, 4)" verundest du die Variable 'Testen' mit
0b00010000;
als positives Ergebis würdest du 0b00010000 bzw. 0x10 erhalten;
da der Compiler bei der if-Abfrage die '1' auf den anderen Typ castet
(nämlich auf den von 'Testen') vergleichst du 0x10 mit 1, also
0b00000001 / 0x01 -> das Ergebnis ist FALSE;
also entweder:
Hallo Christian,
Danke für die schnelle Infos.
Habe auf die schnelle ein neues Projekt erstellt.
Folgende Zeilen mit verschiedene Varianten:
Jetzt funktioniert es(es wieder). Weiß der Teufel, was ich zerschossen
habe, obwohl der Compiler nicht meckert. Ist vieleicht zu heiß?
void myTest(void)
{
myCount = 0;
Testen = 0b00001000;
if ((Testen & 0b00001000) >= 1)
{myCount++; }
if (Testen & (1 << 3))
{myCount++;}
if (bit_test(Testen, 3))
{myCount++;}
if (Testen TEST_BIT BIT_3)
{myCount++;}
}
nutze deine letzte Variante. Werde noch sehen, das ich setzen und lösche
dem anpassen kann.
Gruß und schönes Wochenende
Siegfried
Hallo,
die Variante
if (Testen TEST_BIT BIT_3)
{myCount++;}
}
testet ein Bit auf eine '1'
Habe versucht diese umzustellen auf
if (Testen TEST_BIT !BIT_3)
{myCount++;}
}
um ein Bit auf eine '0' zu testen.
leider funktioniert mein Code nicht.
Gruß Siegfried
Siegfried Saueressig wrote:
> Danke für deine Infos. funtioniert.
Bitteschön.
> Besteht die Möglichkeit, den Editor von MPLAP mit dem UltraEdit> auszutauschen?
Ist mir nicht bekannt. Kann es mir auch nur schwer vorstellen, dass es
vorgesehen/möglich ist.
Gruß
Christian
Hallo guten morgen,
//
#define TEST_BIT &
#define BIT_0 0b00000001
#define BIT_1 0b00000010
#...
if (Testen TEST_BIT BIT_0)
Besteht die Möglichkeit, das "BIT_0" ein Zeiger ist.
z.B.
for (x=0; x<=7; x++)
{
if (Testen TEST_BIT x)
{
... Code
}
}
Diese überlegung würde mir Codezeilen sparen, da ich dann keine
switch(x) Anweisung benötigen .
Gruß Siegfried