新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于串口通信的单片机仿真和C语言开发

基于串口通信的单片机仿真和C语言开发

作者:时间:2012-08-28来源:网络收藏

2. 选择波特率发生器

选择定时器1或定时器2 做为其波特率发生器。

3. 设置定时器工作方式

当选择定时器1 做为波特率发生器时,需设置其方式寄存器TMOD 为计数方式并选择相应的工作方式(一般选择方式2 以避免重装定时器初值);当选择定时器2 做为波特率发生器时,需将T2CON 设置为波特率发生器工作方式。

4. 设置波特率参数

影响波特率的参数有二,一是特殊寄存器PCON 的SMOD 位,另一个是相应定时器初值。

5. 允许串行中断

因在程序中我们一般采有中断接收方式,故应设EA=1、ES=1.

6. 允许接收数据

设置 SCON 中的REN 为1.表示允许串行口接收数据。

7. 允许定时/计数器工作

此时开启定时/计数器,使其产生波特率8. 编写串行中断服务程序。

当有数据到达时,系统将自动执行所编写的中断服务程序。

9. 收/发相应数据

注意的是发送操作完成需将T1清零,接收工作完成后需将R1清零。

5.2 程序设计

5.2.1 主程序设计

主程序主要完成硬件初始化、子程序调用等功能。

1. 初始化。

首先调用 LCD 初始化程序,在LCD 上显示数据RECEIVE:和TEMP is: *C.

然后调用中断及初始化子程序程序,把接收数据单元RECDATA 清零。设置寄存器SCON 的SM0、SM1 位定义串口工作方式,选择波特率发生器为定时器T1;设定定时器T1 工作方式为方式2;设置波特率参数为9600bps;允许串行中断及总中断;允许串口接收数据,定义REN=1;启动定时/计数器T1 工作,定义TR1=1.

2. 串口收发数据。

判断串口成功接收数据标志位flag_uart 是否为0,若flag_uart 为0,表明串口未接收到数据,则继续等待串口接收数据;若flag_uart 为1,表明串口成功接收或发送数据,进入串口中断服务子程序,接收数据,并将串口成功接收数据标志位flag_uart 清零,调用LCD 显示接收数据子程序,在LCD 上显示从串口接收到的数据,同时回传温度值给PC机显示。主程序设计流程图如图5.1 所示。

图 5.1 主程序流程图
图 5.1 主程序流程图

5.2.2 串口中断服务子程序

判断串口发送标志位TI 是否为1,若TI 为1,则把数据从发给PC 机,并把TI清零,中断子程序返回;若TI为0,表明RI=0,则把串口接收标志位RI清零,把串口接收缓冲器SBUF 中的数据写入串口接收数据单元RECDATA,再把该数据送到串口发送缓冲器SBUF 中,传给PC 机,置串口成功接收数据标志位RECOKBIT 为1,表明串口成功接收发送数据,最后中断子程序返回。串口收发数据中断服务子程序设计流程图如图5.2 所示。

图5.2 串口中断服务子程序
图5.2 串口中断服务子程序



评论


相关推荐

技术专区

关闭