打印

PIC串口问题!!

[复制链接]
6471|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
win2000_li|  楼主 | 2007-12-27 22:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在PIC单片机的串行口发送中断里的发送中断标志位TXIF,在启动发送时,就开始被置1了,并且还不能软件清除。

现在我想用串口发送中断来发送数据,不知道如何是好!!!

请高手指点!!!

如果来判断发送中断??并且自已怎么样来控制发送中断。

比如在`51里,可以将TI = 1;来让串口发送中断。

请高手指点PIC发送中断的方法。
沙发
win2000_li|  楼主 | 2007-12-27 23:55 | 只看该作者

111111

"TXIF为1表示发送寄存器为空!当你把TXEN置1后,会立即把txreg中的数据转存到移位寄存器中,导致TXIF马上置1,且不能用软件方法清0,当向txreg中写入数据时自动清零!”,那当我用中断来做串口发送的时候如果有连续大量的数据需要发送的话好像没问题,通过中断不断的发送,但假如当前需要发送的数据已经全部发完后已经不需要在发送了,这个时候TXIF始终为“1”,那不是会进入中断,但前无数据发送退出中断,但此时txif="1",又马上进入中断的死循环吗。如此疑惑还望给位高手给与解答,或给个串口发送中断的例子.

使用特权

评论回复
板凳
hotpower| | 2007-12-28 00:04 | 只看该作者

txif="1"立即引发发送中断,在中断里清除txif即可,这有何难???

使用特权

评论回复
地板
兰天白云| | 2007-12-28 11:33 | 只看该作者

hotpower刚刚还在玩,应该最清楚了

使用特权

评论回复
5
iaiwork21| | 2007-12-28 13:55 | 只看该作者

需要发送时,置TXIE;否则清TXIE

使用特权

评论回复
6
win2000_li|  楼主 | 2007-12-28 14:36 | 只看该作者

回!!!!!!!!!!

TXIF软件清楚不了啊!!!

所以现在我的中断发送函数都不知道怎么办了啊!!!

使用特权

评论回复
7
win2000_li|  楼主 | 2007-12-28 21:31 | 只看该作者

hotpower老师,你错了。

并不是你说的那样啊!!

真的,不信你看一看PDF吧!!

使用特权

评论回复
8
兰天白云| | 2007-12-29 12:11 | 只看该作者

不知到hotpower有没有用示波器看过?

win2000_li:刚开始发送时,连发2个数据比较好

其实"在启动发送时,就开始被置1了"也没什么大不了的
进中断后再发下一个数据就行了 

使用特权

评论回复
9
win2000_li|  楼主 | 2007-12-29 18:56 | 只看该作者

hotpower老师!!!!!

其实你的那个程序是用查询方式的.

根本就不是中断方式.

当然你这种查询方式我也做成过.

一会回家好后,我发出来.

我们现在讨论的是中断方式.

使用特权

评论回复
10
兰天白云| | 2007-12-29 21:00 | 只看该作者

用我9楼的方法吧,可以的

使用特权

评论回复
11
win2000_li|  楼主 | 2007-12-29 22:56 | 只看该作者

可以啊!!!

但是我想用中断来发送啊!!!

如果用查询发送的话还不行用我的这个

/////////////////////////////////////////////////////////
//函 数 名:void SendNumChar(uint8 *SendAddr, uint8 Num)
//功能描述:发送函数
//函数说明:
//调用函数: 
//全局变量: 
//输入参数:uint8 *SendAddr是要发送数据的首地址
//          uint8 Num是要发送数据的个数
//返回参数: 无
//////////////////////////////////////////////////////////
void SendNumChar(uint8 *SendAddr, uint8 Num)
{
     for(; Num > 0; Num--)
     {
        TXREG = *SendAddr;
        SendAddr++;                   
        while(!PIR1bits.TXIF);
        PIR1bits.TXIF = 0;        //未发送完毕,等待
    }
}
    

使用特权

评论回复
12
xieyuanbin| | 2007-12-30 12:13 | 只看该作者

仔细看五楼的解决方法

不发送数据时将串口发送模块禁止掉

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

142

主题

718

帖子

1

粉丝