Getting consistent garbage on serialport terminal using 8051 UART Announcing the arrival of...
Identify plant with long narrow paired leaves and reddish stems
How come Sam didn't become Lord of Horn Hill?
Why do people hide their license plates in the EU?
Check which numbers satisfy the condition [A*B*C = A! + B! + C!]
Error "illegal generic type for instanceof" when using local classes
What does the "x" in "x86" represent?
Why was the term "discrete" used in discrete logarithm?
What's the meaning of 間時肆拾貳 at a car parking sign
Naming the result of a source block
Why is my conclusion inconsistent with the van't Hoff equation?
What is Wonderstone and are there any references to it pre-1982?
Using audio cues to encourage good posture
What exactly is a "Meth" in Altered Carbon?
2001: A Space Odyssey's use of the song "Daisy Bell" (Bicycle Built for Two); life imitates art or vice-versa?
Should I use a zero-interest credit card for a large one-time purchase?
ListPlot join points by nearest neighbor rather than order
How do I keep my slimes from escaping their pens?
How widely used is the term Treppenwitz? Is it something that most Germans know?
Should I discuss the type of campaign with my players?
Bete Noir -- no dairy
Is it fair for a professor to grade us on the possession of past papers?
Can I cast Passwall to drop an enemy into a 20-foot pit?
Apollo command module space walk?
How does debian/ubuntu knows a package has a updated version
Getting consistent garbage on serialport terminal using 8051 UART
Announcing the arrival of Valued Associate #679: Cesar Manara
Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern)Valid 16550 UART settingsUsing an Ettus USRP on an embedded systemGetting garbage input and output over serial connection with microcontrollerserial port over tcp without terminal serverSerial console login on OSXMy UART receive a null character sometimesWhat is the type of the UART chip used by Virtual Box?Clear command for serial terminal over UARTTrying to get UART to work on a dsPIC33EV256GM102Reading L&T ER300P based on DLMS Protocol
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ height:90px;width:728px;box-sizing:border-box;
}
This is my first time dealing with micro controllers and I was assigned to assemble a board with a 8051 micro controller and I was given a code to program it with.
The code should print out "Testing Serial UART" at the beginning but instead it prints out garbage every time I press the reset button to make the code run from the
beginning again I get the same consistent garbage.
I have triple checked the baud rate which is set to 9600 and yet with no luck in running it.
Here is my code:
#include <reg51.h>
#define Input P0
#define Output P2
void SetupSerial()
{
SCON = 0x50; /* SCON: mode 1, 8-bit UART, enable rcvr */
TMOD |= 0x20; /* TMOD: timer 1, mode 2, 8-bit reload */
/* TH1 = ( 256 - ((22.1184MHZ / 12 ) / 32) / BaudRate ) = 256 - 6 = 250 */
TH1 = 250; /* TH1: reload value for 9600 baud @ 22.1184MHz */
TR1 = 1; /* TR1: timer 1 run */
TI = 1;
RI = 1;
}
void __putchar(unsigned char ch)
{
SBUF = ch;
while(TI == 0);
TI = 0;
}
unsigned char __getchar()
{
unsigned char ch;
while(RI == 0);
ch = SBUF;
RI = 0;
return ch;
}
void printString(const char *s)
{
while(*s)
__putchar(*(s++));
}
unsigned char ToASCII(unsigned char val)
{
if( val >= 0 && val <=9 )
return val + '0';
else if ( val >= 0x0A && val <= 0x0F)
return val + 'A' - 10;
else
return ' ';
}
void main()
{
unsigned char key = ' ';
unsigned char half_port;
SetupSerial();
printString("rnTesting Serial UARTrn");
P1 = 0x0F;
while(1)
{
key = __getchar();
switch(key)
{
case 'R':
case 'r':
half_port = Input & 0x0F;
__putchar( ToASCII(half_port));
Output = ~half_port;
break;
}
}
}
and this is the diagram I am working on:
This is the garbage i get and every time i press reset on the micro controller the same chars keeps printing from what i understood from this assignment each time we reset it should print "Testing Serial UART" until i send an "R" then it goes on to do something else
And this is my board:
this is the string that appears in text it was only repeated because i pressed reset a few times so the baud rate isn't the problem
serial-port embedded microcontroller
New contributor
add a comment |
This is my first time dealing with micro controllers and I was assigned to assemble a board with a 8051 micro controller and I was given a code to program it with.
The code should print out "Testing Serial UART" at the beginning but instead it prints out garbage every time I press the reset button to make the code run from the
beginning again I get the same consistent garbage.
I have triple checked the baud rate which is set to 9600 and yet with no luck in running it.
Here is my code:
#include <reg51.h>
#define Input P0
#define Output P2
void SetupSerial()
{
SCON = 0x50; /* SCON: mode 1, 8-bit UART, enable rcvr */
TMOD |= 0x20; /* TMOD: timer 1, mode 2, 8-bit reload */
/* TH1 = ( 256 - ((22.1184MHZ / 12 ) / 32) / BaudRate ) = 256 - 6 = 250 */
TH1 = 250; /* TH1: reload value for 9600 baud @ 22.1184MHz */
TR1 = 1; /* TR1: timer 1 run */
TI = 1;
RI = 1;
}
void __putchar(unsigned char ch)
{
SBUF = ch;
while(TI == 0);
TI = 0;
}
unsigned char __getchar()
{
unsigned char ch;
while(RI == 0);
ch = SBUF;
RI = 0;
return ch;
}
void printString(const char *s)
{
while(*s)
__putchar(*(s++));
}
unsigned char ToASCII(unsigned char val)
{
if( val >= 0 && val <=9 )
return val + '0';
else if ( val >= 0x0A && val <= 0x0F)
return val + 'A' - 10;
else
return ' ';
}
void main()
{
unsigned char key = ' ';
unsigned char half_port;
SetupSerial();
printString("rnTesting Serial UARTrn");
P1 = 0x0F;
while(1)
{
key = __getchar();
switch(key)
{
case 'R':
case 'r':
half_port = Input & 0x0F;
__putchar( ToASCII(half_port));
Output = ~half_port;
break;
}
}
}
and this is the diagram I am working on:
This is the garbage i get and every time i press reset on the micro controller the same chars keeps printing from what i understood from this assignment each time we reset it should print "Testing Serial UART" until i send an "R" then it goes on to do something else
And this is my board:
this is the string that appears in text it was only repeated because i pressed reset a few times so the baud rate isn't the problem
serial-port embedded microcontroller
New contributor
(1) A bit of general advice: you should use defined constants whenever possible. Your0x50
should be replaced withSM1|REN
orSCON_MODE1|REN
, and your0x20
should be replaced withM1
orTMOD_MODE2
, or whatever they’re called in your environment. (2) What areInput
andOutput
? (3) What debugging have you done? (3a) You say that you “get the same consistent garbage”; have you actually taken screenshots and verified that the results are always the same nonsense characters? (3b) Have you tried sending other strings? … (Cont’d)
– G-Man
15 hours ago
(Cont’d) … Strings of many spaces,@
signs or question marks (?
) might yield interesting results. (3c) I’m sorry; I see that you say that you’ve checked the baud rate three times — but a ratio of 23 characters sent to 150 characters received is a big red flag of a baud rate discrepancy. Have you tried changing the settings on your SerialPort Terminal? (3d) Have you tried using the “Hex” Data Mode in your SerialPort Terminal? … … … … … … … … … … … … … … Please do not respond in comments; edit your question to make it clearer and more complete.
– G-Man
15 hours ago
add a comment |
This is my first time dealing with micro controllers and I was assigned to assemble a board with a 8051 micro controller and I was given a code to program it with.
The code should print out "Testing Serial UART" at the beginning but instead it prints out garbage every time I press the reset button to make the code run from the
beginning again I get the same consistent garbage.
I have triple checked the baud rate which is set to 9600 and yet with no luck in running it.
Here is my code:
#include <reg51.h>
#define Input P0
#define Output P2
void SetupSerial()
{
SCON = 0x50; /* SCON: mode 1, 8-bit UART, enable rcvr */
TMOD |= 0x20; /* TMOD: timer 1, mode 2, 8-bit reload */
/* TH1 = ( 256 - ((22.1184MHZ / 12 ) / 32) / BaudRate ) = 256 - 6 = 250 */
TH1 = 250; /* TH1: reload value for 9600 baud @ 22.1184MHz */
TR1 = 1; /* TR1: timer 1 run */
TI = 1;
RI = 1;
}
void __putchar(unsigned char ch)
{
SBUF = ch;
while(TI == 0);
TI = 0;
}
unsigned char __getchar()
{
unsigned char ch;
while(RI == 0);
ch = SBUF;
RI = 0;
return ch;
}
void printString(const char *s)
{
while(*s)
__putchar(*(s++));
}
unsigned char ToASCII(unsigned char val)
{
if( val >= 0 && val <=9 )
return val + '0';
else if ( val >= 0x0A && val <= 0x0F)
return val + 'A' - 10;
else
return ' ';
}
void main()
{
unsigned char key = ' ';
unsigned char half_port;
SetupSerial();
printString("rnTesting Serial UARTrn");
P1 = 0x0F;
while(1)
{
key = __getchar();
switch(key)
{
case 'R':
case 'r':
half_port = Input & 0x0F;
__putchar( ToASCII(half_port));
Output = ~half_port;
break;
}
}
}
and this is the diagram I am working on:
This is the garbage i get and every time i press reset on the micro controller the same chars keeps printing from what i understood from this assignment each time we reset it should print "Testing Serial UART" until i send an "R" then it goes on to do something else
And this is my board:
this is the string that appears in text it was only repeated because i pressed reset a few times so the baud rate isn't the problem
serial-port embedded microcontroller
New contributor
This is my first time dealing with micro controllers and I was assigned to assemble a board with a 8051 micro controller and I was given a code to program it with.
The code should print out "Testing Serial UART" at the beginning but instead it prints out garbage every time I press the reset button to make the code run from the
beginning again I get the same consistent garbage.
I have triple checked the baud rate which is set to 9600 and yet with no luck in running it.
Here is my code:
#include <reg51.h>
#define Input P0
#define Output P2
void SetupSerial()
{
SCON = 0x50; /* SCON: mode 1, 8-bit UART, enable rcvr */
TMOD |= 0x20; /* TMOD: timer 1, mode 2, 8-bit reload */
/* TH1 = ( 256 - ((22.1184MHZ / 12 ) / 32) / BaudRate ) = 256 - 6 = 250 */
TH1 = 250; /* TH1: reload value for 9600 baud @ 22.1184MHz */
TR1 = 1; /* TR1: timer 1 run */
TI = 1;
RI = 1;
}
void __putchar(unsigned char ch)
{
SBUF = ch;
while(TI == 0);
TI = 0;
}
unsigned char __getchar()
{
unsigned char ch;
while(RI == 0);
ch = SBUF;
RI = 0;
return ch;
}
void printString(const char *s)
{
while(*s)
__putchar(*(s++));
}
unsigned char ToASCII(unsigned char val)
{
if( val >= 0 && val <=9 )
return val + '0';
else if ( val >= 0x0A && val <= 0x0F)
return val + 'A' - 10;
else
return ' ';
}
void main()
{
unsigned char key = ' ';
unsigned char half_port;
SetupSerial();
printString("rnTesting Serial UARTrn");
P1 = 0x0F;
while(1)
{
key = __getchar();
switch(key)
{
case 'R':
case 'r':
half_port = Input & 0x0F;
__putchar( ToASCII(half_port));
Output = ~half_port;
break;
}
}
}
and this is the diagram I am working on:
This is the garbage i get and every time i press reset on the micro controller the same chars keeps printing from what i understood from this assignment each time we reset it should print "Testing Serial UART" until i send an "R" then it goes on to do something else
And this is my board:
this is the string that appears in text it was only repeated because i pressed reset a few times so the baud rate isn't the problem
serial-port embedded microcontroller
serial-port embedded microcontroller
New contributor
New contributor
edited 11 hours ago
Ali Osman
New contributor
asked 18 hours ago
Ali OsmanAli Osman
11
11
New contributor
New contributor
(1) A bit of general advice: you should use defined constants whenever possible. Your0x50
should be replaced withSM1|REN
orSCON_MODE1|REN
, and your0x20
should be replaced withM1
orTMOD_MODE2
, or whatever they’re called in your environment. (2) What areInput
andOutput
? (3) What debugging have you done? (3a) You say that you “get the same consistent garbage”; have you actually taken screenshots and verified that the results are always the same nonsense characters? (3b) Have you tried sending other strings? … (Cont’d)
– G-Man
15 hours ago
(Cont’d) … Strings of many spaces,@
signs or question marks (?
) might yield interesting results. (3c) I’m sorry; I see that you say that you’ve checked the baud rate three times — but a ratio of 23 characters sent to 150 characters received is a big red flag of a baud rate discrepancy. Have you tried changing the settings on your SerialPort Terminal? (3d) Have you tried using the “Hex” Data Mode in your SerialPort Terminal? … … … … … … … … … … … … … … Please do not respond in comments; edit your question to make it clearer and more complete.
– G-Man
15 hours ago
add a comment |
(1) A bit of general advice: you should use defined constants whenever possible. Your0x50
should be replaced withSM1|REN
orSCON_MODE1|REN
, and your0x20
should be replaced withM1
orTMOD_MODE2
, or whatever they’re called in your environment. (2) What areInput
andOutput
? (3) What debugging have you done? (3a) You say that you “get the same consistent garbage”; have you actually taken screenshots and verified that the results are always the same nonsense characters? (3b) Have you tried sending other strings? … (Cont’d)
– G-Man
15 hours ago
(Cont’d) … Strings of many spaces,@
signs or question marks (?
) might yield interesting results. (3c) I’m sorry; I see that you say that you’ve checked the baud rate three times — but a ratio of 23 characters sent to 150 characters received is a big red flag of a baud rate discrepancy. Have you tried changing the settings on your SerialPort Terminal? (3d) Have you tried using the “Hex” Data Mode in your SerialPort Terminal? … … … … … … … … … … … … … … Please do not respond in comments; edit your question to make it clearer and more complete.
– G-Man
15 hours ago
(1) A bit of general advice: you should use defined constants whenever possible. Your
0x50
should be replaced with SM1|REN
or SCON_MODE1|REN
, and your 0x20
should be replaced with M1
or TMOD_MODE2
, or whatever they’re called in your environment. (2) What are Input
and Output
? (3) What debugging have you done? (3a) You say that you “get the same consistent garbage”; have you actually taken screenshots and verified that the results are always the same nonsense characters? (3b) Have you tried sending other strings? … (Cont’d)– G-Man
15 hours ago
(1) A bit of general advice: you should use defined constants whenever possible. Your
0x50
should be replaced with SM1|REN
or SCON_MODE1|REN
, and your 0x20
should be replaced with M1
or TMOD_MODE2
, or whatever they’re called in your environment. (2) What are Input
and Output
? (3) What debugging have you done? (3a) You say that you “get the same consistent garbage”; have you actually taken screenshots and verified that the results are always the same nonsense characters? (3b) Have you tried sending other strings? … (Cont’d)– G-Man
15 hours ago
(Cont’d) … Strings of many spaces,
@
signs or question marks (?
) might yield interesting results. (3c) I’m sorry; I see that you say that you’ve checked the baud rate three times — but a ratio of 23 characters sent to 150 characters received is a big red flag of a baud rate discrepancy. Have you tried changing the settings on your SerialPort Terminal? (3d) Have you tried using the “Hex” Data Mode in your SerialPort Terminal? … … … … … … … … … … … … … … Please do not respond in comments; edit your question to make it clearer and more complete.– G-Man
15 hours ago
(Cont’d) … Strings of many spaces,
@
signs or question marks (?
) might yield interesting results. (3c) I’m sorry; I see that you say that you’ve checked the baud rate three times — but a ratio of 23 characters sent to 150 characters received is a big red flag of a baud rate discrepancy. Have you tried changing the settings on your SerialPort Terminal? (3d) Have you tried using the “Hex” Data Mode in your SerialPort Terminal? … … … … … … … … … … … … … … Please do not respond in comments; edit your question to make it clearer and more complete.– G-Man
15 hours ago
add a comment |
0
active
oldest
votes
Your Answer
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "3"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Ali Osman is a new contributor. Be nice, and check out our Code of Conduct.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fsuperuser.com%2fquestions%2f1426031%2fgetting-consistent-garbage-on-serialport-terminal-using-8051-uart%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
Ali Osman is a new contributor. Be nice, and check out our Code of Conduct.
Ali Osman is a new contributor. Be nice, and check out our Code of Conduct.
Ali Osman is a new contributor. Be nice, and check out our Code of Conduct.
Ali Osman is a new contributor. Be nice, and check out our Code of Conduct.
Thanks for contributing an answer to Super User!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fsuperuser.com%2fquestions%2f1426031%2fgetting-consistent-garbage-on-serialport-terminal-using-8051-uart%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
(1) A bit of general advice: you should use defined constants whenever possible. Your
0x50
should be replaced withSM1|REN
orSCON_MODE1|REN
, and your0x20
should be replaced withM1
orTMOD_MODE2
, or whatever they’re called in your environment. (2) What areInput
andOutput
? (3) What debugging have you done? (3a) You say that you “get the same consistent garbage”; have you actually taken screenshots and verified that the results are always the same nonsense characters? (3b) Have you tried sending other strings? … (Cont’d)– G-Man
15 hours ago
(Cont’d) … Strings of many spaces,
@
signs or question marks (?
) might yield interesting results. (3c) I’m sorry; I see that you say that you’ve checked the baud rate three times — but a ratio of 23 characters sent to 150 characters received is a big red flag of a baud rate discrepancy. Have you tried changing the settings on your SerialPort Terminal? (3d) Have you tried using the “Hex” Data Mode in your SerialPort Terminal? … … … … … … … … … … … … … … Please do not respond in comments; edit your question to make it clearer and more complete.– G-Man
15 hours ago