×
单片机 > 单片机程序设计 > 详情

PIC单片机-RS232串口通信

发布时间:2020-05-16 发布时间:
|

编写程序实现以下功能。在计算机上使用串口大师向开发板发每次发送1个字符。开发板每接收到一个数据,则交换该数据的高低4位,再发送回计算机。


端口初始化时使能发送与接收,使用扫描方式接收数据,接收到数据后立即交换高低四位并发送,交换高低四位方式如下:


i = ((RCREG & 0xff) << 4) | (RCREG >> 4)

完整程序:


/*******************************************************************************

* 标    题: 异步串口通讯

* 功能描述: 在计算机上使用串口大师向开发板发每次发送1个字符。

* 开发板每接收到一个数据,则交换该数据的高低4位,再发送回计算机。

********************************************************************************/

#include

 

#define uint8 unsigned char

#define uint16 unsigned int

 

__CONFIG(FOSC_HS &WDTE_OFF &BOREN_OFF &PWRTE_OFF &LVP_OFF); //设置配置位

//WDTE_OFF:disable watchdog timer       看门狗禁止

//LVP_OFF:low voltage programming disabled  低电压编程禁止

//FOSC_HS:high speed crystal/resonator  4M以上晶振选择HS高速

//PWRTDIS:disable power up timer

//BOREN_OFF:disable brown out reset

 

/***************************声明函数*******************************************/

 

void SCI_Init(void); //串口初始化

 

/*******************************************************************************

* 函 数 名: SCI_Init(void)

* 函数功能: 异步串口通讯初始化

* 入口参数: 无

* 返    回: 无

*******************************************************************************/

 

void SCI_Init(void)

{

    SPBRG = 129;    //高速 波特率9600

    TXSTA = 0x24;   //使能发送,8位数据

    RCSTA = 0xB0;   //8位数据接收,使能连续接收,

    TRISC6 = 1;     //设置为输入状态

    TRISC7 = 1;

}

 

/******************************************************************************

* 函 数 名: mian(void)

* 函数功能: 接收到一个数据,交换该数据的高低4位,再发送回计算机

* 入口参数: 无

* 返    回: 无

*******************************************************************************/

 

void main(void)

{

    uint8 i;

    SCI_Init();     //串口初始化

    while(1)

    {

        if(RCIF == 1)   //等待接收

        {

            i = ((RCREG & 0xff) << 4) | (RCREG >> 4); //交换接收到的数据高低四位,存放于i

            TXREG = i; //发送数据

            while(TRMT == 0); //等待发送完成

        }

    }

}





『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
浅谈AVR中定时器几种工作模式