feng89 发表于 2009-2-28 13:39:18

0515Dr的UART6通信,初始化问题

#pragma   sfr         
#pragma   di         
#pragma   ei         
#pragma   NOP         
#pragma   HALT      
#pragma   STOP
#pragma   asm

void main(void)
   {
    unsigned int i;
    unsigned char k;
    DI();
/*********设置内部高速振荡 8M**********/
      OSCCTL=0;       //时钟操作模式选择寄存器,
      PCC=0;          // 处理器时钟控制寄存器.    时钟不分频,默认是2分频.
   
      LSRSTOP=0;      // 内部低速振荡器
      RSTOP=0;      // 内部高速振荡器   
      MOC=0x80;         // X1振荡器停止.禁止使用外部输入时钟.
      MCM=0;          // 主时钟模式寄存器,使用内部高速时钟.
      OSTS=0x05;      // 振荡稳定时间选择寄存器.
      while(RSTS==0); // 等?内部启动完成.
   
       PM1.4=1;   // 设置RXD6?脚为输入
       P1.3=1;      // 设置TXD6?脚为高电平
       PM1.3=0;   // 设置TXD6?脚为输出
      
       ASIM6=0x01;// 停止开始-设置到复位状态.
       WDTE=0xAC;
       CKSR6=0x01;// 8/2=4M17 115200:   3916800
       BRGC6=17;    // 设置波特率.
       ASIM6|=0xE5;
       POWER6=1;
       for(i=0;i<1000;i++){ NOP(); WDTE=0xAC;}
       STIF6=0;   //清?TX中断请求.
       TXE6=1;      //使能发送
       SRIF6=0;   //清?RX中断请求.
       RXE6=1;      //使能接收.
   
    EI();

while(1)
    {
      WDTE=0xAC;
      for(i=0;i<1000;i++)WDTE=0xAC;
      if((SRIF6)&&(ASIS6))
       {
         SRIF6=0;
         i=RXB6;
       }
      TXB6=0xA5;
      while(STIF6==0);
      STIF6=0;
   }
      P2.0=0;
   
}

单步到这: BRGC6=17程序就跑飞,为什么?

上面设8M对吗?

bg7fw 发表于 2009-3-5 22:34:04

建议你去掉晶振设置那段,如果你没有设置OPTION寄存器,默认就是使用内部高速RC震荡器。
如果去掉还有问题请发邮件到bg7fw@163.com
页: [1]
查看完整版本: 0515Dr的UART6通信,初始化问题