Staind
27.05.2011, 15:16
Hallo,
Bin leider noch blutiger Anfänger im programmieren von uC.
(Bin vor 2 Wochen angefangen mit dem assembler Programmieren, sitze aber
teilweise Nachmittags 6-8 Stunden vor mein mC und versuche assembler zu
verstehen, was auch eigentlich ganz gut klappt :-) )
also ich bin momentan voll im rausch zu lernen wie man uC programmiert
und wie man sie benutzt.
Habe das einsteiger set von Myavr. Dort geht es im aktuellen Kapitel um
das Senden über den Com Port.
Das assembler Programm funktioniert so weit. Also der uC sendet das wort
"Hallo " per knopfdruck über das UART Datenregister. Dieses kann ich auch mit der
beigefügten Software myAVR Controlcenter Build 698 am Pc empfangen.
Hier mal das mC Programm
[
;+-----------------------------------------------------------------------------
;| Title : Assembler Grundgerüst für ATmega8
;+-----------------------------------------------------------------------------
;| Funktion : ...
;| Schaltung : ...
;+-----------------------------------------------------------------------------
;| Prozessor : ATmega8
;| Takt : 3,6864 MHz
;| Sprache : Assembler
;| Datum : ...
;| Version : ...
;| Autor : ...
;+-----------------------------------------------------------------------------
.include "AVR.H"
;------------------------------------------------------------------------------
begin:
rjmp main ; RESET External Pin, Power-on Reset, Brown-out Reset and Watchdog Reset
reti ; INT0 External Interrupt Request 0
reti ; INT1 External Interrupt Request 1
reti ; TIMER2 COMP Timer/Counter2 Compare Match
reti ; TIMER2 OVF Timer/Counter2 Overflow
reti ; TIMER1 CAPT Timer/Counter1 Capture Event
reti ; TIMER1 COMPA Timer/Counter1 Compare Match A
reti ; TIMER1 COMPB Timer/Counter1 Compare Match B
reti ; TIMER1 OVF Timer/Counter1 Overflow
reti ; TIMER0 OVF Timer/Counter0 Overflow
reti ; SPI, STC Serial Transfer Complete
reti ; USART, RXC USART, Rx Complete
reti ; USART, UDRE USART Data Register Empty
reti ; USART, TXC USART, Tx Complete
reti ; ADC ADC Conversion Complete
reti ; EE_RDY EEPROM Ready
reti ; ANA_COMP Analog Comparator
reti ; TWI 2-wire Serial Interface
reti ; SPM_RDY Store Program Memory Ready
;------------------------------------------------------------------------------
main:
ldi r16,hi8(RAMEND) ; Main program start
out SPH,r16 ; Set Stack Pointer to top of RAM
ldi r16,lo8(RAMEND)
out SPL,r16
sbi UCSRB,3
ldi r16, 23
out UBRRL,r16
cbi DDRD,2
sbi PORTD,2
;------------------------------------------------------------------------------
mainloop: wdr
sbis PIND,2
rjmp Taster1
rjmp mainloop
;------------------------------------------------------------------------------
Taster1: ldi r16,'H'
rcall putChar
ldi r16,'a'
rcall putChar
ldi r16,'l'
rcall putChar
ldi r16,'l'
rcall putChar
ldi r16,'o'
rcall putChar
ldi r16,' '
rcall putChar
ret
putChar: sbis UCSRA,5
rjmp putChar
out UDR,r16
ret
Jetzt möchte ich allerdings dieses über mein C# Programm Empfangen.
Dort weiß ich aber noch nicht wie ich dieses realisieren kann.
Das Wort "Hallo" (bzw er wiederholt das ein paar mal, da der tastendruck zu lang ist...)soll einfach nur zusammengesetzt, und in einer TextBox
ausgegeben werden sobald ich den button1 drücke.
Der Port an dem mein uC sitzt ist der Com Port 3.
Hier mein aktuelles C# Programm (in C# kenne ich mich eingentlich gut
aus)
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO.Ports;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
SerialPort port = new SerialPort("COM3",9600,Parity.None,8,StopBits.One);
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
textBox1.Text = "???";
}
}
}
Es wäre nett wenn mir einer das Programm zu ende programmieren würde.
Vielleicht erkenne ich die funktionsweise so. Ansonsten würde ich noch
1-2 fragen stellen :-)
mfg André
Bin leider noch blutiger Anfänger im programmieren von uC.
(Bin vor 2 Wochen angefangen mit dem assembler Programmieren, sitze aber
teilweise Nachmittags 6-8 Stunden vor mein mC und versuche assembler zu
verstehen, was auch eigentlich ganz gut klappt :-) )
also ich bin momentan voll im rausch zu lernen wie man uC programmiert
und wie man sie benutzt.
Habe das einsteiger set von Myavr. Dort geht es im aktuellen Kapitel um
das Senden über den Com Port.
Das assembler Programm funktioniert so weit. Also der uC sendet das wort
"Hallo " per knopfdruck über das UART Datenregister. Dieses kann ich auch mit der
beigefügten Software myAVR Controlcenter Build 698 am Pc empfangen.
Hier mal das mC Programm
[
;+-----------------------------------------------------------------------------
;| Title : Assembler Grundgerüst für ATmega8
;+-----------------------------------------------------------------------------
;| Funktion : ...
;| Schaltung : ...
;+-----------------------------------------------------------------------------
;| Prozessor : ATmega8
;| Takt : 3,6864 MHz
;| Sprache : Assembler
;| Datum : ...
;| Version : ...
;| Autor : ...
;+-----------------------------------------------------------------------------
.include "AVR.H"
;------------------------------------------------------------------------------
begin:
rjmp main ; RESET External Pin, Power-on Reset, Brown-out Reset and Watchdog Reset
reti ; INT0 External Interrupt Request 0
reti ; INT1 External Interrupt Request 1
reti ; TIMER2 COMP Timer/Counter2 Compare Match
reti ; TIMER2 OVF Timer/Counter2 Overflow
reti ; TIMER1 CAPT Timer/Counter1 Capture Event
reti ; TIMER1 COMPA Timer/Counter1 Compare Match A
reti ; TIMER1 COMPB Timer/Counter1 Compare Match B
reti ; TIMER1 OVF Timer/Counter1 Overflow
reti ; TIMER0 OVF Timer/Counter0 Overflow
reti ; SPI, STC Serial Transfer Complete
reti ; USART, RXC USART, Rx Complete
reti ; USART, UDRE USART Data Register Empty
reti ; USART, TXC USART, Tx Complete
reti ; ADC ADC Conversion Complete
reti ; EE_RDY EEPROM Ready
reti ; ANA_COMP Analog Comparator
reti ; TWI 2-wire Serial Interface
reti ; SPM_RDY Store Program Memory Ready
;------------------------------------------------------------------------------
main:
ldi r16,hi8(RAMEND) ; Main program start
out SPH,r16 ; Set Stack Pointer to top of RAM
ldi r16,lo8(RAMEND)
out SPL,r16
sbi UCSRB,3
ldi r16, 23
out UBRRL,r16
cbi DDRD,2
sbi PORTD,2
;------------------------------------------------------------------------------
mainloop: wdr
sbis PIND,2
rjmp Taster1
rjmp mainloop
;------------------------------------------------------------------------------
Taster1: ldi r16,'H'
rcall putChar
ldi r16,'a'
rcall putChar
ldi r16,'l'
rcall putChar
ldi r16,'l'
rcall putChar
ldi r16,'o'
rcall putChar
ldi r16,' '
rcall putChar
ret
putChar: sbis UCSRA,5
rjmp putChar
out UDR,r16
ret
Jetzt möchte ich allerdings dieses über mein C# Programm Empfangen.
Dort weiß ich aber noch nicht wie ich dieses realisieren kann.
Das Wort "Hallo" (bzw er wiederholt das ein paar mal, da der tastendruck zu lang ist...)soll einfach nur zusammengesetzt, und in einer TextBox
ausgegeben werden sobald ich den button1 drücke.
Der Port an dem mein uC sitzt ist der Com Port 3.
Hier mein aktuelles C# Programm (in C# kenne ich mich eingentlich gut
aus)
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO.Ports;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
SerialPort port = new SerialPort("COM3",9600,Parity.None,8,StopBits.One);
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
textBox1.Text = "???";
}
}
}
Es wäre nett wenn mir einer das Programm zu ende programmieren würde.
Vielleicht erkenne ich die funktionsweise so. Ansonsten würde ich noch
1-2 fragen stellen :-)
mfg André