ZF1231666 发表于 2022-3-8 18:28

PIC18F46K22 串口1 不进入接收中断

        使用中断接收数据方式,串口助手提供数据,串口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为串口使用时,无法触发中断,也没有接收完成标志;

ningling_21 发表于 2022-3-9 11:30

ZF1231666 发表于 2022-3-9 10:41
我也怀疑过硬件焊接问题,已经排除了
排除方法:1、我重新焊接过对应引脚;
2、我将RC7引脚作为普通输入I ...

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

ZF1231666 发表于 2022-3-10 09:50

ningling_21 发表于 2022-3-9 11:30
示波器测一下波形是否正常,确认收发管脚没搞错

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

ningling_21 发表于 2022-3-10 13:17

ZF1231666 发表于 2022-3-10 09:50
已经用示波器看过接收引脚RC7波形了,是没有问题的

那可能是程序配置的问题了
页: [1]
查看完整版本: PIC18F46K22 串口1 不进入接收中断