智能车制作

标题: 求助:串口问题 [打印本页]

作者: 安安安然。    时间: 2013-11-11 14:20
标题: 求助:串口问题
最近在学XS128的串口   用串口助手收到的数据一直是00  00 00    整了好久都没搞定  下面是我写的程序  请各位看下哪里有问题

#include <hidef.h>      /* common defines and macros */
#include "derivative.h"      /* derivative-specific definitions */
void initPLL_40MHz() {     //initPLL
  CLKSEL&=0x7f;    //第七位置0 使用外部晶振
                   // CLKSEL 的第七位置0,选择的时钟源是OSCCLK(晶振)
                   //在PLL 程序执行前,内部总线频率=OSCCLK/2
                   //CLKSEL-7 决定内部总线时钟来源
                   // =0:BUSCLOCK=OSCCLK/2; =1:BUSCLOCK=PLLCLK/2
  PLLCTL&=0xbf; //off PLL
  SYNR=0X40|0x04; //对PLL 增频  根据需要的时钟频率设置SYNR 和REFDV 寄存器
          //0x40设置FVCO范围48M~80M
          //0xc0            80M~120M
  REFDV=0X80|0x01; //对PLL 分频 计算公式:(xs128)PLLCLK(FVCO)==2*OSCCLK*((SYNR+1)/(REFDV+1))
                       //计算公式: BUSCLK=PLLCLK/2
                       
  POSTDIV=0x00;       //=0LLCLK=FVCO   =1:PLLCLK=FVCO/2
  PLLCTL |=(1<<6);   //开PLL
  _asm(nop);
  _asm(nop);
  while((CRGFLG&0X08)==0X00);  //通过判断CRGFLG 寄存器的LOCK 位,确定PLL 是否稳定
  CLKSEL |=(1<<7); //本句执行后:BUSCLOCK=PLLCLK/2
                  //时钟频率稳定后,允许锁相环时钟源作为系统时钟
}
void initSCI() {
  SCI0BDL=0x01;  //40M下波特率9600
  SCI0BDH=0x04;
  SCI0CR1=0X00;  //
  SCI0CR2=0X2c;  //使能发送

}
void main(void) {
  
  char value=0;
  int a=0,b=0;
  initPLL_40MHz();
//  DDRA=0xff;
//  PORTA=0xff;
  initSCI();
//  EnableInterrupts;
  for(;;) {
      for(value=0;value<16;value++) {
        while(!(SCI0SR1&0X80));
        SCI0DRL=value;
        for(a=0;a<2000;a++)
       for(b=0;b<100;b++);
      }

  }
  
}

作者: 安安安然。    时间: 2013-11-11 18:24
  没有人遇到过么。。。
作者: 安安安然。    时间: 2013-11-11 21:14
麻烦 那位大神帮我看下是哪里出现问题了。。。
作者: 安安安然。    时间: 2013-11-12 00:04
   问题以解决。。  太粗心了  把BD的高低位倒过来了  囧囧。。。




欢迎光临 智能车制作 (http://dns.znczz.com/) Powered by Discuz! X3.2