首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 单片机 >

51串口与电脑通信程序帮忙看下哪里不对,该怎么处理

2012-04-24 
51串口与电脑通信程序帮忙看下哪里不对芯片:stc11f02e兼容at2051。开发工具:keil3 。硬件连接:P3.0 3.1做ISP

51串口与电脑通信程序帮忙看下哪里不对
芯片:stc11f02e兼容at2051。开发工具:keil3 。
硬件连接:P3.0 3.1做ISP下载,P1.6-1.7接电脑串口 晶振用的11.0592MHz
目标:发送字符到PC串口助手上显示出来。
现象:串口助手接收不到信息
程序如下,请问高手要怎么改才能发送字符到串口助手上去。

#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义  
#include"delay.h"
/*------------------------------------------------
  函数声明
------------------------------------------------*/
void SendStr(unsigned char *s);
/*------------------------------------------------
  串口初始化
------------------------------------------------*/
void InitUART (void)
{
AUXR1|= 0x80;// 选用P1串口
SCON = 0x50; // **SCON: 模式 1, 8-bit UART, 使能接收  
  TMOD |= 0x02; // **TMOD: timer 1, mode 2, 8-bit 重装
  //PCON &= 0x7F; //系统默认的就是SMOD=0; 
TH0 = 0xFD; // **TH1=256-11059200/384/波特率. TH1: 重装值 9600 波特率 晶振 11.0592MHz  
  TL0 = 0xFD; // 原来是TH1 TL1我改成TH0TL0因为stc11f02e没定时器1.
TR0 = 1; // **TR0: timer 0 打开  
  EA = 1; //**打开总中断
  //ES = 1; //打开串口中断
}  
/*------------------------------------------------
  主函数
------------------------------------------------*/
void main (void)
{

InitUART();

while (1)  
  {
  SendStr("abcd12345678");
DelayMs(240);//延时循环发送
  DelayMs(240);
  }
}

/*------------------------------------------------
  发送一个字节
------------------------------------------------*/
void SendByte(unsigned char dat)
{
 SBUF = dat;
 while(!TI);
  TI = 0; //8位接收完自动置位接收发送
}
/*------------------------------------------------
  发送一个字符串
------------------------------------------------*/ 
void SendStr(unsigned char *s)
{
 while(*s!='\0')// \0 表示字符串结束标志,
  //通过检测是否字符串末尾
  {
  SendByte(*s);
  s++;
  }
}


[解决办法]
TMOD |= 0x02; // **TMOD: timer 1, mode 2, 8-bit 重装
你设置了定时器1,但开启的是定时器0
TR0 = 1; // **TR0: timer 0 打开


所以,把
TR0 = 1; // **TR0: timer 0 打开
改为
TR1 = 1; // **TR0: timer 1 打开

热点排行