求助,stc12c5a60s2的串口设置方法.串口用不了
CPU:stc12c5a60s2晶振:22.1184M
void UartInit(void) //9600bps@22.1184MHz
{
PCON &= 0x7F; //波特率不倍速
SCON = 0x50; //8位数据,可变波特率
AUXR |= 0x04; //独立波特率发生器时钟为Fosc,即1T
BRT = 0xB8; //设定独立波特率发生器重装值
AUXR |= 0x01; //串口1选择独立波特率发生器为波特率发生器
AUXR |= 0x10; //启动独立波特率发生器
}
void Uart_Send_Byte(uchar i)
{
ES = 0;//关串口中断
TI = 0;//清零串口发送完成中断请求标志
SBUF = i;
while(TI==0); //等待发送完成
TI = 0;//清零串口发送完成中断请求标志
ES = 1;//允许串口中断
}
初始化这样写对吗?
硬件应该没问题,换过一块开发板上面也是不行.有没有人用过~~谢谢 怎么个用不了? siyeb 发表于 2012-7-31 16:16 static/image/common/back.gif
怎么个用不了?
就是发送不了,也接收不了 能不能把程序全贴出来。这个看不出啥毛病 siyeb 发表于 2012-7-31 16:28 static/image/common/back.gif
能不能把程序全贴出来。这个看不出啥毛病
程序很简单,啥都无
#include <reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
#define RELOAD_COUNT 0xb8
sfr AUXR = 0x8e;
sfr BRT = 0x9c;
void Uart_Init(void)
{
PCON |= 0x80; //使能波特率倍速位SMOD
SCON = 0x50; //8位数据,可变波特率
BRT = 0x70; //设定独立波特率发生器重装值
AUXR |= 0x04; //独立波特率发生器时钟为Fosc,即1T
AUXR |= 0x01; //串口1选择独立波特率发生器为波特率发生器
AUXR |= 0x10; //启动独立波特率发生器
ES= 1;
EA = 1;
}
void Uart_Send_Byte(uchar i)
{
ES = 0;//关串口中断
TI = 0;//清零串口发送完成中断请求标志
SBUF = i;
while(TI==0); //等待发送完成
TI = 0;//清零串口发送完成中断请求标志
ES = 1;//允许串口中断
}
void main()
{
Uart_Init();
while(1)
{
Uart_Send_Byte(0xf0);
}
} 搞定了,犯了个低级错误...线路问题 帮顶!!! 晶振时钟频率搞错没?
页:
[1]