请教 F149波特率19200的计算

楼主
请教 F149波特率19200的计算
[P]请问F149 4M晶振19200波特率 UMCTL0寄存器的值是多少   我算了 可没成功 用了计算软件也不行[/P][P] [/P][P]void init_cpu(void)
{
    char i;
    char j=10;
   
    WDTCTL=WDTPW+WDTHOLD;
//    BCSCTL1&=~XT2OFF;//打开高频晶振
     BCSCTL1=0x00;//打开高频晶振  
    do
    {
       j--;
       IFG1&=~OFIFG;//高频晶振起振标志
       for(i=0xff;i>0;i--);
       if(j==0)
         WDTCTL=0;//晶体失败
    }
    while(IFG1&OFIFG);//判断是否为0
    BCSCTL2=SELM_2+SELS;//MCLK SMCLK=XT2
}[/P][P]void init_uart0(void)
{
    P3SEL|=BIT4+BIT5;
    P3DIR|=BIT4;
    P3DIR&=~BIT5;
   
    ME1|=UTXE0+URXE0;//允许收发
    UCTL0|=CHAR;
    UTCTL0|=SSEL0+SSEL1;//选择SMCLK
    UBR00=0xd0;
    UBR10=0X00;
    UMCTL0=0x40;
    UCTL0&=~SWRST;//清除逻辑 复位初始化
    IE1|=URXIE0;    
}
void main(void)
{
     init_cpu();
     init_uart0();
     while(1)
     {
      _BIS_SR(LPM3_bits+GIE);
       while(!(IFG1&UTXIFG0));
       TXBUF0=RXBUF0;
     }
}
#pragma vector=UART0RX_VECTOR//接收
__interrupt void uaet0_rw(void)
{
    _BIC_SR_IRQ(LPM3_bits);
}
哪错了呢
[/P]
1楼
[P][LINE-HEIGHT=150%][LINE-HEIGHT=150%][FACE=Times New Roman][SIZE=12pt]串行通信异步模式波特率计算:[/SIZE][/FACE][/LINE-HEIGHT][/LINE-HEIGHT][/P][P][LINE-HEIGHT=150%][LINE-HEIGHT=150%][FACE=Times New Roman][SIZE=12pt]分频比[/SIZE][/FACE][/LINE-HEIGHT][LINE-HEIGHT=150%][SIZE=12pt][FACE=Times New Roman]UBRx[/FACE][/SIZE][/LINE-HEIGHT][/LINE-HEIGHT][/P][P][LINE-HEIGHT=150%][LINE-HEIGHT=150%][FACE=Times New Roman][SIZE=12pt]◆分频率[/SIZE][/FACE][/LINE-HEIGHT][LINE-HEIGHT=150%][SIZE=12pt][FACE=Times New Roman]N[/FACE][/SIZE][/LINE-HEIGHT][LINE-HEIGHT=150%][FACE=Times New Roman][SIZE=12pt]:由送到分频器的时钟频率([/SIZE][/FACE][/LINE-HEIGHT][LINE-HEIGHT=150%][SIZE=12pt][FACE=Times New Roman]BRCLK[/FACE][/SIZE][/LINE-HEIGHT][LINE-HEIGHT=150%][FACE=Times New Roman][SIZE=12pt])和所需的波特率决定。[/SIZE][/FACE][/LINE-HEIGHT][LINE-HEIGHT=150%][SIZE=12pt][/SIZE][/LINE-HEIGHT][/LINE-HEIGHT][/P][P][LINE-HEIGHT=150%][LINE-HEIGHT=150%][SIZE=12pt][FACE=Times New Roman] [/SIZE][/LINE-HEIGHT]N=[/FACE][LINE-HEIGHT=150%][FACE=Times New Roman][SIZE=12pt]([/SIZE][/FACE][/LINE-HEIGHT][LINE-HEIGHT=150%][SIZE=12pt][FACE=Times New Roman]BRCLK[/FACE][/SIZE][/LINE-HEIGHT][LINE-HEIGHT=150%][FACE=Times New Roman][SIZE=12pt])[/SIZE][/FACE][/LINE-HEIGHT][LINE-HEIGHT=150%][SIZE=12pt][FACE=Times New Roman]/[/FACE][/SIZE][/LINE-HEIGHT][LINE-HEIGHT=150%][FACE=Times New Roman][SIZE=12pt]波特率[/SIZE][/FACE][/LINE-HEIGHT][LINE-HEIGHT=150%][SIZE=12pt][FACE=Times New Roman]  [/FACE][/SIZE][/LINE-HEIGHT][LINE-HEIGHT=150%][FACE=Times New Roman][SIZE=12pt]如:[/SIZE][/FACE][/LINE-HEIGHT][LINE-HEIGHT=150%][SIZE=12pt][FACE=Times New Roman]N=4MHz/9600=416.67[/FACE][/SIZE][/LINE-HEIGHT][/LINE-HEIGHT][/P][P][LINE-HEIGHT=150%][LINE-HEIGHT=150%][FACE=Times New Roman][SIZE=12pt]取分频率[/SIZE][/FACE][/LINE-HEIGHT][LINE-HEIGHT=150%][SIZE=12pt][FACE=Times New Roman]N[/FACE][/SIZE][/LINE-HEIGHT][LINE-HEIGHT=150%][FACE=Times New Roman][SIZE=12pt]的整数部分作为分频比,即:[/SIZE][/FACE][/LINE-HEIGHT][LINE-HEIGHT=150%][SIZE=12pt][FACE=Times New Roman]UBRx=416=0x1A0H[/FACE][/SIZE][/LINE-HEIGHT][LINE-HEIGHT=150%][FACE=Times New Roman][SIZE=12pt]。[/SIZE][/FACE][/LINE-HEIGHT][LINE-HEIGHT=150%][SIZE=12pt][/SIZE][/LINE-HEIGHT][/LINE-HEIGHT][/P][P][LINE-HEIGHT=150%][LINE-HEIGHT=150%][SIZE=12pt][FACE=Times New Roman]UBRx[/FACE][/SIZE][/LINE-HEIGHT][LINE-HEIGHT=150%][FACE=Times New Roman][SIZE=12pt]通过两个寄存器控制[/SIZE][/FACE][/LINE-HEIGHT][LINE-HEIGHT=150%][SIZE=12pt][FACE=Times New Roman]UBR0x[/FACE][/SIZE][/LINE-HEIGHT][LINE-HEIGHT=150%][FACE=Times New Roman][SIZE=12pt]和[/SIZE][/FACE][/LINE-HEIGHT][LINE-HEIGHT=150%][SIZE=12pt][FACE=Times New Roman]UBR1x[/FACE][/SIZE][/LINE-HEIGHT][LINE-HEIGHT=150%][FACE=Times New Roman][SIZE=12pt]。[/SIZE][/FACE][/LINE-HEIGHT][LINE-HEIGHT=150%][SIZE=12pt][FACE=Times New Roman]UBRx=UBR1x<<8+UBR0x[/FACE][/SIZE][/LINE-HEIGHT][LINE-HEIGHT=150%][FACE=Times New Roman][SIZE=12pt]。[/SIZE][/FACE][/LINE-HEIGHT][LINE-HEIGHT=150%][SIZE=12pt][/SIZE][/LINE-HEIGHT][/LINE-HEIGHT][/P][P][LINE-HEIGHT=150%][LINE-HEIGHT=150%][FACE=Times New Roman][SIZE=12pt]因此,[/SIZE][/FACE][/LINE-HEIGHT][LINE-HEIGHT=150%][SIZE=12pt][FACE=Times New Roman]UBR1x=0x01; UBR0x=0xA0[/FACE][/SIZE][/LINE-HEIGHT][LINE-HEIGHT=150%][FACE=Times New Roman][SIZE=12pt]。[/SIZE][/FACE][/LINE-HEIGHT][LINE-HEIGHT=150%][SIZE=12pt][/SIZE][/LINE-HEIGHT][/LINE-HEIGHT][/P][P][LINE-HEIGHT=150%][LINE-HEIGHT=150%][FACE=Times New Roman][SIZE=12pt]◆调整率[/SIZE][/FACE][/LINE-HEIGHT][LINE-HEIGHT=150%][SIZE=12pt][FACE=Times New Roman]M[/FACE][/SIZE][/LINE-HEIGHT][LINE-HEIGHT=150%][FACE=Times New Roman][SIZE=12pt]:就是插入分频时钟的个数。[/SIZE][/FACE][/LINE-HEIGHT][LINE-HEIGHT=150%][SIZE=12pt][/SIZE][/LINE-HEIGHT][/LINE-HEIGHT][/P][P][LINE-HEIGHT=150%][LINE-HEIGHT=150%][SIZE=12pt][FACE=Times New Roman]M=[[/FACE][/SIZE][/LINE-HEIGHT][LINE-HEIGHT=150%][FACE=Times New Roman][SIZE=12pt]小数部分[/SIZE][/FACE][/LINE-HEIGHT][LINE-HEIGHT=150%][SIZE=12pt][FACE=Times New Roman]*8][/FACE][/SIZE][/LINE-HEIGHT][LINE-HEIGHT=150%][FACE=Times New Roman][SIZE=12pt],即:[/SIZE][/FACE][/LINE-HEIGHT][LINE-HEIGHT=150%][SIZE=12pt][FACE=Times New Roman]M=[0.67*8]=5[/FACE][/SIZE][/LINE-HEIGHT][LINE-HEIGHT=150%][FACE=Times New Roman][SIZE=12pt]。插入形式(尽量均匀分布):[/SIZE][/FACE][/LINE-HEIGHT][LINE-HEIGHT=150%][SIZE=12pt][FACE=Times New Roman]0 1 1 0 1 0 1 1  [/SIZE][/LINE-HEIGHT][/FACE][LINE-HEIGHT=150%][FACE=Times New Roman][SIZE=12pt]([/SIZE][/FACE][/LINE-HEIGHT][LINE-HEIGHT=150%][SIZE=12pt][FACE=Times New Roman]0x6B[/FACE][/SIZE][/LINE-HEIGHT][LINE-HEIGHT=150%][FACE=Times New Roman][SIZE=12pt])[/SIZE][/FACE][/LINE-HEIGHT][LINE-HEIGHT=150%][SIZE=12pt][/SIZE][/LINE-HEIGHT][/LINE-HEIGHT][/P][P][LINE-HEIGHT=150%][LINE-HEIGHT=150%][SIZE=12pt][FACE=Times New Roman]UMCTL0=0x6B[/FACE][/SIZE][/LINE-HEIGHT][LINE-HEIGHT=150%][FACE=Times New Roman][SIZE=12pt]。[/SIZE][/FACE][/LINE-HEIGHT][LINE-HEIGHT=150%][SIZE=12pt][/SIZE][/LINE-HEIGHT][/LINE-HEIGHT][/P]
2楼
[P]4000000/19200=208.333333   208=D0   UBROO=D0 UBR10=00 UMCTL0=10001000 01001000。......式了好多数 就是在串口调试助手上不通 其他波特率也一样  但用ACLK时钟按照波特率数据表给的数据设定就可以接受   请教了UMCTL0[EM14]应该是多少呢[/P]
3楼
[SIZE=4]你的配置没问题,我运行了呀!先检查一下你的时钟配置对了没。如果还不行,始终直接配置为8M,这样配置刚好为[/SIZE][LINE-HEIGHT=150%][SIZE=12pt][FACE=Times New Roman][SIZE=4]UBR1x=0x01; UBR0x=0xA0;[/SIZE][/FACE][/LINE-HEIGHT][LINE-HEIGHT=150%][FACE=Times New Roman][SIZE=12pt][LINE-HEIGHT=150%][LINE-HEIGHT=150%][SIZE=12pt][FACE=Times New Roman]UMCTL0=0x6B[/FACE][/SIZE][/LINE-HEIGHT][LINE-HEIGHT=150%][FACE=Times New Roman][SIZE=12pt]。[/FACE][/SIZE][/LINE-HEIGHT][LINE-HEIGHT=150%][SIZE=12pt][/SIZE][/LINE-HEIGHT][/LINE-HEIGHT][/SIZE][/SIZE][/LINE-HEIGHT][LINE-HEIGHT=150%][SIZE=12pt][/SIZE][/LINE-HEIGHT][/FACE]
4楼
[P]嗯 我用示波器测测[/P]
5楼
while((IFG1&OFIFG)==OFIFG)这个地方改成这样呢!你的波特率配置没有错误。if(j==0)
         WDTCTL=0;这些可以不要的。

电脑版 Page created in 0.1562 seconds width 3 queries.