如何通过PICC的寄存器设置激活UARTrs-232?

问题描述

我知道有#use rs232命令将其激活, 但我想知道如何分别设置寄存器以激活rs232 我正在使用PIC18f13k22。

我确实这样:

    INTCON = 0xc2;
    IPR1 = 0x7f;
    PIE1 = 0x20;
    PIR1 = 0x10;
    BAUDCON = 0x48;
    RCSTA = 0x90;
    TXSTA = 0xA6;
    SPBRG = 0x82;
    SPBRGH = 0x06;

我查找了PIC18f13k22数据手册,找到了相关的寄存器,并进行了这样的设置。 没用 需要帮忙! 谢谢

解决方法

这是使用Microchip MPLABX和XC8 v2.30构建的完整代码:

/*
 * File:   main.c
 * Author: dan1138
 * Compiler: XC8 v2.30
 *
 * Created on October 6,2020,1:41 PM
 */
#pragma config FOSC = IRC,PLLEN = OFF,PCLKEN = ON,FCMEN = OFF,IESO = OFF
#pragma config PWRTEN = OFF,BOREN = SBORDIS,BORV = 19,WDTEN = OFF
#pragma config WDTPS = 32768,HFOFST = ON,MCLRE = ON,STVREN = ON,LVP = OFF
#pragma config BBSIZ = OFF,XINST = OFF,DEBUG = OFF,CP0 = OFF,CP1 = OFF
#pragma config CPB = OFF,CPD = OFF,WRT0 = OFF,WRT1 = OFF,WRTC = OFF
#pragma config WRTB = OFF,WRTD = OFF,EBTR0 = OFF,EBTR1 = OFF,EBTRB = OFF
 
#include <xc.h>
#include <stdio.h>
 
void putch(char txData)
{
    if(1 == RCSTAbits.OERR)
    {
        RCSTAbits.CREN = 0;
        RCSTAbits.CREN = 1;
    }
    while(0 == PIR1bits.TXIF)
    {
    }
    TXREG = txData;
}
 
void main(void)
{
    OSCCON = 0x60;
    OSCCON2 = 0x04;
    OSCTUNE = 0x00;
    LATA = 0x00;
    LATB = 0x00;
    LATC = 0x00;
    TRISA = 0x37;
    TRISB = 0x70;
    TRISC = 0xFF;
    ANSEL = 0xFF;
    ANSELH = 0x07;
    WPUB = 0x00;
    WPUA = 0x00;
    INTCON2bits.nRBPU = 1;
    BAUDCON = 0x08;
    RCSTA = 0x90;
    TXSTA = 0x24;
    SPBRG = 0xCF;
    SPBRGH = 0x00;
    PIR1bits.TXIF = 0;
 
    printf("\r\nPIC18F13K22 UART demo\r\n");
    while (1)
    {
    }
}

您的问题的解决方案在于知道将配置字值设置为什么,以及如何理解可在数据表中找到哪些信息。

我知道数据表很密集,只记录了可以选择的内容,但不说明为什么要选择特定的值。

通过更多的经验,您可以学习如何阅读数据手册以及有用的信息。

由于您不努力在代码中发表评论,因此我发布的代码同样缺少任何有用的评论。