智能车制作
标题:
XS128SCI串口问题
[打印本页]
作者:
786892880
时间:
2009-9-23 22:52
标题:
XS128SCI串口问题
我的SCI0串口通讯只能从单片机发数据回来PC(数据也是错误的) , 但是不能接受PC发送的数据 ,断点运行的时候发现进入不了中断,各位帮我看下我的代码 问题出现在哪里??
#include <hidef.h>
#include <MC9S12XS128.h>
#pragma LINK_INFO DERIVATIVE "mc9s12xs128"
#define uchar unsigned char
#define uint unsigned int
uchar re_date,r_flag;
uchar tx_date,t_flag;
void delay(uint z){
uint i,j;
for(i=0;i<z;i++){
for(j=0;j<2770;j++);
}
}
void PLL(void)
{
SYNR=1;
REFDV=1;
_asm(nop);
_asm(nop);
while(!(CRGFLG_LOCK==1));
CLKSEL_PLLSEL =1;
}
void sci_init(void){
SCI0CR2=0x2c;
SCI0CR1=0;
SCI0BDH=0x00;
SCI0BDL=0x52;
}
uchar sci_rec(){
while(SCI0SR1_RDRF){
SCI0SR1_RDRF=1;
return SCI0DRL;
}
}
void sci_tre(uchar t_date){
SCI0SR1_TDRE=1;
SCI0DRL=t_date;
delay(10);
}
void main(void) {
sci_init();
SCI0CR2_RIE = 1;
delay(20);
sci_tre(0XFF);
EnableInterrupts;
for(;;) {
if(r_flag==1) {
sci_tre(re_date);
r_flag=0;
}
}
}
#pragma CODE_SEG __NEAR_SEG NON_BANKED
void interrupt 20 SCI0_ISR(void)
{
re_date=sci_rec();
r_flag=1;
}
#pragma CODE_SEG DEFAULT
作者:
786892880
时间:
2009-9-28 00:15
没人回答 我自己来顶下啦!
经过几天的努力 问题终于取得进展!数据不准确是因为波特率的问题 把波特率改了就行啦,注意是跟PLL时钟频率有关。不能发送数据是因为232,用了比较小的瓷片电容,改了就行啦。
作者:
lhqc212
时间:
2009-9-28 09:13
问一下 我的也是同样的问题,但是波特率我已经查过了,还是会出现数据不准确,我用的是232-485完全乱码
作者:
chiusir
时间:
2009-10-11 21:46
恭喜,这下肯定体会颇多1
作者:
kingbae
时间:
2010-5-4 11:54
波特率的问题?你的波特率想设为多少?
作者:
还不是我!
时间:
2011-1-12 08:57
回复
2#
786892880
波特率到底会影响什么呢?根据什么确定它的值啊?
作者:
艳子
时间:
2011-1-12 16:06
学习了
作者:
qq155111897
时间:
2011-2-19 19:02
楼主可以加下注释吗
作者:
freezing189
时间:
2011-5-29 13:46
楼主 请教请教 我根本就不能从芯片接受数据啊 更别说从PC发送数据了
求解啊
作者:
x_yang1989723
时间:
2012-2-15 01:20
那楼主那个从pc给单片机发数据可以收到了吗,怎么解决的、
作者:
仰望星空1
时间:
2012-3-11 17:24
貌似PLL与波特率配合的问题很烦人,我也被困惑了好久,现在电脑可以接收数据了,但是貌似是乱码,有没有人知道是什么问题呀
作者:
林的0922
时间:
2013-3-13 10:27
我也是有断点 如何解决
欢迎光临 智能车制作 (http://dns.znczz.com/)
Powered by Discuz! X3.2