打印

PIC18F46K22 串口1 不进入接收中断

[复制链接]
1299|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ZF1231666|  楼主 | 2022-3-8 18:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
        使用中断接收数据方式,串口助手提供数据,串口1接收完成标 RC1IF 不置1 ;        使用示波器观测到RC7端口波形正常;
PS:此芯片双串口中,串口2接收发送均正常,串口1发送正常;
以下为串口1初始化配置:                MOVLW                B'00000000'        ; 设:RC 端口 为数字接口状态
                MOVWF                ANSELC                ;

                MOVLW                B'11000000'        ; 设:RC6,RC7=IN;其余OUT
                MOVWF                TRISC                ; 装:TRISC 输入输出控制寄存器


; - - - - - - - 初始化:异步 通讯 寄存器 - - - - - - - - - - - - - - - - - - - - - - - -

                MOVLW                B'00001000'        ; BRG16=1
                MOVWF                BAUDCON1

                MOVLW                B'00000100'        ;
                MOVWF                TXSTA1

                MOVLW                B'10110000'        ; 异步模式,8位,高速
                MOVWF                RCSTA1

                CLRF                SPBRGH1
                MOVLW                D'138'
                MOVWF                SPBRG1                ; 波特率设置为115200 D'138'

                BSF                PIE1,TX1IE        ; 置:TX中断 使能
                BCF                IPR1,TX1IP        ; 清:TX中断 低优先级

                BSF                PIE1,RC1IE        ; 置:RC中断 使能
                BSF                IPR1,RC1IP        ; 置:RC中断 高优先级

                BSF                RCON,IPEN        ; 置:中断优先级 使能位
                BSF                INTCON,PEIE        ; 置:外部中断 使能位
                BSF                INTCON,GIE        ; 置:全部 中断 使能位


以下为中断代码:
INTSERVE_H
                BCF                INTCON,GIE        ; 置:全部 中断 使能位
                BCF                INTCON,PEIE        ; 置:外部中断 使能位

; - - - - - - - 中断现场保护- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

                MOVWF                W_TEMP
                MOVFF                STATUS,STATUS_TEMP
                MOVFF                BSR,BSR_TEMP
                MOVFF                PCLATH,PCLATH_TEMP

                BTFSC                PIR3,RC2IF        ; 查:异步 接收中断 标志位
                GOTO                COMM_LCD        ; 转到 LCD接收

                BTFSC                PIR3,TX2IF        ; 查:LCD异步通讯 TX 中断标志
                GOTO                SEND_DEAL        ; 到:"SEND_DEAL" 继续 发送数据

                BTFSC                PIR1,RC1IF        ; 查:异步 接收中断 标志位
                GOTO                COMM_RS                ; 转到 硬件通讯接收

                GOTO                RE_HRE                ;

; - - - - - - - 中断现场保护- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
COMM_RS
                BSF                PORTC,TEST        ;
                BCF                PIE1,RC1IE        ; 清: RX中断 使能

; - - - - - - - 装载 下一个地址 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

                INCF                RX_COUNT,F
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

                LFSR                1,H'0550'                        ; 设:间接数据寄存器 H'0550' 地址指针
                MOVLW                H'4F'
                ADDWF                RX_COUNT,W
                MOVWF                FSR1L

                MOVFF                RCREG1,POSTINC1        ; 装:寄存器  H'0520'起

                GOTO                COMM_RS_0B        ; 中断返回
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
COMM_RS_0B

                BCF                RCSTA1,CREN        ; 置:RC中断 连续接收 使能
                BSF                PIE1,RC1IE        ; 置:RC中断 使能
                BSF                RCSTA1,CREN        ; 置:RC中断 连续接收 使能

; - - - - - - - 中断现场恢复 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
RE_HRE
                MOVFF                BSR_TEMP,BSR
                MOVF                W_TEMP,W
                MOVFF                STATUS_TEMP,STATUS
                MOVFF                PCLATH_TEMP,PCLATH

                BSF                INTCON,PEIE        ; 置:外部中断 使能位
                BSF                INTCON,GIE        ; 置:全部 中断 使能位

                CLRWDT

                RETFIE                                ; 中断返回



求大神指教!!!!





使用特权

评论回复
沙发
地瓜patch| | 2022-3-8 22:16 | 只看该作者
是否是焊接问题,涂上助焊剂用风枪吹一下,试试

使用特权

评论回复
板凳
ZF1231666|  楼主 | 2022-3-9 10:41 | 只看该作者
地瓜patch 发表于 2022-3-8 22:16
是否是焊接问题,涂上助焊剂用风枪吹一下,试试

我也怀疑过硬件焊接问题,已经排除了
排除方法:1、我重新焊接过对应引脚;
2、我将RC7引脚作为普通输入I/O口,通过外部输入电平高低电路指示灯,是正常的;
但是,我切换RC7为串口使用时,无法触发中断,也没有接收完成标志;

使用特权

评论回复
评论
地瓜patch 2022-3-17 14:00 回复TA
@ZF1231666 :有几块板子?可以焊两块板子对比测试 
ZF1231666 2022-3-17 10:27 回复TA
@地瓜patch :按照您给的方法,我是用串口助手发送数据“AA 55 AA 55”,发送间隔1S,在程序中每1S + 10mS读取寄存器 RCREG1 并发送到显示屏观察,读出数值一直为 “00 00 ” 
地瓜patch 2022-3-14 21:31 回复TA
@ZF1231666 :1us太短,等10ms试试 
ZF1231666 2022-3-14 14:52 回复TA
@地瓜patch :按照您给的方法,我是用串口助手发送数据“AA 55 AA 55”,发送间隔1S,在程序中每1S + 1uS读取寄存器 RCREG1 并发送到显示屏观察,读出数值一直为 “00 00 ” 
地瓜patch 2022-3-10 12:05 回复TA
@ZF1231666 :可以用延时的方法,预计多长时间接收完成,延时这个时间后,去读接收寄存器 
ZF1231666 2022-3-10 09:52 回复TA
@地瓜patch :中断使能和优先级均已打开,我在程序中检测并将对应标志发送到显示屏上看过,是正常的 
ZF1231666 2022-3-10 09:51 回复TA
@地瓜patch :没有接收完成标志,应该怎么进行查询? 
地瓜patch 2022-3-9 22:06 回复TA
串口1发生正常的话,串口的初始化是没问题的,建议不用中断,先用查询的方法测试一下能否成功接收数据 
地瓜patch 2022-3-9 22:05 回复TA
串口1的接收使能,中断使能,优先级是否全部打开? 
地板
ningling_21| | 2022-3-9 11:30 | 只看该作者
ZF1231666 发表于 2022-3-9 10:41
我也怀疑过硬件焊接问题,已经排除了
排除方法:1、我重新焊接过对应引脚;
2、我将RC7引脚作为普通输入I ...

示波器测一下波形是否正常,确认收发管脚没搞错

使用特权

评论回复
5
ZF1231666|  楼主 | 2022-3-10 09:50 | 只看该作者
ningling_21 发表于 2022-3-9 11:30
示波器测一下波形是否正常,确认收发管脚没搞错

已经用示波器看过接收引脚RC7波形了,是没有问题的

使用特权

评论回复
6
ningling_21| | 2022-3-10 13:17 | 只看该作者
ZF1231666 发表于 2022-3-10 09:50
已经用示波器看过接收引脚RC7波形了,是没有问题的

那可能是程序配置的问题了

使用特权

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

本版积分规则

1

主题

7

帖子

0

粉丝