OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5282|回复: 1

STC12C5A32S2 单路波特率转换

[复制链接]

1

主题

5

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2013-3-30
在线时间
8 小时
发表于 2013-3-30 11:35:11 | 显示全部楼层 |阅读模式

//9600转19200
#include<STC12C5A.H>
#define uchar unsigned char

void UartInit(void);
void UartInit2(void);

uchar temp;
void main()
{
UartInit();
UartInit2();
EA = 1;
IE2 =0X01;
while(1);
}

void UartInit(void) //19200bps@11.0592MHz
{
PCON &= 0x7f; //波特率不倍速
SCON = 0x50; //8位数据,可变波特率
AUXR |= 0x40; //定时器1时钟为Fosc,即1T
AUXR &= 0xfe; //串口1选择定时器1为波特率发生器
TMOD &= 0x0f; //清除定时器1模式位
TMOD |= 0x20; //设定定时器1为8位自动重装方式
TL1 = 0xEE; //设定定时初值
TH1 = 0xEE; //设定定时器重装值
ET1 = 0; //禁止定时器1中断
TR1 = 1; //启动定时器1
ES=1;
}

void UartInit2(void) //9600bps@11.0592MHz
{
AUXR&=0xf7; //波特率不倍速
S2CON=0x50; //8位数据,可变波特率
BRT=0xDC; //设定独立波特率发生器重装值
AUXR|=0x04; //独立波特率发生器时钟为Fosc,即1T
AUXR|=0x10; //启动独立波特率发生器
void UARTInterrupt(void) interrupt 4
{
if(RI)
{
    RI=0;
}   
}
 void UART_SER_2(void) interrupt 8 //串行中断服务程序
{
    uchar T_emp;         
  T_emp=S2CON ;
T_emp=T_emp&0x01;
     if(T_emp)                     
     { 
S2CON=S2CON&0xFE;
temp=S2BUF;
SBUF=temp;
while(!TI);
TI=0;
}
}

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2013-3-30 12:27:45 | 显示全部楼层
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 16:21

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表