南京邮电大学微机实验串行接口
时间: 2024-12-30 17:32:14 浏览: 9
### 南京邮电大学微机实验中的串行接口
#### 一、串行接口概述
在计算机体系结构中,串行通信是一种数据传输方式,在这种模式下,数据一位接一位地顺序传送。这种方式减少了所需的物理连接线数量,从而降低了成本和复杂度[^1]。
对于南京邮电大学的微机实验而言,串行接口实验旨在让学生理解并掌握单片机或其他处理器通过RS-232标准与其他设备进行异步通讯的方法和技术要点。这不仅涉及到硬件电路的设计搭建,还包括相应驱动程序编写等内容的学习实践过程[^2]。
#### 二、实验目的与要求
该实验的主要目的是使学生能够熟悉常用PC机上的COM端口配置参数设置;学会利用C/C++编程实现简单的字符发送接收功能;进一步加深对中断机制的理解应用水平。具体来说:
- 掌握8051系列单片机内部SCI模块的工作原理及其寄存器定义;
- 编写基于查询方式或中断服务子程序控制下的UART收发例程;
- 使用Proteus仿真工具完成虚拟仪器仪表连线调试工作。
#### 三、示例代码展示
下面给出一段适用于MCS-51架构MCU平台的基础版本ASCII码字符串回显测试源文件(假设波特率为9600bps),供参考学习之用:
```c
#include <reg52.h>
sbit LED=P2^7; // 定义LED指示灯引脚位置
void delay(unsigned int i){
while(--i);
}
// 初始化串行口函数, 设置SMOD=1,BREN=1,TB8=RB8=0,
// 波特率发生器采用定时器T1模式2(自动重装载), SMOD位决定实际波特率高低.
void InitSerial(void){
TMOD = 0x20;
TH1 = 0xFD; // 设定初值对应于fosc=11.0592MHz时的标准9600bps速率
SCON = 0x50; // 工作于方式1,允许接收
TR1 = 1; // 启动计数溢出产生时钟脉冲序列供给SCON寄存器作为移位时序信号
ES = 1; // 开启串口中断请求开关
EA = 1; // 总控全局中断使能标志置位
}
// 中断处理程序用于响应来自外部器件的数据到来事件触发条件满足情况
void UartInt() interrupt 4 {
if(RI){ // 如果RI被置'1',表示已成功收到一字节有效信息
RI = 0;
SBUF=SBUF; // 将读取到的内容原样送回到发送缓冲区准备再次发出形成自环效果
}
TI = 0; // 清除发送完毕状态标记以便后续继续正常运作不受影响
}
main(){
InitSerial();
while (1){
LED=~LED;
delay(6000);
}
}
```
阅读全文