Syntax-Highlighting Test

OP Admin Persönliche Seite #245429
Lesenswert?

1
void send_Ports (char numdat, int start, int ende)
2
{
3
PORTE = (numdat);
4
PORTA = (uint8_t) (start<<3) & 0xFF);
5
PORTB = (uint8_t) (start>>5) & 0xFF);
6
PORTC = (uint8_t) (start>>13) & 0xFF);
7
PORTD = (uint8_t) (start>>21) & 0xFF);
8
PORTA = (uint8_t) (ende<<3) & 0xFF);
9
PORTB = (uint8_t) (ende>>5) & 0xFF);
10
PORTC = (uint8_t) (ende>>13) & 0xFF);
11
PORTD = (uint8_t) (ende>>21) & 0xFF);
12
}
13

14

15
lichtan();
16
display_cursor(1,1);
17
display_string("Hallo ");
18
send_Ports(0,8192,536862720);
19
send_Ports(1,16384,536862720);
20
send_Ports(2,24576,536862720);
21
send_Ports(3,32768,536862720);
Gast #245433
Lesenswert?

Na dann, mal sehen:
1
/*
2
 * Compile with:
3
 * gcc -ggdb -O2 -o ee-adr.exe ee-adr.c
4
 */
5
#include <stdio.h>
6
#include <stdint.h>
7

8
#define CHECK_OVF    0
9
#define ENTRIES_TAB1 4000
10
#define ENTRIES_TAB2 255
11
#define SIZEOF_TAB1S (32 + 16) / 8
12
#define SIZEOF_TAB2S (8 + 16) / 8
13
#define EE_ADR_END   0x0FFF
14

15
typedef struct tab1_s {
16
        uint32_t a;
17
        int16_t  b;
18
} tab1_t;
19

20
typedef struct tab2_s {
21
        uint8_t a;
22
        int16_t  b;
23
} tab2_t;
24

25
tab1_t tab1[ENTRIES_TAB1];
26
tab2_t tab2[ENTRIES_TAB2];
27

28
#define EE_ADR_TAB1 (0)
29
#define EE_ADR_TAB2 (EE_ADR_TAB1 + (SIZEOF_TAB1S * ENTRIES_TAB1))
30

31
#if(((EE_ADR_TAB2 + (SIZEOF_TAB2S * ENTRIES_TAB2)) > EE_ADR_END) &&
32
CHECK_OVF)
33
#       error "Tabelsize overflow!"
34
#endif
35

36
int
37
main(void)
38
{
39
        printf("\n\n");
40
        printf(" - EEPROM starts @%p\n", 0);
41
        printf(" - Table 1 @%p;\tTable 2 @%p\n", EE_ADR_TAB1,
42
EE_ADR_TAB2);
43
        printf(" - EEPROM ends @%p\n", EE_ADR_END);
44
        printf(" - Overflow: %c\n", ((EE_ADR_TAB2 + (SIZEOF_TAB2S *
45
ENTRIES_TAB2)) > EE_ADR_END) ? 'Y' : 'N');
46
        
47
        return 0;
48
}

Und hier geht der Text weiter...
Gast #245436
Lesenswert?

Gute Idee und Fortschritt - aber bei der Erklärung zum Feature auch
gleich drauf hinweisen, daß nicht kilometerlange Sourcen hier gepostet
werden sollen...

Mit IE6 soweit alles ok - außer das "so geht's"-Fenster ist zu klein
und läßt sich nicht skalieren. D.h. man kann den Text nicht komplett
lesen.

----, (QuadDash).
OP Admin Persönliche Seite #245437
Lesenswert?

1
.include "4433def.inc"     ;bzw. 2333def.inc
2

3
.def temp = r16
4

5
         ldi temp, RAMEND  ;Stackpointer initialisieren
6
         out SPL, temp
7

8
         rcall sub1        ;sub1 aufrufen
9

10
loop:    rjmp loop
11

12

13
sub1:
14
                           ;hier könnten ein paar Befehle stehen
15
         rcall sub2        ;sub2 aufrufen
16
                           ;hier könnten auch ein paar Befehle stehen
17
         ret               ;wieder zurück
18

19
sub2:
20
                           ;hier stehen normalerweise die Befehle,
21
                           ;die in sub2 ausgeführt werden sollen
22
ret                        ;wieder zurück
Gast #245438
Lesenswert?

@----, (QuadDash)

Korrekt! Das Highlighting soll bei Erklärungen zu "einigen wenigen
Zeilen Code" dazu beitragen, den Code besser lesen zu können. So fasse
ich das jedenfalls auf! Quellcode als solcher gehört in Anhänge ;)
Gast #245440
Lesenswert?

@----: Die Größenverkrüppelung des "so geht's"-Fensters liegt am
Javascript; der sowieso ratsame Firefox bietet die Möglichkeit,
Javascript solchen Unfug zu untersagen (dann kann wenigstens mit dem
Anfasser unten rechts das Fenster vergrößert werden).

Ich will Andreas in keiner Weise kritisieren; (Also, Andreas, bitte
weghören!) aber mir ist wirklich unklar, was sich "Webdesigner"
eigentlich dabei denken, wenn sie dem Anwender mit ihren Webseiten
bescheuerte Fenstergrößenvorgaben machen.
Ich habe einen vernünftig auflösenden Bildschirm, ich muss nicht in
einem Briefmarkenfenster scrollen!
(So, Andreas, jetzt darfste wieder)

Nähere IMHO sinnvolle Firefox-Einstellungen siehe Anhang
(zu dem dargestellten Fenster gelangt man über
"Extras->Einstellungen", links "Web-Features" auswählen, dann den
Knopf "Erweitert" klicken, der rechts neben der Checkbox "JavaScript
aktivieren" steht)
Angehängte Dateien:
Gast #245446
Lesenswert?

Mit Opera klappts garnicht.

Überigens solltest du dich an den von dir gewählten Doctype halten. 220
Fehler beim validieren ist doch ein bisschen über dem Limit. Vielleicht
klappts dann auch besser mit der Darstellung in anderen Browsern.
Gast #245448
Lesenswert?

Da waren auch 2 einzelne Kommentare, war etwas schlecht formuliert. Hab
die Fehler mal durchgeschaut und die scheinen alle nur trivial zu sein,
gut ist das leider trotzdem nicht.

Ich hab mal nachgeschaut und so weit ich es verstanden habe muss ein
'textarea' immer innerhalb eines Forms sein. Das scheint bei deinem
Code nicht der Fall zu sein. Evtl mal ein Dummy-Form drumherum setzen
und schaun, obs dann in Opera klappt
Gast #245454
Lesenswert?

Interessant wäre noch eine Funktion, dass Quellcode-Anhänge auf Wunsch
mit Syntax Highlight angezeigt werden könnten.
Bezüglich der Fensterbreite: Dieser Thread wird bei mir zu breit
angezeigt. Bei:
http://www.mikrocontroller.net/forum/read-2-205156.html#205542
ist die Breite aber richtig.
Am meisten stört mich jedoch dass das Scrollrad der Maus nicht mehr zum
Scrollen verwendet werden kann wenn sich die Maus auf dem Quelltextfeld
befindet. Ansonsten betrachte ich das Highlighting als gute Idee.
Gast #245455
Lesenswert?

>Am meisten stört mich jedoch dass das Scrollrad der Maus nicht mehr
>zum Scrollen verwendet werden kann wenn sich die Maus auf dem
>Quelltextfeld befindet.

Das kann ich nicht bestätigen.

Aber es gibt noch dickere Probleme. Vermutlich wird erst der gesamte
Text im Eingabefeld für einen neuen Beitrag durch die Forensoftware
gejagt und danach gespeichert (nach Andeutungen von Andreas ist das
meine Vermutung). Zeilenumbrüche im Code und auch das Unterstreichen
im Code gibt seltsame Effekte:
1
/* Hier ist noch alles Normal */
2

3
const char pChar PROGMEM = 0xAA; /* Hier auch */
4
const char pChar __attribute__ ((section(.epprom))) = 0xAA;
Gast #245457
Lesenswert?

@Jens:

Du darfst natürlich Deine eigene Meinung haben, aber Du solltest doch
nicht gleich alles, was mal als Erweiterung eingebracht wird und Dir
nicht in den Kram passt, als "Schwachsinn" abwerten. Wie immer macht
auch hier der "Ton" die Musik :)
Gast #245458
Lesenswert?

Übrigens:

http://www.mikrocontroller.net/forum/read-2-204279.html#205923

Das ist eines der besten Beispiele, warum ich Syntaxhighlighting
befürworte! So liesse sich das ganze viel besser lesen:
1
int
2
main(void)
3
{
4
  DDRB = (1<<DDB0);
5
  PORTB = (0<<PB0);
6
  wert_alt = 5000;
7
  TCCR0 = (0<<CS02) | (1<<CS01) | (1<<CS00); //Vorteiler 64
8
  TCNT0 = (255-5000);                        //Timer vorladen
9
  TIMSK = (1<<TOIE0);                        //Interrupt enablen
10
  sei();
11
  for(;;)                                    //ever
12
  {
13
  }
14
}
Gast #245460
Lesenswert?

... im übrigen zwingt einen ja niemand dazu, Codefragmente mit den
entsprechenden Tags zu versehen.
Das ist ja das schöne, daß Andreas dieses Feature als *kann*-Option
hier eingebaut hat.

Also kann man auch konservativ nicht-gehighlighteten (argh!) Quelltext
hier veröffentlichen.


Dabei fällt mir auf, daß für den formatierten Sourcecode eine andere
Schriftart als die für den normalen Text verwendet wird - ich habe
meinen Browser instruiert, für "feste Breite" die Schriftart "Andale
Mono" zu verwenden, die lässt eine eindeutige Unterscheidung von 0 und
O (Null und Oh) zu.

Der formatierte Sourcecode verwendet aber anscheinend eine Courier -
und die ist diesbezüglich unpraktisch.

Könnte es sein, daß das Sourcecodeformatier-Skript da eine ungeschickte
Fontcodierung (in Ermangelung eines besseren Ausdrucks so genannt)
verwendet?
Gast #245461
Lesenswert?

Ich finde das schon sinnvoll.

Mal testen:
1
void lcd_status_am(void)
2
        {
3
        DATA_DIR_IN();          // Port 2 als Eingang
4
        LCD_CD_H();             // Commando High
5
        LCD_RD_L();             // Read Low
6
        LCD_CE_L();             // Chip Enable Low
7
        LCD_STATUS = LCD_READ;  // Status lesen
8
        LCD_CE_H();             // Chip Enable High
9
    LCD_RD_H();             // Read High
10
        LCD_STATUS &= (0x08);   // Bits ausmaskieren
11
        }
Gast #245464
Lesenswert?

Na toll, bei mir mit Opera sehe ich gar nichts :-(

nur Fehlermeldungen:


http://www.mikrocontroller.net/wikisoftware/index.php?title=-&action=raw&gen=js
Event thread: BeforeScript
Syntax error while loading: line 3 of linked script at
http://www.mikrocontroller.net/wikisoftware/index.php?title=-&action=raw&gen=js
:
&lt;Mikrocontroller.js&gt;
--^

http://www.mikrocontroller.net/wikisoftware/index.php?title=-&action=raw&gen=js
Event thread: BeforeScript
Syntax error while loading: line 3 of linked script at
http://www.mikrocontroller.net/wikisoftware/index.php?title=-&action=raw&gen=js
:
&lt;Mikrocontroller.js&gt;
--^


Konstantin
Gast #245466
Lesenswert?

Opera's an die Macht!

Ich hab mit 8.01 da's gleiche Problem :( Schade.

Trotzdem, gut gemacht ;) jedoch werd' ich deswegen nicht auf den
heißen Hennentöter umsteigen.

[mir sind einige Apostrophen hereingerut'scht..., alle bis auf einen
sind falsch]
Gast #245467
Lesenswert?

hier mein dankeschön an andreas schwarz...

das nenn ich service :-)

ich finde es ist durchaus bereichend für dein Forum, und danke, das du
dich dem vorschlag so unvoreingenommen hingegeben hast :-)

ich werde das neue feature ab jetzt auf jeden fall nutzen...
Gast #245470
Lesenswert?

Warum eigentlich so einen komischen Syntax-Highlighter mit Java-Script.
Kann die Forensoftware das highlighting noch selber übernehmen und dann
als ganz normales HTML ausgeben? Dann würd ich als Opera-User vielleicht
auch was sehen.
Gast #245472
Lesenswert?

Mir ist grad aufgefallen.. wenn ich die Seite gerade in Opera geöffnet
hab, dann sehe ich für ganz kurz (im ersten Post) den Source-Code,
jedoch nicht gehighlighted (morgen gibts nen Thread, wegen Denglisch..
oder gibts den schon.. ;) ) -hervorgehoben-.
Das liegt vielleicht auch daran, dass ich vorher "sofortiger
Seitenaufbau" eingestellt hab.. sonst stands (Standard) auf 1sek.
Gast #245473
Lesenswert?

Das liegt eher daran, dass das Javascript kurz braucht, bis es den
eigentlichen Inhalt unsichbar macht und was eigenes drüberlegt. Ich bin
auch für eine (funktionierende) serverseitige Lösung, denn so ist das
auch nicht das Wahre...
Gast #245477
Lesenswert?

im HTML Code steht das folgenede, sollte also gehen. aber bei mir
vermurkst es nur die Darstellung ein wenig...

<pre>wolle ma mal testen  <b>*g*</b><textarea rows="10" cols="70"
name="code" class="c">T E S T
</textarea></pre>
Gast #245478
Lesenswert?

ich währe (auch wegen der gefahr, das ganze programme im artikel
eingefügt werden) für einen iframe, der auf eine bestimmte größe
vordefiniert ist und den Sourcecode enthält.
so kann man schnell dran vorbeiscrollen, wenn einem der quellcode nicht
interessiert und doch den quellcode ansehen.
zusätzlich habe ich in einem anderen forum (delphi) einen button
entdeckt, mit dem man die 'kleine' scrollbox so vergrößern lassen
konnte, das man den ganzen Quellcode auf einmal sehen konnte.

die serverseite lösung unterstütze ich ebenfalls.

aber ein dickes dankeschön, and andreas, wegen dem forum und der
stetigen erweiterung, mit so allem möglichen!
Gast #245479
Lesenswert?

hab mir jetzt mal das ganze im IE angesehen, und da siehts überhaupt
anders aus:
die schriften sind anders, die frames in denen die codes stehen sind
komplett verschoben, und bunt ist auch nichts mehr.
auch sehe ich mit dem IE meinen test-code.

ich verwende den firefox - vieleicht liegts daran!??!
Gast #245480
Lesenswert?

@Henning:

Tut mir Leid, aber genau das fände ich furchtbar. Es ist mehr als
nervtötend, wenn man bei Code, der größer ist als 2-3 Zeilen immer
zuerst auf "Codebox vergrößern" klicken muss. Code gehört zum
Posting, daher könnte man genausogut argumentieren, dass man den
normalen Beitrags-Text zuerst versteckt und erst auf Klick die
restlichen Zeilen anzeigt.

(Beinahe) ideal finde ich es so wie bei diesem Forum:
http://www.c-plusplus.de/forum/viewtopic-var-t-is-115565.html
Dort ist es so, dass überbreiter Code das Layout trotzdem nicht
zerschießt. Das funktioniert dort übrigens ohne IFrame, mit dem
standard-konformes HTML unmöglich werden würde.
Gast #245481
Lesenswert?

hmm, mein gegenbeispiel:
eines dieser popigen phpBB boards, aber speziell die lösung mit dem
quellcode finde ich gut. Wie das hier gemacht wurde hab ich mir nicht
mehr genau angeschaut, aber ich finde das prinzip recht praktisch.
http://www.delphipraxis.net/topic59154_listbox+bilder+dem+text+voranstellen.html

standart mäßig ist das ganze übrigens ausgeklappt, obwohl ich finde,
das es ab 50 Zeilen automatisch zusammengeklappt sein sollte.
wenn das ganze zusammengeklappt ist, dann bitte auf etwas, in dem man
noch lesen kann, 20 zeilen gehen in ordnung
Gast #245487
Lesenswert?

Hmmm klappt das auch mit VHDL???

Mal schauen
1
entity Taktgenerator is
2
    Port ( rst            : in std_logic;
3
           clk40     : in std_logic;
4
           clk2Mhz     : out std_logic);
5
--         clk1khz     : out std_logic;
6
end Taktgenerator;
7
architecture Behavioral of Taktgenerator is
8
--signal teiler_1khz     : integer range 39999 downto 0;
9
begin
10
process (clk40, rst)  -- Erzeugung des 2 MHz Takt
11
variable teiler_2Mhz     : integer range 19 downto 0;
Gast #245488
Lesenswert?

hehe bei mir funzts zwar perefekt :-),
Aber für eine Lösung Serverseits wäre die funktion highlight_file in
php
sicher interessant. Ich hab mir mal schnell ein mini Script
gemacht und mal raufgeladen, die Farben sind allerdings für php...
um die "normalen" für C zu bekommen müsse man dann wohl oder übel
selbst so ein Syntax Highlighter machen... :-(

Naja hier mal das Beispiel mit dem php befehl:

http://www.benjenkins.co.uk/mef/electronic/highlight.php?script=ata2.c
Gast #245494
Lesenswert?

>Da scheint wohl ein Fehler im Parser zu sein!?

hmm ja scheint fast so, dass wenn nach einem / ein [folgt, dieses nicht
ausgewertet wird.
folglich müsste das auch scheifgehen:

/* blabla, c kommentar halt, ohne syntaxhighlighting*/
1
/*so nun aber richtig*/
2

3
main
4

5
{
6

7
}
#245503
Lesenswert?

@Rufus:

Ich nutze den Firefox für einige problematische Webseiten auch.

Das Forum möchte ich wegen der Mailbenachrichtigung mit dem
Standardbrowser besuchen (Links in den Mails). Firefox möchte ich aber
nicht als Standardbrowser haben, da ich meine Fotoalben (mit Audio und
MIDI) in HTML erstelle und mit dem Standardbrowser aufrufen möchte. Der
IE macht das selbst in einer Uraltversion ganz gut, für Firefox sind
Plugins erforderlich. Und das Plugin "Apple-Quicktime", das für MIDI
benötigt wird, ist so systemhungrig, dass die MIDIS nur stotternd
wiedergegeben werden (Laptop Toshiba SP4270, 500MHz, 320MB RAM). Mit IE
klappt das aber gut, selbst auf einem alten 386er.

Was ich etwas schade finde, ist die Tatsache, dass hier versucht wird,
Features zu implementieren, die einen Browser-"Glaubenskrieg"
entfachen können, da sie nicht auf allen Plattformen funktionieren.
Wenn es nur "nicht funktioniert" ist es ja noch in Ordnung, wenn aber
der Bildschirmaufbau zerrissen wird, dadurch das Fenster viel breiter
als der Bildschirm wird und man immer hinundher scrollen muss, dann
wird das Ganze lästig. Das tolle an diesem Forum war/ist ja neben der
Fachkompetenz vieler Teilnehmer auch die sachliche Aufmachung ohne
unnötigen Schnickschnack.

Wenn es einen Weg gibt, dass die Syntaxhervorhebung den Seitenaufbau
auf anderen Browsern nicht verunstaltet (auch wenn weder der Rahmen um
den Code noch Farben dargestellt werden sollten), dann bin ich dafür.
Wenn man aber gezwungen wird, einen bestimmten Browser zu benutzen,
dann finde ich das nicht so toll. Mir ist bewusst, dass es sich hier um
eine Testphase handelt und nicht um die Endversion. Deshalb möchte ich
meine Meinung nicht als "Meckerei" verstanden wissen, sondern als
Hinweis.

Übrigens:
Ist das Syntax-Highlighting auch für Programmcode im Anhang geplant?
Dort wäre es doch eigentlich bedeutend nützlicher. ;-)
Oder soll der Anhang wegen Copy&Paste "unbeschädigt" bleiben?

Nunja, "brauchen" tu ich das Highlighting nicht. Wenn es aber das
Layout nicht verstümmelt, dann befürworte ich es. Ansonsten war es ein
netter Versuch, wie es nunmal im Sinne des technischen Fortschritts
notwendig ist.

Bit- & Bytebruch...
...HanneS...
Gast #245517
Lesenswert?

ein Beispiel:
[c]
//********************************************************************** 
********
//  MSP-FET430P140 Demo - ADC12, Sequence of Conversions
(non-repeated)
//
//  This example shows how to perform A/D conversions on a sequence of
channels.
//  A single sequence of conversions is performed - one conversion each
on
//  channels A0, A1, A2, and A3. Each conversion uses AVcc and AVss for
the
//  references. The conversion results are stored in ADC12MEM0,
ADC12MEM1,
//  ADC12MEM2, and ADC12MEM3 respectively and are moved to
'results[]' upon
//  completion of the sequence. Test by applying voltages to pins A0,
A1, A2,
//  and A3, then setting and running to a break point at the
"_BIC..."
//  instruction in the ISR. To view the conversion results, open a
watch window
//  in C-Spy and view 'results' or view ADC12MEM0, ADC12MEM1,
ADC12MEM2, and
//  ADC12MEM3 in an ADC12 SFR window.

//  Note that a sequence has no restrictions on which channels are
converted.
//  For example, a valid sequence could be A0, A3, A2, A4, A2, A1, A0,
and A7.
//  See the MSP430x1xx User's Guide for instructions on using the
ADC12.
//
//
//                MSP430F149
//             -----------------
//            |                 |
//            |              A0 |<---- Vin0
//            |              A1 |<---- Vin1
//            |              A2 |<---- Vin2
//            |              A3 |<---- Vin3
//            |                 |
//
//
//  M.Mitchell
//  Texas Instruments, Inc
//  January, 2002
//  Adapted for mspgcc by Steve Underwood <steveu@coppice.org>
//********************************************************************** 
********

#include  <signal.h>
#include  <io.h>

static unsigned int results[4];         // Needs to be global in this
example
                                        // Otherwise, the compiler
removes it
                                        // because it is not used for
anything.

int main(void)
{
  WDTCTL = WDTPW+WDTHOLD;               // Stop watchdog timer
  P6SEL = 0x0F;                         // Enable A/D channel inputs
  ADC12CTL0 = ADC12ON+MSC+SHT0_2;       // Turn on ADC12, set sampling
time
  ADC12CTL1 = SHP+CONSEQ_1;             // Use sampling timer, single
sequence
  ADC12MCTL0 = INCH_0;                  // ref+=AVcc, channel = A0
  ADC12MCTL1 = INCH_1;                  // ref+=AVcc, channel = A1
  ADC12MCTL2 = INCH_2;                  // ref+=AVcc, channel = A2
  ADC12MCTL3 = INCH_3+EOS;              // ref+=AVcc, channel = A3, end
seq.
  ADC12IE = 0x08;                       // Enable ADC12IFG.3
  ADC12CTL0 |= ENC;                     // Enable conversions
  _EINT();                              // Enable interrupts

  while(1)
  {
    ADC12CTL0 |= ADC12SC;                 // Start conversion
    _BIS_SR(LPM0_bits);                   // Enter LPM0
  }
  return 0;
}

interrupt (ADC_VECTOR) ADC12ISR(void)
{
  results[0] = ADC12MEM0;               // Move results, IFG is
cleared
  results[1] = ADC12MEM1;               // Move results, IFG is
cleared
  results[2] = ADC12MEM2;               // Move results, IFG is cleared

  results[3] = ADC12MEM3;               // Move results, IFG is cleared

  _BIC_SR_IRQ(LPM0_bits);               // Clear LPM0, SET BREAKPOINT
HERE
}
[/]
Gast #245518
Lesenswert?

uups
1
//******************************************************************************
2
//  MSP-FET430P140 Demo - ADC12, Sequence of Conversions
3
(non-repeated)
4
//              
5
//  This example shows how to perform A/D conversions on a sequence of
6
channels.
7
//  A single sequence of conversions is performed - one conversion each
8
on 
9
//  channels A0, A1, A2, and A3. Each conversion uses AVcc and AVss for
10
the 
11
//  references. The conversion results are stored in ADC12MEM0,
12
ADC12MEM1,
13
//  ADC12MEM2, and ADC12MEM3 respectively and are moved to
14
'results[]' upon
15
//  completion of the sequence. Test by applying voltages to pins A0,
16
A1, A2, 
17
//  and A3, then setting and running to a break point at the
18
"_BIC..." 
19
//  instruction in the ISR. To view the conversion results, open a
20
watch window
21
//  in C-Spy and view 'results' or view ADC12MEM0, ADC12MEM1,
22
ADC12MEM2, and 
23
//  ADC12MEM3 in an ADC12 SFR window.
24

25
//  Note that a sequence has no restrictions on which channels are
26
converted. 
27
//  For example, a valid sequence could be A0, A3, A2, A4, A2, A1, A0,
28
and A7.
29
//  See the MSP430x1xx User's Guide for instructions on using the
30
ADC12.
31
//
32
//
33
//                MSP430F149
34
//             -----------------
35
//            |                 |
36
//            |              A0 |<---- Vin0
37
//            |              A1 |<---- Vin1
38
//            |              A2 |<---- Vin2
39
//            |              A3 |<---- Vin3
40
//            |                 |
41
//
42
//
43
//  M.Mitchell
44
//  Texas Instruments, Inc
45
//  January, 2002
46
//  Adapted for mspgcc by Steve Underwood <steveu@coppice.org>
47
//******************************************************************************
48

49
#include  <signal.h>
50
#include  <io.h>
51

52
static unsigned int results[4];         // Needs to be global in this
53
example
54
                                        // Otherwise, the compiler
55
removes it
56
                                        // because it is not used for
57
anything.
58

59
int main(void)
60
{ 
61
  WDTCTL = WDTPW+WDTHOLD;               // Stop watchdog timer
62
  P6SEL = 0x0F;                         // Enable A/D channel inputs
63
  ADC12CTL0 = ADC12ON+MSC+SHT0_2;       // Turn on ADC12, set sampling
64
time
65
  ADC12CTL1 = SHP+CONSEQ_1;             // Use sampling timer, single
66
sequence
67
  ADC12MCTL0 = INCH_0;                  // ref+=AVcc, channel = A0
68
  ADC12MCTL1 = INCH_1;                  // ref+=AVcc, channel = A1
69
  ADC12MCTL2 = INCH_2;                  // ref+=AVcc, channel = A2    
70
  ADC12MCTL3 = INCH_3+EOS;              // ref+=AVcc, channel = A3, end
71
seq.
72
  ADC12IE = 0x08;                       // Enable ADC12IFG.3
73
  ADC12CTL0 |= ENC;                     // Enable conversions
74
  _EINT();                              // Enable interrupts  
75

76
  while(1)
77
  {
78
    ADC12CTL0 |= ADC12SC;                 // Start conversion
79
    _BIS_SR(LPM0_bits);                   // Enter LPM0 
80
  }
81
  return 0;
82
}
83

84
interrupt (ADC_VECTOR) ADC12ISR(void)
85
{
86
  results[0] = ADC12MEM0;               // Move results, IFG is
87
cleared
88
  results[1] = ADC12MEM1;               // Move results, IFG is
89
cleared
90
  results[2] = ADC12MEM2;               // Move results, IFG is cleared
91
   
92
  results[3] = ADC12MEM3;               // Move results, IFG is cleared
93
 
94
  _BIC_SR_IRQ(LPM0_bits);               // Clear LPM0, SET BREAKPOINT
95
HERE
96
}
Gast #245522
Lesenswert?

>>Autor: ...HanneS... Lux (HanneS)
>>Datum: 14.08.2005 02:35

>>IE5, ungeflickter Bestandteil von WIN98SE, seit 2 Jahren ohne
>>Infektion
>>im WWW unterwegs (hoffentlich bleibt das so).

Und da wird behauptet ich sei der enzige der noch mit WIN98se arbeitet
gg

Übrigens bisher auch ohne Probleme :)
#245523
Lesenswert?

Wieso wird Code eigentlich auch umgebrochen?
IMHO sollten Codezeilen beliebig lang sein dürfen, da sie ohne
Verfälschung der Semantik nur sehr selten umgebrochen werden können.

http://www.c-plusplus.de/forum/ macht's z.B. vor: Postings sind
Fließtext (begrenzt nur durch die Breite des Browserfensters),
Codezeilen können aber beliebige Länge haben, und zwar ohne das Layout
zu zerschießen. Lange Codezeilen ziehen dort nur den Code-Bereich in
die Länge, nicht das ganze Posting.
#245525
Lesenswert?

Nur ein Test...
1
menu:               ;Auswerten der Tasten
2
 sbrc tfl,tre               ;rechte Taste? nein...
3
 inc mp                     ;ja, +1
4
 sbrc tfl,tli               ;linke Taste? nein...
5
 dec mp                     ;ja, -1
6
 cbr tfl,(1<<tre)|(1<<tli)  ;Tasten links und rechts sind erledigt
7
 cpi mp,255                 ;zu weit nach links gerutscht?
8
 brne pc+2                  ;nein...
9
 ldi mp,5                   ;ja, mit Menüpunkt 5 weiter machen
10
 cpi mp,9                   ;zu weit nach rechts gerutscht?
11
 brne pc+2                  ;nein...
12
 ldi mp,1                   ;ja, mit Menüpunkt 1 weiter machen
13
menujump:           ;Menüpunktaufruf
14
 ldi zl,low(menujmp)        ;Zeiger auf Sprungtabelle
15
 ldi zh,high(menujmp)
16
 add zl,mp                  ;Menüpunkt
17
 adc zh,null                ;dazu
18
 ijmp                       ;Menüpunkt aufrufen
#245526
Lesenswert?

Noch einer...

[asm]
menu:               ;Auswerten der Tasten
 sbrc tfl,tre               ;rechte Taste? nein...
 inc mp                     ;ja, +1
 sbrc tfl,tli               ;linke Taste? nein...
 dec mp                     ;ja, -1
 cbr tfl,(1<<tre)|(1<<tli)  ;Tasten links und rechts sind erledigt
 cpi mp,255                 ;zu weit nach links gerutscht?
 brne pc+2                  ;nein...
 ldi mp,5                   ;ja, mit Menüpunkt 5 weiter machen
 cpi mp,9                   ;zu weit nach rechts gerutscht?
 brne pc+2                  ;nein...
 ldi mp,1                   ;ja, mit Menüpunkt 1 weiter machen
menujump:           ;Menüpunktaufruf
 ldi zl,low(menujmp)        ;Zeiger auf Sprungtabelle
 ldi zh,high(menujmp)
 add zl,mp                  ;Menüpunkt
 adc zh,null                ;dazu
 ijmp                       ;Menüpunkt aufrufen
[/asm]
Persönliche Seite #245528
Lesenswert?

[MPASM]
menu:               ;Auswerten der Tasten
 sbrc tfl,tre               ;rechte Taste? nein...
 inc mp                     ;ja, +1
 sbrc tfl,tli               ;linke Taste? nein...
 dec mp                     ;ja, -1
 cbr tfl,(1<<tre)|(1<<tli)  ;Tasten links und rechts sind erledigt
 cpi mp,255                 ;zu weit nach links gerutscht?
 brne pc+2                  ;nein...
 ldi mp,5                   ;ja, mit Menüpunkt 5 weiter machen
 cpi mp,9                   ;zu weit nach rechts gerutscht?
 brne pc+2                  ;nein...
 ldi mp,1                   ;ja, mit Menüpunkt 1 weiter machen
menujump:           ;Menüpunktaufruf
 ldi zl,low(menujmp)        ;Zeiger auf Sprungtabelle
 ldi zh,high(menujmp)
 add zl,mp                  ;Menüpunkt
 adc zh,null                ;dazu
 ijmp                       ;Menüpunkt aufrufen
[/MPASM]
#245532
Lesenswert?

1
menu:               ;Auswerten der Tasten
2
 sbrc tfl,tre               ;rechte Taste? nein...
3
 inc mp                     ;ja, +1
4
 sbrc tfl,tli               ;linke Taste? nein...
5
 dec mp                     ;ja, -1
6
 cbr tfl,(1<<tre)|(1<<tli)  ;Tasten links und rechts sind erledigt
7
 cpi mp,255                 ;zu weit nach links gerutscht?
8
 brne pc+2                  ;nein...
9
 ldi mp,5                   ;ja, mit Menüpunkt 5 weiter machen
10
 cpi mp,9                   ;zu weit nach rechts gerutscht?
11
 brne pc+2                  ;nein...
12
 ldi mp,1                   ;ja, mit Menüpunkt 1 weiter machen
13
menujump:           ;Menüpunktaufruf
14
 ldi zl,low(menujmp)        ;Zeiger auf Sprungtabelle
15
 ldi zh,high(menujmp)
16
 add zl,mp                  ;Menüpunkt
17
 adc zh,null                ;dazu
18
 ijmp                       ;Menüpunkt aufrufen
#245533
Lesenswert?

Ob die Klammern nun unbedingt eingefärbt werden müssen lasse ich mal
offen. Aber blau eingefärbte ASM-Befehle und grüne Kommentare würden
schon etwas an AVR-Studio erinnern... ;-)

@Freak:
Danke, aber dein Befehl ist für C-Code, hat man mir zumindest im
anderen Thread mitgeteilt. Und C kann ich nicht, dafür bin ich zu
blöd.

...
Gast #245534
Lesenswert?

Ich dachte C steht einfach für Code. Deine ASM und CODE Tests haben ja
nicht funktioniert und C wird auch in vielen anderen Foren als
Codemarker benutzt.

C ist genauso leicht wie Asssembler. Nur, dass man für alles eine
Funktion hat, dass vieles noch einfacher ist, man sich viele Funktionen
merken muss und Bitverschiebungen und Zugriffe nicht so bekannt sind(
Ich habe sie noch nie benutzt und vergessen, wie sie gehen, deshalb
programmiere ich auf kleinen µCs nur ASM)
Persönliche Seite #245536
Lesenswert?

Dafür ist C zunächst einmal C, egal, auf was für einer Maschine.
Natürlich mit Implementierungsunterschieden (Wortbreite etc.,
Spezialitäten wie dem Harvard-Handling für AVR, verschiedene
Compilererweiterungen für Interrupthandling), aber ansonsten immer
gleich.

Assembler verwendet je nach Prozessorfamilie einen völlig anderen
Befehlssatz (halt den des betreffenden Prozessors) und obendrein auch
noch eine je nach Prozessor ziemlich unterschiedliche Syntax.

Wer in C auf einem AVR programmiert, der wird sich mit erträglichem
Aufwand auch an C auf einem ARM gewöhnen können.

Wer in AVR-Assembler programmiert, der wird beim Anblick des
ARM-Assemblers erst mal schlucken.
#245537
Lesenswert?

Ihr habt ja alle Recht (jeder auf seine Art), denn ich will da keinen
Glaubenskrieg der Programmiersprachen.

Auf größeren Systemen, die mit Betriebssystemen ausgestattet sind, ist
eine (möglichst portierbare) Hochsprache unabdingbar. C mag die bessere
Wahl sein, ich habe mich mit BASIC angefreundet weil es verfügbar war
(Commodore Plus/4, QBASIC, VB).

Beim AVR nützt mir C nur dann etwas, wenn ich es souverän beherrsche,
wenn also nur der AVR Neuland ist. Das ist bei mir aber nicht der Fall.
Wenn ich nun gleichzeitig die Tücken von C (bzw. der AVR-Lib) und die
Hardwarebesonderheiten erlernen muss, dann ist das etwas viel auf
einmal. Denn Programmierung ist für mich Hobby (ich bin also nicht
beruflich da hineingewachsen) und ich gehöre auch bei Weitem nicht zur
Script-Kiddy-Generation, da geht das Lernen etwas langsamer und
mühsamer vonstatten. Da muss ich mir keine zusätzlichen Probleme in
Form einer komplexen, abstrahierenden schaffen. Ich will nämlich kein
abstraktes Betriebssystem, sondern eine kleine, überschaubare, sehr
konkrete Hardware ansteuern. Daher beschränke ich mich beim AVR auf
Assembler, das ist (für mich) übersichtlicher und nachvollziehbarer.

Klar, ich muss dabei die zu lösenden Aufgaben in kleine Einheiten
zerlegen, aber das bleibt (für mich) halbwegs überschaubar, denn meine
Programme sind recht klein. Ich habe mehr mit Bitschubserei zu tun als
mit Rechnerei. Und da ist ASM für mich der leichtere Weg. Das hat auch
damit zu tun, dass man mit weniger Informationsquellen auskommt, es
gilt halt nur das Datenblatt (wenn man die separate Datei mit dem
Befehlssatz als ausgelagerten Teil des Datenblatts betrachtet). Auch
halte ich es auf einem System mit knappen Ressourcen für besser, wenn
man zu jedem (ASM-)Befehl weiß, warum man das so (und nicht anders)
gemacht hat.

Aber wie gesagt, das sind meine Argumente, die will ich niemandem
aufschwatzen. Jeder soll da seinen Weg gehen...

...
Gast #245538
Lesenswert?

Test:
1
#include "uart.h"
2

3

4
#define XTAL_CPU         12288000      /* 4Mhz */
5
#define UART_BAUD_RATE      56000      /* 9600 baud */
6

7

8

9
int main(void)
10
{
11
    unsigned int c;
12

13
    
14
    /*
15
     *  Initialize UART library, pass baudrate and avr cpu clock 
16
     *  with the macro UART_BAUD_SELECT()
17
     */
18
    uart_init( UART_BAUD_SELECT(UART_BAUD_RATE,XTAL_CPU) );
#245540
Lesenswert?

sry, für den test:

Mal sehen, ob das klappt:

[basic]
 for i:=0 to N-2 do
   for j:=0 to N-i-2 do
     if werte[j] > werte[j+1] then begin
       z:=werte[j];
       werte[j]:=werte[j+1];
       werte[j+1]:=z;
     end;
 end;
[/basic]

Und mal sehen, wie das mit C-Syntax aussieht:
1
 for i:=0 to N-2 do
2
   for j:=0 to N-i-2 do
3
     if werte[j] > werte[j+1] then begin
4
       z:=werte[j];
5
       werte[j]:=werte[j+1];
6
       werte[j+1]:=z;
7
     end;
8
 end;

...
#245548
Lesenswert?

> Wer lesen kann ist klar im Vorteil:

Richtig...
Aber so richtig glücklich bin ich damit nicht. Es sieht zwar schön bunt
aus, die Einfärbungen haben aber (bei AVRASM) weder Sinn noch Verstand.
Weniger ist manchmal mehr. Es würde reichen, zwischen
ASM-Schlüsselwörtern, Kommentaren und dem Rest (Konstanten, Register,
Bezeichner...) zu unterscheiden. Gut fände ich ASM-Schlüsselwörter
blau, Kommentare grün, Rest schwarz. Ich würde aber auch andere Farben
akzeptieren. Nur das was bisher war (ist es vielleicht schon
geändert?), ist zwar Zirkus-bunt, aber keine Syntax-Hervorhebung.
Deshalb nutze ich es auch nicht.

...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren