智能车制作
标题:
mc9s12xs128的sci程序
[打印本页]
作者:
simpleliu
时间:
2009-11-2 17:00
标题:
mc9s12xs128的sci程序
我的 程序是网上下的,然后如果不用PLL的 话是可以用的,我照着思路改波特率,然后用上PLL,用调试工具始终接受不到。。。郁闷哪。。。弄了好些天了 。。各位大哥大姐给看看吧?如果程序没问题的话还可能是?
#include <hidef.h> /* common defines and macros */
#include <MC9S12XS128.h> /* derivative information */
#include <ctype.h>
#include <string.h>
#include <stdarg.h>
#pragma LINK_INFO DERIVATIVE "mc9s12xs128"
#pragma CODE_SEG DEFAULT
unsigned char uart_getkey(void)
{
while(!(SCI0SR1&0x80)) ; //keep waiting when not empty
return SCI0DRL;
}
void uart_putchar(unsigned char ch)
{
while(!(SCI0SR1&0x80)) ; //keep waiting when not empty
SCI0DRL=ch;
}
void putstr(char ch[])
{
unsigned char ptr=0;
while(ch[ptr]){
uart_putchar((unsigned char)ch[ptr++]);
}
}
void pll_Init(void)
{
CLKSEL = 0x00; //disengage PLL to system
PLLCTL_PLLON = 1; //turn on PLL
SYNR = 4;
REFDV = 1; //pllclock=2*osc*(1+SYNR)/(1+REFDV)=80MHz;
_asm(nop); //BUS CLOCK=40MHz
_asm(nop);
while(!(CRGFLG_LOCK == 1)); //when pll is steady ,then use it;
CLKSEL_PLLSEL = 1; //engage PLL to system;
}
//-----------------------------------------------------
static void SCI_Init(void)
{
SCI0CR1 =0x00;
SCI0CR2 =0x2c; //enable Receive Full Interrupt,RX enable,Tx enable
SCI0BD =0x106; //SCI0BDL=busclk/(16*SCI0BDL)
//busclk 8MHz, 9600bps,SCI0BD=0x34
//busclk 16MHz, 9600bps,SCI0BD=0x68
//busclk 24MHz, 9600bps,SCI0BD=0x9C
} //busclk 32MHz, 9600bps,SCI0BD=0xD0
//busclk 40MHz, 9600bps,SCI0BD=0x106
void main(void){
pll_Init();
SCI_Init();
DDRA=0xFF;
uart_putchar(0x11) ;
EnableInterrupts;
for(;;)
{
}
}
作者:
whut_wj
时间:
2009-11-2 17:00
回复
5#
simpleliu
我忘了,倍频寄存器不一样。你把你邮箱给我,我发个程序你。
作者:
zdhly0401
时间:
2009-11-2 22:08
回复
1#
simpleliu
你试试你的40M频率上去了没?也就是看看pll工作了?
作者:
whut_wj
时间:
2009-11-3 20:14
这个是DG128的?
DG128的PLL和XS128有些不一样。
主要问题是PLL没有成功。
作者:
simpleliu
时间:
2009-11-4 01:55
回复
2#
zdhly0401
哥,我新手。。。
怎么看PLL上去没?
很着急呢。。因为第一次接触这款弹片机。。。
我的是MC9S12XS128
作者:
simpleliu
时间:
2009-11-4 01:56
回复
3#
whut_wj
啊?哪里不同?哥能详细的给出吗?
我的是XS的
作者:
zdhly0401
时间:
2009-11-4 10:21
回复
4#
simpleliu
点个灯,看看程序运行不,如果pll不成功就不能跑程序,论坛有xs的超频程序,你下载个看看,祝你好运
作者:
simpleliu
时间:
2009-11-14 21:23
回复
7#
whut_wj
simpleliu55@126.com
不好意思,很九没上了
作者:
hufangwu
时间:
2009-11-15 17:35
通过串口,在pc机上得不到正确的数据,这是为什么啊 请指教
#include <hidef.h> /* common defines and macros */
#include <MC9S12XS128.h> /* derivative information */
#pragma LINK_INFO DERIVATIVE "mc9s12xs128"
/*************锁相环******************/
void PLL_Init(void){
//锁相环设置:频率40M
SYNR=0x49;
REFDV=0x43;
while(CRGFLG_LOCK!=1);
CLKSEL_PLLSEL=1;
}
/***********************************/
void uart_Init(void) { //40MHZ 波特率9600 8位无校验。
SCI0CR2=0x0c;
SCI0BD=0x104;
SCI0CR2_RIE=0;
}
void uart_sendchar(char *cs) { //单字符发送函数
while(SCI0SR1_TDRE==0);
SCI0DRL=*cs;
}
void uart_sendstring(char *ss){ //字符串发送函数
while(*ss){
uart_sendchar(ss);
++ss;
}
}
//***********************************************
void main(void) {
PLL_Init();
uart_Init();
DisableInterrupts;
uart_sendstring("Hello World!");
for(;;) {} /* wait forever */
/* please make sure that you never leave this function */
}
欢迎光临 智能车制作 (http://dns.znczz.com/)
Powered by Discuz! X3.2