找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3474|回复: 6
收起左侧

不同波特率怎么处理

[复制链接]
ID:57954 发表于 2013-12-17 11:15 | 显示全部楼层 |阅读模式
我想问下,如4800bit/s的信号进入单片机,不经过处理,以38400bit/s的信号输出,就是波特率不同,这些怎么处理
回复

使用道具 举报

ID:1 发表于 2013-12-17 19:49 来自手机 | 显示全部楼层
先把收到的数据返程在单片机里面,然后再设置好波特率用串送出去就行了
回复

使用道具 举报

ID:1 发表于 2013-12-17 19:49 来自手机 | 显示全部楼层
先把收到的数据返程在单片机里面,然后再设置好波特率用串送出去就行了
回复

使用道具 举报

ID:1 发表于 2013-12-17 19:49 来自手机 | 显示全部楼层
先把收到的数据返程在单片机里面,然后再设置好波特率用串送出去就行了
回复

使用道具 举报

ID:57954 发表于 2013-12-18 12:12 | 显示全部楼层
这返程是指什么的
回复

使用道具 举报

ID:57954 发表于 2013-12-18 14:51 | 显示全部楼层
/*------------------------
  STC12C5A08S2
  del AD10部分
  22.1184M
----------------------------*/
#include "stc12c5a60s2.h"
//#include "EEPROM.h"
unsigned char dat;
#define uchar unsigned char
#define uint  unsigned int

#define ERROR 0
#define OK  1
#define SKIP 2 //跳过


int Key=4800;

void Delay(unsigned int i)
{
  unsigned int k;
  for(;i>0;i--)
   for(k=0;k<100;k++);
}

void Time0_init(void)
{
//   AUXR=0x91; //定时器0都为1T模式,定时器1为12T
//  AUXR=0x80; //定时器0都为1T模式,定时器1为12T ,使用定时器1为串口0的波特率发生器
  AUXR=0xC0; //定时器0都为1T模式,定时器1为1T ,使用定时器1为串口0的波特率发生器
   TMOD=0x21; //定时器0为16位模式,定时器1为8位模式
   TL0=0xE5; //D7
   TH0=0xFD;   //如果工作在1T模式,设置为25us  22.1184M        22.1184*25约=553 为30us左右        25us为463
   TR0=1;
   ET0=1;
//  EA=1;
}

/*
串口1和串口2如果要不同的波特率,需要将串口1用定时器1来做,
串口2固定只能用BRT来设置。
*/

void serial_port_init(unsigned int baudrate)
{
   //--------以下是UART1----//
    SCON    =   0x50;   //0101,0000 8位可变波特率,无奇偶校验位,允许接收
    TMOD=0x21; //定时器0为16位模式,定时器1为8位模式
  //  TH1     =   0xF4;   //设置定时器1自动重装数,波特率设置为4800  22.1184  12T
  //  TL1     =   0xF4;        //TH1=TL1=256-(FOSC/32/BAUD/12)
if(baudrate==4800)
  {
   TH1     =   0x70;   //设置定时器1自动重装数,波特率设置为4800  22.1184  1T
    TL1     =   0x70;//TH1=TL1=256-(FOSC/32/BAUD)
   
    }
if(baudrate==38400)   
  {  
       TH1 =0xEE;
       TL1 =0xEE;
          
   }     
  TR1     =   1;    //开定时器1                               
  //-----以下是UART2----//
//         S2CON    =  0x40;   //0101,0000 8位可变波特率,无奇偶校验位,不允许接收
//        BRT        =        0xFA;  //波特率也是4800 11.0592M
//  BRT        =        0xee;  //波特率也是4800 22.1184M
        //  BRTR = 1, S1BRS = 0, EXTRAM = 1 ENABLE EXTRAM
//        AUXR        =        0xD4; // T0x12,T1x12,UART_M0x6,BRTR,S2SMOD,BRTx12,EXTRAM,S1BRS       
   // 定时器0和定时器1都为1T模式
        ES      =   0;    //允许串口中断 ,允许串口2中断 先禁能
//        IE2        =        0x01;        //允许串口2中断,ES2=1
  //  EA      =   1;    //开总中断
}


void Button()
{

if(Key==4800)
  {
   Key=38400;
  serial_port_init(Key);
  }
  else
  {
  Key=4800;
  serial_port_init(Key);
  }
  }
  
int main(void)
{
  unsigned char kk=0,ii=0,
  
  CLK_DIV=0x00; //设置系统时钟为外部时钟

  Delay(500);


  WDT_CONTR=0x3D;//看门狗,64分频
  Time0_init();  
  serial_port_init(4800);
  EA     =   1;    //开总中断

   while(1)
  {       
     WDT_CONTR=0x3D;//喂狗
     Button();
    if(RI)
         {
          RI=0;
            dat=SBUF;

      SBUF=dat;
     
         }         
                  
      
  }
   return 0;
}
回复

使用道具 举报

ID:57954 发表于 2013-12-18 14:52 | 显示全部楼层
该怎么改才行
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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