微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > RS232串口通信篇

RS232串口通信篇

时间:12-16 来源:互联网 点击:

增强型PIC实验板连接进行程序的仿真调试和烧写步骤,具体的操作步骤,我们已经在前几期做了详细的说明和介绍,在此就不再重复说明,读者朋友可以参阅以前的文章或直接登陆http://www.hificat.com/pic_demo/pic_demo.asp 查看资料。现在我们可以输入程序代码进行调试了,我们在MPLab IDE 软件中新建工程,加入源程序代码,同时进行芯片型号的选择和配置位的设置,我们实验所用的芯片型号为PIC16F877A。编写的程序代码如下:

#includepic.h> / 包含单片机内部资源预定义

unsigned char recdata;

void delay() // 延时子程序

{

unsigned int k;

for(k=0;k300;k++);

}

//------------------------------

// 主程序

void main()

{

TRISC=0xC0; // 设置C 口方向

TRISA=0XC0; //RA0--RA5 为输出

SPBRG=0X19; // 设置波特率为9600BPS

TXSTA=0X24; // 使能串口发送,选择高速波特率

RCSTA=0X90; // 使能串口工作,连续接收

RCIE=0X1; // 使能接收中断

GIE=0X1; // 开放全局中断

PEIE=0X1; // 使能外部中断

while(1) // 等待中断

{

switch (recdata)

{

case 0x01:PORTC=0x01;break;

case 0x02:PORTC=0x02;break;

case 0x03:PORTC=0x04;break;

case 0x04:PORTC=0x08;break;

case 0x05:PORTC=0x10;break;

case 0x06:PORTC=0x20;break;

}

delay();

}

}

//------------------------------

// 中断函数

void interrupt usart(void)

{

if(RCIF) // 判断是否为串口接收中断

{

RCIF=0;

recdata=RCREG; // 接收数据并存储

TXREG=recdata; // 返送接收到的数据 // 把接

收到的数据发送回去

}

}

编好程序后,读者朋友可以将编译好的HEX 通过ICD2 仿真烧写器烧入单片机芯片,然后上电运行。首先,我们打开串口调试助手,设定好串口序号、波特率等相关参数,具体参数见图6 所示,然后我们发送十六进制数“01”,我们的思路是发送数据“01”,则点亮实验板上第一个LED 发光管;发送数据“02”,则点亮板上第二个LED 发光管,现在我们发送了“01”后,我们可以看到实验板上的第一个发光管已点亮,如图7 所示,同样,你可以试一下用串口调试助手发送其它数据内容,板子上将会出现何种现象。

我们输入了这么长一段程序后,作为初学者的读者一定对有些语句会有点疑问,下面我们就来一起结果实际,看一下一些关键程序语句的作用。

#includepic.h> 语句用来加载PIC库文件,头部recdata 变量的定义是用来存放我们接收到的串口数据,void delay () 是延时函数,TRISC、TRISA 相关的语句用来设置RC、RA 口的输入、输出状态,在此我们设置为输出。SPBRG=0X19 至PEIE=0X1 这些语句,分别是对串口通信参数的配置与开启中断使能, while(1) 是死循环语句,即周而复始地执行{ } 内的语句体,如我们现在的程序中的作用即是不停地判断recdata 这个变量,也就是不停地判断串口接收到的数据是否为0x01、0x02??

0x06 这些数据,通过判断不同的数值,再点亮板上LED 发光管,即PORTC 端口的赋值。在程序尾部有个interrupt usart() 函数,它是我们的中断处理函数,当有串口中断产生时,就会进入这个函数体,函数体中语句的主要作用是把接收到的串口数据放到变量recdata 中,同时将接收到的数据再返回给上位机,即回传给PC 机,这样就进行了一次完整的双向通信。

RS232串口通信的原理与使用我们讲到这里,接下来几期,我们将继续一起学习增强型PIC 实验板的其它各部分资源的原理与使用,使你对单片机应用的各方面知识都有所入门与提高。增强型PIC实验板系统资源丰富,可做实验有:6 位LED 数码管、8 路LED、直控键盘、蜂鸣器喇叭、继电器试验、I2C 总线接口、SPI 总线接口、160X 液晶、128X64液晶、红外接收头接口、步进电机驱动接口、AD模/ 数转换接口、串行时钟芯片DS1302、温度传感器DS18B20 接口、RS232串口通讯、外扩展接口以便外接更多的实验资源。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top