PIC单片机-RS232串口通信

2019-04-15 11:35发布

编写程序实现以下功能。在计算机上使用串口大师向开发板发每次发送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); //等待发送完成 } } }