C51编程:求助!
哪位高人能帮忙看一下我的小程序,很短,就是不断发送字符'h'和'y'到PC端.在KEILC51下调
试没有问题,但在单片机AT89C52中,PC端串口精灵收不到任何数据!
#include "Atmel/AT89X52.h" //用AT89C52,开发环境Keil C51 7.0
#define BUFF_LEN 2 //每次发送两个字节
unsigned char g_cBuff[BUFF_LEN];
void initClock(void) //设置T0,用T0溢出TF0置位时TF0=0,TR0=0,然后发送两个字节,而后
重新开始T0
{
TR0 = 0;
TF0 = 0;
TCON = 0x00;
TH0 = 0x00;
TL0 = 0x00;
TR0 = 1;
}
void initComm(void)//9600波特率,1位停止位,8位数据,无奇偶校验(11.0952M的晶振)
{
SCON = 0x50; //串口工作方式1
PCON = 0x00; //设置串口波特率9600,1位停止位,8位数据
TH1 = 0xfd; //设置T1初始值
TL1 = 0xfd; //设置T1初始值
TR1 = 1;
}
//向串口发送一个字符
void sendCharComm(unsigned char ch)
{
SBUF=ch;
while(TI==0);
TI=0;
}
//向串口发送一个字符串,strlen为该字符串长度
void sendStringComm(unsigned char *str,unsigned int strlen)
{
unsigned int k;
for(k=0;k < strlen;k++) sendCharComm(*(str + k));
}
void main(void)
{
g_cBuff[0] = 'h';
g_cBuff[1] = 'y';
TMOD = 0x21; //设置T0和9600波特率发生器T1
initComm();
initClock();
for(;;)
{
while(TF0)
{
TR0 = 0;
TF0 = 0;
sendStringComm(g_cBuff, BUFF_LEN);
initClock();
}
}
}
发表时间:2003年2月28日3:31:00