智能车制作
标题:
求助:串口问题
[打印本页]
作者:
安安安然。
时间:
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; //=0
LLCLK=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