智能车制作
标题:
初学STC89C52RC单片机,串口都发不出去,我太菜了!求高手帮忙!
[打印本页]
作者:
嵌入式咨询师
时间:
2013-1-16 16:38
标题:
初学STC89C52RC单片机,串口都发不出去,我太菜了!求高手帮忙!
问题是这样的,小弟刚刚接触STC89C52RC单片机,买了一个核心板,然后看着网上的视频跟P89V51的用户手册,写了一个串口发送数据的小程序,通过串口线跟PC机上的串口调试助手通信,结果发不了,小弟查了好久了都没能发现是哪里的问题,程序很短的,麻烦有耐心又有耐心的前辈帮小弟看一下,小弟感激不尽!再次感谢!小弟在线等啊!
代码如下:
void UART_Open(void)
{
/*先关闭串口中断*/
ES = 0;
/*使用串口的模式1(8位数据位,波特率可变),打开串口接收使能*/
SCON = 0x50;
/*用定时器0的自动装载(模式2)来实现串口波特率*/
TMOD |= 0x02;
TH0 = 0xFD;
//TL0 = 0xFD;
TL0 = 0xFD;
TR0 = 1;
/*使能串口中断*/
ES = 1;
EA = 1;
}
u8 UART_Write(u8 acWriteBuff[])
{
u8 cWriteCount = 0;
/*如果缓冲区内无数据*/
if(0 == acWriteBuff[0]) return 0;
while(acWriteBuff[cWriteCount] !=0 )
{
SBUF = acWriteBuff[cWriteCount++];
while(!TI);
TI = 0;
}
}
int main(int argc, char *argv)
{
UART_Open();
UART_Write("hello,world!\n");
while(1);
return 0;
}
复制代码
作者:
wangyao19920204
时间:
2013-1-16 16:59
波特率可变是通过定时器1的溢出率来控制的,不是定时器0。你把定时器0换成定时器1试试
作者:
我爱小kb
时间:
2013-1-16 18:36
帮顶
作者:
lx1122334
时间:
2013-1-17 17:04
慢慢来
欢迎光临 智能车制作 (http://dns.znczz.com/)
Powered by Discuz! X3.2