M
mark
Guest
hei folkens ..
Jeg vet at dette ganske enkelt .. men jeg fortsatt får problemer med dette ...
ok, først jeg ha min gamle styret (1 ATTINY 2313 max232) som fortsatt fungerer fint (jeg anta ... u kan se hvorfor i mitt neste forklaring ...) og min nye styret (1 ATTINY 2313 max 232).
problemet er:
1.i min gamle styret, programmet nedenfor kjøres godt ... men i mine nye styret doesnt kjøre well.Both bord, jeg teste med HyperTerminal ... i min gamle styret alltid tilbake godt, men i det nye styret (returen tegn 'w' eller rot tegnet eller et annet tegn på at doesnt i ASCII-tabellen ...)
Code:/************************************************* ****
Chip type: ATTINY2313
Klokke frekvens: 4,000000 MHz************************************************** *** /# include <tiny2313.h>
# include <delay.h># define RXB8 1
# define TXB8 0
# define UPE 2
# define OVR 3
# define FE 4
# define UDRE 5
# define RXC 7# define FRAMING_ERROR (1 <<FE)
# define PARITY_ERROR (1 <<UPE)
# define DATA_OVERRUN (1 <<OVR)
# define DATA_REGISTER_EMPTY (1 <<UDRE)
# define RX_COMPLETE (1 <<RXC)/ / Få et tegn fra USART Receiver
# ifndef _DEBUG_TERMINAL_IO_
# define _ALTERNATE_GETCHAR_
# pragma brukes
char getchar (void)
(
char status, data;
mens 1 ()
(
while (((status = UCSRA) & RX_COMPLETE) == 0);
data = UDR;
if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN)) == 0)
return data;
);
)
# pragma brukt -
# endif/ / Skriv et tegn til USART Transmitter
# ifndef _DEBUG_TERMINAL_IO_
# define _ALTERNATE_PUTCHAR_
# pragma brukes
void putchar (char c)
(
while ((UCSRA & DATA_REGISTER_EMPTY) == 0);
UDR = c;
)
# pragma brukt -
# endif/ / Standard Input / Output funksjoner
# include <stdio.h>/ / Deklarerer globale variabler hervoid main (void)
(
char temp;
/ / USART initialization
/ / Kommunikasjon Parameters: 9 Data, 1 stopp, ingen paritet
/ / USART Mottaker: On
/ / USART Transmitter: On
/ / USART Mode: Asynkron
/ / USART Baud Rate: 9600
UCSRA = 0x00;
UCSRB = 0x1C;
UCSRC = 0x06;
UBRRH = 0x00;
UBRRL = 0x19;mens 1 ()
(
/ / Place your code here
temp = getchar ();
UCSRB = UCSRB & 0xFE;
putchar (temp);
)
Jeg vet at dette ganske enkelt .. men jeg fortsatt får problemer med dette ...
ok, først jeg ha min gamle styret (1 ATTINY 2313 max232) som fortsatt fungerer fint (jeg anta ... u kan se hvorfor i mitt neste forklaring ...) og min nye styret (1 ATTINY 2313 max 232).
problemet er:
1.i min gamle styret, programmet nedenfor kjøres godt ... men i mine nye styret doesnt kjøre well.Both bord, jeg teste med HyperTerminal ... i min gamle styret alltid tilbake godt, men i det nye styret (returen tegn 'w' eller rot tegnet eller et annet tegn på at doesnt i ASCII-tabellen ...)
Code:/************************************************* ****
Chip type: ATTINY2313
Klokke frekvens: 4,000000 MHz************************************************** *** /# include <tiny2313.h>
# include <delay.h># define RXB8 1
# define TXB8 0
# define UPE 2
# define OVR 3
# define FE 4
# define UDRE 5
# define RXC 7# define FRAMING_ERROR (1 <<FE)
# define PARITY_ERROR (1 <<UPE)
# define DATA_OVERRUN (1 <<OVR)
# define DATA_REGISTER_EMPTY (1 <<UDRE)
# define RX_COMPLETE (1 <<RXC)/ / Få et tegn fra USART Receiver
# ifndef _DEBUG_TERMINAL_IO_
# define _ALTERNATE_GETCHAR_
# pragma brukes
char getchar (void)
(
char status, data;
mens 1 ()
(
while (((status = UCSRA) & RX_COMPLETE) == 0);
data = UDR;
if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN)) == 0)
return data;
);
)
# pragma brukt -
# endif/ / Skriv et tegn til USART Transmitter
# ifndef _DEBUG_TERMINAL_IO_
# define _ALTERNATE_PUTCHAR_
# pragma brukes
void putchar (char c)
(
while ((UCSRA & DATA_REGISTER_EMPTY) == 0);
UDR = c;
)
# pragma brukt -
# endif/ / Standard Input / Output funksjoner
# include <stdio.h>/ / Deklarerer globale variabler hervoid main (void)
(
char temp;
/ / USART initialization
/ / Kommunikasjon Parameters: 9 Data, 1 stopp, ingen paritet
/ / USART Mottaker: On
/ / USART Transmitter: On
/ / USART Mode: Asynkron
/ / USART Baud Rate: 9600
UCSRA = 0x00;
UCSRB = 0x1C;
UCSRC = 0x06;
UBRRH = 0x00;
UBRRL = 0x19;mens 1 ()
(
/ / Place your code here
temp = getchar ();
UCSRB = UCSRB & 0xFE;
putchar (temp);
)