首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

模拟串口通信出错,大家帮忙看看是怎么回事呢?

模拟串口通信出错,大家帮忙看看是怎么回事呢?


我用的gz60,模拟串口通信,用查询方式,没有用中断,现在遇到问题就是用time产生每位的时间间隔时计数不溢出,程序走到检验time是否溢出时就走不动了,大家帮忙分析一下问题吧,谢谢了!

good luck
你的总线频率的定时器频率分别是多少?定时器有没有在走?
海纳百川  有容乃大
总线频率是2M,定时器频率是1M,也就是每1us计数一次,定时器有计数变化但是计到一定数就不动了,而且每次这个数还不一定,我改用中断的方式,还是不能计数溢处,程序采用单片运行,到了中断产生的时候程序就跳出不来了,况且这时coderwarrior调试窗口右下脚的command的窗口总出现
STOPPED
Can't step instuction which branches to itself
这是怎么回事啊?斑主帮忙分析一下吧,谢谢!!
把你的程序贴上来看看。最好是把整个project打包贴上来。
海纳百川  有容乃大
*******************************************************/
#include
#include

#define BT_TRD PTB_PTB2
#define BT_RED PTB_PTB3

unsigned char ii;
unsigned char inch;

//////////////////////////////////////////////////
// 定时计数器1初始化
void Timer1_Init(void)
{
T1SC_TSTOP=1; //停止计数器1
T1SC_TRST=1; //复位计数器1,清除计数器的计数值和设定的分频系数
//以上两位同时置1使计数器停在$0000上

T1SC=0x45; //启动计数器,使能溢出中断,32分频总线频率,即每16uS计数1次,晶振8M,总线频率为2M
T1MODH=0x00;
T1MODL=0x07; //波特率为9600,104us传输一位,即每7个计数发生溢出一次
}

////////////////////////////////////////////////
//系统集成模块初始化

void SIM_INIT(void)
{
CONFIG1=0x39; //5V
CONFIG2=0x09;
}

/////////////////////////////////////////////////

void main()
{
EnableInterrupts; /* enable interrupts */

SIM_INIT();

DDRB_DDRB2=1; //PTB2为输出口,为模拟串口发送数据端
DDRB_DDRB3=0; //PTB3为输入口,为模拟串口接受数据端

ii=0;
PTB_PTB2=1; //空闲状态置位高电平
inch=0x55; //发送数据0x55
Timer1_Init();
for(;;);

}

//////////////////////////////////////////////////////////
//中断服务程序
//////////////////////////////////////////////////////////
interrupt void T1_OverFlow_ISR(void)
{
T1SC_TOIE=0; //溢出中断禁止
T1SC_TOF=0; //清处溢出标志位

if(ii==0)
{
BT_TRD=0; //发送起始位0
ii++;
}
else if((ii>0)&&(ii<8))
{
if(inch&0x01) //先发送lsb,判断1还是0
{
BT_TRD=1; //发1
}
else
{
BT_TRD=0; //发0
}
inch=(inch>>1); //发送次低位
ii++;
}
else if(ii==8)
{
BT_TRD=1; //发停止位
ii++;
}
else
{
ii=0; //循环发送0x55
}
T1SC_TOIE=1; //溢出中断使能
}

以上是我的程序,程序采用循环发送0x55,每次计数满发送一位,现在的问题是程序不产生中断,是我中断设置的问题还是计数器的问题呢,斑主给分析一下吧,谢谢!!
#include
#include
上面include的两个,未贴上。
#include
#include
奇怪,怎么总贴不上了,看这次怎样.
怎么回事啊,其中一个include的hidef.h,另一个include的68HC908GZ48.h,这次应该可以了吧.祈祷!
可以发到strongchen_free@yahoo.com.cn。
海纳百川  有容乃大
呵呵  我现在是用延时的方法模拟串口。。希望你那个整出来哈
把interrupt void T1_OverFlow_ISR(void)
改为interrupt 6 void T1_OverFlow_ISR(void)
就OK
Freescale代理--北高智 服务感动客户
在Prm文件中已经声明了阿,interrupt 6 void T1_OverFlow_ISR(void),这是不是跟你上面提到的一样呢? 谢谢回复!!你说的我还没有具体试,有时间试。
在prm文件中声明了就不需要在中断函数中标注数字了
中断怎么用呢? 我觉得我的问题可能出在中断上,中断到底怎么用呢?高手指点一下吧。谢谢!!
发到strongchen_free@yahoo.com.cn,我帮你看看。
海纳百川  有容乃大
返回列表