找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2090|回复: 1
打印 上一主题 下一主题
收起左侧

自己理解的一个串口中断函数,大神指点,初学者可以看看比较

[复制链接]
跳转到指定楼层
楼主
ID:233997 发表于 2017-9-26 20:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include<reg52.h>

typedef unsigned char num;

void UsartInit() //初始化串口
{
TMOD=0X20; //确定T1定时器计数器工作方式——工作方式1
SCON=0X50; //确定串口工作方式——工作方式1 波特率=(2^SMOD/32)*T1溢出率
PCON=0X80; //SMOD 倍频选择 SMOD=0 波特率正常,SMOD=1波特率加倍
TH1=0XF3; //根据已知波特率、晶振频率、串口工作方式计算初值
TL1=0XF3;
EA=1;  //开总中断
ES=1; //开串口中断
TR1=1; //开启计数模式

}

void main()
{
UsartInit();//初始化串口
while(1);//等待中断

        }

void serialopen() interrupt 4  //中断函数,选择中断源 4
{
num receivedata; //receivedata 接受和发送的数据
receivedata=SBUF;  //接受数据写入SBUF
RI=0;                         //必须软件清零RI。硬件置1,CPU响应中断,下一帧数据写入SBUF。
SBUF=receivedata; //发送数据到SBUF
while(!TI);           //!TI不是0既是1,说明数据还没发送完。TI不是1,便是0,跳出while函数,说明数据发送完毕。
TI=0; //必须软件清零


}

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:235772 发表于 2017-9-27 08:45 | 只看该作者
在串行中断函数内,首先判断是哪种中断,然后在进行相关操作。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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