求助:单片机与pc串口通信问题 为什么pc与单片机不能收发信息?

[复制链接]
查看11 | 回复5 | 2010-11-22 20:20:38 | 显示全部楼层 |阅读模式
用串口调试助手向单片机发送数据时,没有任何反应,求助高人解惑~!!!
代码如下:
#include
#include
#include
unsigned char ch;
#define STR_LEN 7
bit read_flag= 0 ;
unsigned char inBUF0[STR_LEN]={'0','s','u','c','c','e','0'};
unsigned char inBUF1[STR_LEN]={'0','h','e','l','l','o','0'};
unsigned char inBUF2[STR_LEN]={'0','e','x','i','s','t','0'};
unsigned char inBUF3[STR_LEN]={'0','e','r','r','o','r','0'};
void init_serialcom( void ) //串口通信初始设定
{

SCON = 0x50 ;//UART为模式1,8位数据,

TMOD = 0x20 ;//定时器1为模式2,8位自动重装

PCON = 0x00 ;//波特率加倍

TH1 =0xDD ;//波特率:600 fosc=8MHz

IE = 0x90 ;//允许串行中断

TR1 = 1 ; // timer 1 run

TI=1;
EA = 1; //单片机中断允许

ES = 1; //允许串行口中断
}
void send_char_com( unsigned char ch)
//向串口发送一个字符

{

SBUF=ch;

while (TI== 0);

TI= 0 ;

}
void sendString(unsigned char *str, char length)
{
unsigned char strlen = 0;
for (strlen;strlen<length;strlen++)
{

send_char_com( *str );

str++;
}
}
void serial () interrupt 4 using 3 //串口接收中断函数
{

if (RI)

{

RI = 0 ;

ch=SBUF;


read_flag= 1 ; //就置位取数标志

}
}
main()
{
init_serialcom(); //初始化串口

while ( 1 )

{

if (read_flag) //如果取数标志已置位,就将读到的数从串口发出

{

switch(ch)
{
case '0':sendString(inBUF0,STR_LEN);read_flag= 0 ;break; case '1':sendString(inBUF1,STR_LEN);read_flag= 0 ;break;
case '2':sendString(inBUF2,STR_LEN);read_flag= 0 ;break;
default:sendString(inBUF3,STR_LEN);read_flag= 0 ;



}

}
}
}
电路接法如下:
proteus 仿真时用max232,就出错!
晶振是8M的波特率为600bps!

回复

使用道具 举报

千问 | 2010-11-22 20:20:38 | 显示全部楼层
先 用 proteus 仿真 一下
回复

使用道具 举报

千问 | 2010-11-22 20:20:38 | 显示全部楼层
你是用什么电路连接的电脑,使用232还是自己用三极管自己做了一个啊,还有你的串口调试程序有没有设好是8位数据,无校验啊。
回复

使用道具 举报

千问 | 2010-11-22 20:20:38 | 显示全部楼层
是不是硬件的问题,可以加我我给你看看。
回复

使用道具 举报

千问 | 2010-11-22 20:20:38 | 显示全部楼层
你是用什么电路连接的电脑,使用232还是自己用三极管自己做了一个啊,还有你的串口调试程序有没有设好是8位数据,无校验啊。 我可以帮助你,你先设置我最佳答案后,我百度Hii教你。
回复

使用道具 举报

千问 | 2010-11-22 20:20:38 | 显示全部楼层
查看你的学习板的晶振,调整单片机波特率计数值,保证波特率在2400或4800,波特率太大,容易产生误码,修改单片机程序,调试发送功能;最后才调试接收功能;看楼主的程序,应该是入门级,所以要多动手
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行