资源描述
昆明理工大学机电工程学院
嵌入式系统设计与应用
实验报告书
实 验 名 称:
串行通信实验
年级专业及班级:
级 机自班
姓 名:
学 号:
指 导 教 师:
张文斌、高贯斌
评 定 成 绩:
教 师 评 语:
实验时间: 2014 年 12 月 27 日
实验三 串行通信实验
一、 实验目的
熟悉XS128单片机的SCI串口的使用,掌握查询和中断方式的发送和接收功能。
二、 实验原理
SCI允许单片机和其他器件(包括其他单片机)进行全双工、异步、串行通信。SCI由波特速率发生器、发射器和接收器组成。发射器和接收器独立运行,尽管它们使用同一波特率发生器。在正常运行期间,单片机监控SCI的状态,写入将要发送的数据,读出接收到的数据。
XS128单片机的SCI模块的功能框图如下图所示
图1. SCI模块的功能框图
扩展板的左上部提供了 TTL 电平与 RS-232C 电平的转换芯片 MAX232,MAX232 提供了 2 组电平转换。
第一组:RS-232C 电平(R1IN)→ TTL 电平(R1OUT)
TTL 电平(T1IN)→RS-232C 电平(T1OUT)
第二组:RS-232C 电平(R2IN)→ TTL 电平(R2OUT)
TTL 电平(T2IN)→RS-232C 电平(T2OUT)
在实际使用中,TTL 电平的输入、输出引脚分别与 MCU 的发送、接收引脚连接;RS-232C电平的输入、输出引脚分别与其它设备(如 PC 机)的发送、接收引脚连接。
串行通信的原理图如图2所示。图中 T1OUT 和 T2OUT 信号各接一盏小灯,当微处理器发送数据时,小灯会点亮。
三、 实验连线及要求
图2. SCI通信模块原理图
本实验有4个小实验组成,分别为:查询方式发送实验、中断方式发送实验、查询方式接收实验、中断方式接收实验。
查询方式发送是指单片机按照一定时间间隔按时读取串口的状态,如果串口处于空闲状态,就将待收的数据发送出去。
中断方式发送是指,一旦串口处于空闲状态,串口就对单片机触发一个中断,单片机则将待收的数据发送出去。
查询方式接收是指,单片机按照一定时间间隔按时读取串口的状态,如果串口接收到了数据,单片机就将数据读入,并对数据进行处理。
中断方式接收是指,当串口接收到一个数据后,对单片机触发一个中断,单片机则响应中断,对数据进行接收并处理。
基本要求:
用查询方式实验xs128串行通信的接收及发送,并实现与上位机串口调试程序的交互:上位机发送‘a’,xs128接收到字母‘a’返回‘b!’。
高级要求:
用中断方式实现上述功能。
连线
引脚
连接孔
功能简要说明
1
PS2
RXD端口
2
PS3
TXD端口
3
4
5
6
7
8
注:行数不够时可加行
四、 实验程序流程图
分别画出上述程序的流程框图。
四、实验程序
#include <hidef.h> /* common defines and macros */
#include "derivative.h" /* derivative-specific definitions */
void main(void) {
/* put your own code here */
unsigned char data ;
data='a' ;
SCI0BDL=0X34;
SCI0BDH=0X00;
SCI0CR1=0X00;
SCI0CR2=0X0C;
EnableInterrupts;
for(;;)
{
while(1) //发送
{
if ((SCI0SR1 & (1<<7))!=0) // SCI0SR1_TDRE
{
SCI0DRL = data;
break;
}
}
while(1)//接收
{
if ((SCI0SR1&(1<<5))!=0 ) // SCI0SR1_RDRF
{
data = SCI0DRL;
if(data == 'a' || data == 'A') data = 'b';
// SCI0DRL=data;
break;
}
}
_FEED_COP(); /* feeds the dog */
} /* loop forever */
/* please make sure that you never leave main */
}
五、实验现象以及碰到什么问题?如何解决?
展开阅读全文