打印
[PIC®/AVR®/dsPIC®产品]

PIC18F24K 串口问题,求高人解决!

[复制链接]
1567|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
gmgmgm|  楼主 | 2016-3-22 19:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
需要使用到双串口单片机,于是选用PIC18F24K22,调试串口EUSART1、EUSART2,但是遇到了个问题,EUSART2死活不接收,进入不了中断接收,EUSART1接收没问题,EUSART2只会发送但不会接收,很无语,两个模块初始化程序都一样的,程序如下,请高手帮忙解决下,谢谢

void Uart_Init1(void)//串口1初始化
{

                BAUDCON1|=0b00001000;//波特率控制 ABDOVF RCIDL DTRXP CKTXP BRG16 — WUE ABDEN
               
                SPBRG1=0x8a;//低字节  0x069d=2400    0x364=4800 0x1a5=9600
                SPBRGH1=0x06;//高字节
                RCSTA1|=0b10110000;//SPEN RX9 SREN CREN ADDEN FERR OERR RX9D
                TXSTA1|=0b10100000;//CSRC TX9 TXEN SYNC SENDB BRGH TRMT TX9D

                TRISC7=1;//RX
                RC6=1;
               
                PIE1|=0b00100000;//允许EUSART1 接收中断               
                INTCON|=0B11000000;//中断控制寄存器
}

void Uart_Init2(void)//串口2初始化
{

                BAUDCON2|=0b00001000;//波特率控制 ABDOVF RCIDL DTRXP CKTXP BRG16 — WUE ABDEN
               
                SPBRG2=0x64;//低字节  0x069d=2400    0x364=4800 0x1a5=9600
                SPBRGH2=0x03;//高字节
                TXSTA2|=0b10100000;//CSRC TX9 TXEN SYNC SENDB BRGH TRMT TX9D
                RCSTA2|=0b10010000;//SPEN RX9 SREN CREN ADDEN FERR OERR RX9D
               
                TRISB6=0;//TX
                TRISB7=1;//RX
                RB6=1;
               
                PIE3|=0b00100000;//EUSART2 接收中断允许位
       
                INTCON|=0B11000000;//中断控制寄存器
}

void interrupt HiSir(void)//
{
        unsigned char data;
   if(RC1IF)//EUSART1 接收中断  串口1发送和接收正常
    {
            RC1IF=0;
        data=RCREG1;//RC1IF=0;

        Send_UART(0xaa);
        Send_UART(data);
    }

           
            if(RC2IF)//EUSART2 接收中断  串口2发送正常,接收不到数据,不进入这里中断
    {
            RC2IF=0;
        data=RCREG2;//RC1IF=0;

        Send_UART(0xa1);
        Send_UART(data);
    }

}
沙发
lx20150828| | 2016-3-23 13:43 | 只看该作者
你看下串口2是不是有个初始化设置,要设置成数字口

使用特权

评论回复
板凳
zhoujunfeng| | 2016-3-28 22:27 | 只看该作者
;系统初始化单元
    #INCLUDE        "P18F45K22.INC"
  errorlevel 0,-301,-302  
   
   
SYSCOD        CODE        0200H     

    GLOBAL         Uart_Initial
;串口初始化       
Uart_Initial
BANKSEL    ANSELC
    MOVLW   B'00000000'
    MOVWF   ANSELC
    MOVWF   ANSELD
   
BANKSEL    TRISC
    MOVLW   B'10111111'             ;PORTC.6 RXD PORTC.7 TXD
    MOVWF   TRISC
    MOVWF   TRISD
BANKSEL    INTCON
    MOVLW   B'11000000'
    MOVWF   INTCON
BANKSEL    PIE1  
    MOVLW   B'00100000'
    MOVWF   PIE1                    ;串口1接收中断允许
    MOVWF   PIE3                    ;串口2接收中断允许
    MOVLW   B'00000000'
    MOVWF   PMD0
BANKSEL    IPR1
;    MOVLW   B'00000000'
;    MOVWF   IPR1
;    MOVWF   IPR3
BANKSEL    BAUDCON1
    MOVLW   B'00001000'
    MOVWF   BAUDCON1                    
    MOVWF   BAUDCON2
BANKSEL    RCSTA1   
    MOVLW   B'10010000'                    
    MOVWF   RCSTA1                    ;串口1使用16位波特率
    MOVWF   RCSTA2                    ;串口2使用16位波特率
    MOVLW   B'00100000'
    MOVWF   TXSTA1
    MOVWF   TXSTA2
    MOVLW   .35
    MOVWF   SPBRG1
    MOVWF   SPBRG2
    MOVLW   00H
    MOVWF   SPBRGH1
    MOVWF   SPBRGH2
   
    RETURN

使用特权

评论回复
地板
zhoujunfeng| | 2016-3-28 22:33 | 只看该作者
;中断程序   
INTERPRO
BANKSEL    PIR2  
BTFSS   PIR2,RC1IF
    GOTO    Uart1IF     
CALL    Uart1_Receive      ;串口1数据处理
    GOTO    INTRET   
Uart1IF


INTRET   
BCF            PIR2,RC2IF


INTRET   
    RETFIE

使用特权

评论回复
5
zhoujunfeng| | 2016-3-28 22:36 | 只看该作者
MOVF    RCREG2,W
MOVWF   RCREG1         ;串口2的数据通过串口1发送

使用特权

评论回复
6
QQ826220679| | 2016-4-1 00:27 | 只看该作者
参考一下这个帖子:https://bbs.21ic.com/icview-230955-1-1.html

使用特权

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

本版积分规则

135

主题

766

帖子

2

粉丝