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

908GP32的SCI中断问题。

908GP32的SCI中断问题。

我的SCI只能进一次中断,怀疑是没有清中断标志位。请问各位大虾如何清908GP32的SCI的发送中断标志?谢谢!
清SCTE标志的步骤是,先读SCS1寄存器,然后写SCDR寄存器。
海纳百川  有容乃大
老大,我是这么做的阿,我在中断里面 先读SCS1寄存器,然后写SCDR寄存器。
但是之后就再也不进中断了。
为什么我在初始化里面开了发送中断,反而发不了了呢?奇怪啊。
你要检查一下,是没有发,还是没有产生中断,还是产生了中断但是没有进中断...
海纳百川  有容乃大
我在PC端接收到了1个字符,说明进了发送中断了。然后我在中断服务程序里按照先读SCS1寄存器,然后写SCDR寄存器的方法,想再发一个字符到PC机,但是就不来了
SCI模块被关掉了?
海纳百川  有容乃大
while(1)这个超级循环里面我没有写代码,只是在空转。
然后我在发送中断服务程序里面只是写了这么一句:SCC2 |= SCI_Tx_INT_ENABLE;
应该没有问题啊。老大请指教!!
发送中断程序里面开中断肯定有问题,应该在外面放开中断,你在中断服务程序里面写,怎么产生中断进入服务程序呢?
哦,那就是说只要在初始化里面使能一次发中断就行了。是吧。
是的。
海纳百川  有容乃大
能不能实现你自己可以试一下,这个应该很容易就测试出来的。
从PC发字符,PC显示出来?PC显示的是输入的字符还是GP32发送过去的字符?

程序中的irbyte好像没有说明什么作用。仅仅给程序片段,没有什么注释很难看出什么问题的。
显示的是PC的输入字符,那个irbyte应该是irflag。我试了一下不行,其他的初始化工作都已经做好了,感觉上应该可以的,但是....

interrupt 12 void SciRxIntHand(void)
{
U8 Status,readbuf;//中间变量
Status = SCS1;//读一次SCS1状态
readbuf = SCDR;//把PC发的数据读到readbuf
rcvbuf[0]=readbuf;//存入rcvbuf[0]
irflag=1;置收到字符的标志
}
while (1)
{
if (irflag) {
irflag=0; //先清一下标志
ix = SCS1;//读一下SCS1状态
SCDR=rcvbuf[0]; //把在接收中断服务程序中的字符发到发送缓冲区中,再发到PC机(这一步有没有什么问题??)
}
}
请老大帮忙看看,我这样能不能实现从PC机发一个字符,就可以在PC上显示出来的功能? (发送中断我没有写程序,是空的。收发中断都已经开了。)谢谢老大!

[此贴子已经被作者于2006-3-24 15:21:20编辑过]

[此贴子已经被作者于2006-3-24 15:25:52编辑过]

我理解你的测试是这样的过程:
PC输入字符-》通过串口送到GP32-》GP32接收,然后通过串口发送出去-》PC接收字符,显示出来。


如果这样的话,你的串口程序除了有接收的程序,应该需要有发送的程序,否则PC接收不到数据肯定无法正确显示了。如果用中断发送就应该有中断程序。你的程序简单的把字符放在寄存器中不行的,需要设置发送的一些寄存器标志位。

[此贴子已经被作者于2006-3-24 17:30:07编辑过]

返回列表