找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1963|回复: 0
收起左侧

8051单片机串口行中断试验

[复制链接]
ID:275073 发表于 2018-1-12 09:10 | 显示全部楼层 |阅读模式

实验目的与要求
1、掌握串行口中断的原理;
2、掌握串口编程与调试方法;
3、掌握8051单片机的Modbus编程;
实验原理与内容
1. 原理
8051单片机内部有一个全双工的串行通信口,即串行接收和发送缓冲器(SBUF),这两个在物理上独立的接收发送器,既可以接收数据也可以发送数据。但接收缓冲器只能读出不能写入,而发送缓冲器则只能写入不能读出。这个通信口既可以用于网络通信,亦可实现串行异步通信,还可以构成同步移位寄存器使用。如果在串行口的输入输出引脚上加上电平转换器,就可方便地构成标准的RS-232接口。
2. 内容
单片机与微机相连,使用中断方法实现8051单片机与微机的串口通信。微机键入一个字符后发送至单片机,单片机收到后又将此字符发送回微机,在微机屏幕上回显。要求在11.0592MHZ下,串行口的波特率为9600,方式1。
实验设备与软件环境
1.STC89C52RC单片机开发板:
2.KEIL软件开发:
3.stc-isp-v4.80-not-setup
4.Proteus7.7_SP2仿真软件
实验过与结果(可贴图)
1.代码
#include <reg51.h>
#include <intrins.h>
void INIT_SCI()
{
                SCON=0X50;                                //串口初始化
                ES=1;                                        //允许串口中断
                EA=1;                               //开中断
}
void INIT_TMR()
{
                TMOD=0X20;                                //定时器初始化
                TH1=0xfd;
                TL1=0xfd;
                TR1=1;
}
void serial_int(void) interrupt 4
{
unsigned char data c;
        if (_testbit_(RI))                //接收中断服务
                {        c=SBUF;
                        SBUF=c;
                }
        }

void main(void)
{
                INIT_TMR();
                INIT_SCI();                
                while(1);
}
操作异常问题与解决方案
1.代码错误:检查代码,改正
实验总结
通过本次的实验,在前两个实验的基础上让我复习了知识点,也让我在次掌握了新的知识。在完成这次实验后,懂得了这个通信口既可以用于网络通信,亦可实现串行异步通信,还可以构成同步移位寄存器使用。如果在串行口的输入输出引脚上加上电平转换器,就可方便地构成标准的RS-232接口。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表