求助:pic16f690串口接收中断进不去

[复制链接]
6972|8
 楼主| tiger84 发表于 2009-7-23 16:05 | 显示全部楼层 |阅读模式
/***********************************************************&nbsp;<br />函数名称:void&nbsp;UartInit(void)<br />函数功能:uart初始化<br />入口参数:&nbsp;<br />出口参数:&nbsp;<br />备注:<br />***********************************************************/<br />void&nbsp;UartInit(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;TRISB5&nbsp;=&nbsp;1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;TRISB7&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;ANS11&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;引脚配置<br />&nbsp;&nbsp;&nbsp;&nbsp;SPEN&nbsp;=&nbsp;1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;允许串口<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;//RABPU&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;波特率&nbsp;&nbsp;&nbsp;SPBRGH:SPBRG:=&nbsp;((FOSC/BAUD_RATE)/16)&nbsp;-&nbsp;1;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;BRGH&nbsp;=&nbsp;0;&nbsp;&nbsp;//&nbsp;低波特率<br />&nbsp;&nbsp;&nbsp;&nbsp;BRG16&nbsp;=&nbsp;1;&nbsp;//&nbsp;16位模式&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;SPBRGH&nbsp;=&nbsp;((FOSC/BAUD_RATE)/16)&nbsp;-&nbsp;1;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;SPBRG&nbsp;=&nbsp;1;&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;异步模式<br />&nbsp;&nbsp;&nbsp;&nbsp;SYNC&nbsp;=&nbsp;0;&nbsp;&nbsp;//&nbsp;异步&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;TXEN&nbsp;=&nbsp;0;&nbsp;&nbsp;//&nbsp;允许发送&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;TXIE&nbsp;=&nbsp;0;&nbsp;&nbsp;//&nbsp;禁止发送中断&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;CREN&nbsp;=&nbsp;1;&nbsp;&nbsp;//&nbsp;使能接收<br />&nbsp;&nbsp;&nbsp;&nbsp;RCIE&nbsp;=&nbsp;1;&nbsp;&nbsp;//&nbsp;允许接收中断<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GIE&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;1;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;PEIE&nbsp;&nbsp;&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />}<br /><br /><br />/***********************************************************&nbsp;<br />函数名称:void&nbsp;UartRxInt(void)<br />函数功能:uart&nbsp;接收中断&nbsp;<br />入口参数:&nbsp;<br />出口参数:&nbsp;<br />备注:<br />***********************************************************/<br />void&nbsp;interrupt&nbsp;UartRxInt(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;volatile&nbsp;uchar&nbsp;data;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;RB4&nbsp;=&nbsp;1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;控制LED灯亮<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;if(RCIE&nbsp;&&&nbsp;RCIF)&nbsp;&nbsp;//&nbsp;RCIF不能软件清0<br />&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;数据<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data&nbsp;=&nbsp;RCREG;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g_UartRxBuf[g_UartRxCnt++]&nbsp;=&nbsp;data;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(g_UartRxCnt&nbsp;&gt=&nbsp;UART_RECEBUF_LENGTH)&nbsp;&nbsp;//&nbsp;防止溢出<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g_UartRxCnt&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;if(1&nbsp;==&nbsp;FERR)&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;帧错误&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RB4&nbsp;=&nbsp;1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;test<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data&nbsp;=&nbsp;RCREG;&nbsp;&nbsp;&nbsp;//&nbsp;无效字符&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(1&nbsp;==&nbsp;FERR)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SPEN&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NOP();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SPEN&nbsp;=&nbsp;1;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;if(1&nbsp;==&nbsp;OERR)&nbsp;&nbsp;//&nbsp;溢出错误<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RB4&nbsp;=&nbsp;1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;test<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CREN&nbsp;=&nbsp;0;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NOP();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CREN&nbsp;=&nbsp;1;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /><br />通过PC发数据给它,就是进入不了中断!<br />搞了1天,基本上想不出什么思路了,大家帮我看看吧
 楼主| tiger84 发表于 2009-7-23 16:06 | 显示全部楼层

测试了PIC的接收脚,发送时,测试它的接收脚,是有波形的

5V的TTL电平绝对标准。<br /><br />现象说明一下:<br />如果进入了串口接收中断的话,那么控制的LED灯就应该亮,可是我怎么发数据,灯都没反应,灯的控制没有问题,就是说单片机的接收脚接收到数据,并没有进入中断。<br /><br />
wangruixu1121 发表于 2013-11-6 14:57 | 显示全部楼层
我也遇到进不到串口中断的问题 顶一下 有知道的大神 给小弟解解疑惑
wxyicc 发表于 2015-4-30 16:40 | 显示全部楼层
tiger84 发表于 2009-7-23 16:06
5V的TTL电平绝对标准。现象说明一下:如果进入了串口接收中断的话,那么控制的LED灯就应该亮,可是我怎么发 ...

LZ .N你的问题怎么解决的?能否分享一下,现在我这边也出现了同样的问题
NE5532 发表于 2015-5-2 16:03 | 显示全部楼层
wxyicc 发表于 2015-4-30 16:40
LZ .N你的问题怎么解决的?能否分享一下,现在我这边也出现了同样的问题

先调发送,再调接收,中断里还在看IF标志,资料都没看完就敢写程序啊:lol
wxyicc 发表于 2015-5-4 09:29 | 显示全部楼层
NE5532 发表于 2015-5-2 16:03
先调发送,再调接收,中断里还在看IF标志,资料都没看完就敢写程序啊 ...

发送OK 。。。就是无法进入中断函数:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
wxyicc 发表于 2015-5-4 09:31 | 显示全部楼层
NE5532 发表于 2015-5-2 16:03
先调发送,再调接收,中断里还在看IF标志,资料都没看完就敢写程序啊 ...

应该是某个地方没有设置对,分享分享下
NE5532 发表于 2015-5-4 11:58 | 显示全部楼层
while循环里不停的在做初始化,串口还能工作么?应该是在空while循环里等来数吧。
兰天白云 发表于 2015-5-7 13:53 | 显示全部楼层
仿真,当PC发完数据后,暂停运行,看看与串口中断的有关标志是否正常
您需要登录后才可以回帖 登录 | 注册

本版积分规则

101

主题

862

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部