Hallo zusammen,
bin neu hier und habe seit ca. 1 Monat einen kleinen Nibo2. Ich habe ihn mir gekauft um C zu erlernen, habe es aber nicht übersehen können dass man den Nibo2 auch in Assembler programmieren kann. Nun habe ich versucht zu recherchieren wie man Assembler Code in C integrieren kann und habe nichts richtiges gefunden (Vielleicht habe ich aber einfach nur falsch gesucht). Nach längerem herumprobieren habe ich eine Lösung gefunden. Ich benutze AVR Studio 4 mit dem normalem avr-gcc Compiler. So sieht es dann aus:
Hiermit kann man nun die 2 Frontscheinwerfer anschalten:
int main()
{
//hier kann C Code stehen
asm
(
"ldi R16,0b11111111" "\n\t"
"out 0x17,R16" "\n\t"
"ldi R17,0b00100000" "\n\t"
"out 0x18,R17" "\n\t"
);
//hier kann C Code stehen
}
Und so sieht es aus wenn man den Inhalt (zumindest Dezimal) von PORTB auf dem Nibo2 Display anzeigen lassen will:
#include <nibo/niboconfig.h>
#include <nibo/display.h>
#include <nibo/gfx.h>
#include <stdio.h>
#include <avr/io.h>
#include <stdint.h>
int main()
{
display_init();
gfx_init();
asm
(
"ldi R16,0b11111111" "\n\t"
"out 0x17,R16" "\n\t"
"ldi R17,0b11111111" "\n\t"
"out 0x18,R17" "\n\t"
);
int port_b =PORTB;
char text[3]="---";
sprintf(text, "%d", port_b);
gfx_move(0, 20);
gfx_print_text(text);
return 0;
}
Der Code ist sicher nicht der allerbeste da ich noch blutiger Anfänger bin und entschuldigt bitte wenn ich ab und zu nicht die richtigen Begriffe verwende aber er funktioniert schon mal. Wenn ich das dann richtig sehe kann mann damit den Nibo2 dann als Experimentierboard benutzen um Assembler zu lernen.
Hier noch eine URL der Portbelegung:
Portbelegung ATMega 128 Nibo2
Wenn interesse an weitern Projekten besteht, schreibt es mir einfach. Ich werde mich in die Materie sicherlich weiter einarbeiten. Für Fragen oder Anregungen habe ich natürlich ein offenes Ohr.
Grüße, Arcanix