Forum: Mikrocontroller und Digitale Elektronik ASCII CODE Senden


von Michael H. (h_m)


Lesenswert?

Hallo,

ich möchte gerne mit meinem ATmega88PA an LabView…….. ASCII Zeichen mit 
der Seriellen –Schnittstelle senden.

Dazu möchte ich ein Programm das folgendes macht.:

Permanentes Aussenden der ASCII-Zeichen von 00h-ffh im Abstand von 200ms

Ist das mit meiner Anfänger Libary überhaupt möglich ?
Anton kann ich ja senden, das funktioniert.

Wenn Ja könnte mir das Bitte jemand Zeigen wie man das richtig 
formuliert/schreibt zu meinem Code passend?


1
  /*
2
 * serial1.h
3
 */ 
4
 
5
#ifdef UCSR0A
6
7
//Initialisiert UART gegebener Oszillatorfrequenz und Baudrate
8
void uart_init(long Oszi, long Baud) 
9
{
10
  UBRR0L = (unsigned char)(Oszi / 16L / Baud - 1); 
11
  UBRR0H = (unsigned char)((Oszi / 16L / Baud - 1) >> 8);
12
  UCSR0A = 0x00;
13
  UCSR0B = UCSR0B | (1 << TXEN0) | (1 << RXEN0);
14
  UCSR0C = UCSR0C | (1 << UMSEL01) | (1 << UCSZ01) |
15
           (1 << UCSZ00);
16
}
17
18
//Empfaengt 1 Byte vom UART
19
unsigned char getchar2(void)
20
{
21
  while (!(UCSR0A & (1 << RXC0)));
22
  return UDR0;
23
}
24
25
//Sendet 1 Byte an UART
26
void putchar2(unsigned char data)  
27
{ 
28
  while (!(UCSR0A & (1 << UDRE0)));
29
  UDR0 = (char)data;
30
}
31
32
//Sendet String an UART
33
void puts2(char *str) 
34
{
35
  unsigned char c;
36
  while ((c = *str++) != '\0')
37
    putchar2(c);
38
}
39
40
#else
41
42
//Initialisiert UART gegebner Oszillatorfrequenz und Baudrate
43
void uart_init(long Oszi, long Baud)
44
{
45
  UBRRL = (unsigned char)(Oszi / 16L / Baud - 1);
46
  UBRRH = (unsigned char)((Oszi / 16L / Baud - 1) >> 8);
47
  UCSRA = 0x00;
48
  UCSRB = UCSRB | (1 << TXEN) | (1 << RXEN); //RX TX Enable
49
  //Bit Mode
50
  UCSRC = UCSRC | (1 << URSEL) | (1 << UCSZ1) | (1 << UCSZ0); 
51
}
52
53
//Empfaengt 8 Daten Bits vom UART
54
unsigned char getchar2(void)
55
{
56
  while (!(UCSRA & (1 < <RXC)));   
57
  return UDR;
58
}
59
60
//Sendet 8 Daten Bits an UART
61
void putchar2(unsigned char data)  
62
{ 
63
  while (!(UCSRA & (1 << UDRE)));
64
  UDR = (char)data;
65
}     
66
67
//Sendet String an UART
68
void puts2(char *str) 
69
{
70
  unsigned char c;
71
  while ((c = *str++) != '\0')
72
    putchar2(c);
73
}
74
75
#endif
1
 /*
2
 * Serial1-Test.c
3
 *  senden an Labview
4
 */ 
5
6
#define F_CPU 16000000UL
7
#define BAUD  9600UL
8
9
#include <avr/io.h>
10
#include "serial1.h"
11
12
int main(void)
13
{   
14
  char z;
15
  
16
  //UART mit Clockfrequenz und Baudrate initialisieren
17
  uart_init(F_CPU, BAUD);  
18
19
  while (1)
20
  {
21
    //z = getchar2();        //ein Zeichen einlesen 
22
    //if (z == 'a')
23
      puts2(" Anton\r\n"); //Zeichenkette ausgeben
24
    //else if (z == 'b') 
25
    //puts2(" Berta\r\n");  
26
  }
27
}

Grüsse Huber

: Verschoben durch User
von Julian W. (julian-w) Benutzerseite


Lesenswert?

Forum: Projekte & Code
Hier könnt ihr eure Projekte, Schaltungen oder Codeschnipsel vorstellen 
und diskutieren.

Bitte hier keine Fragen posten !

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.