单片机实验串口中断.docVIP

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
单片机实验串口中断.doc

实验 2.实验的源程序: #includereg52.h #includemath.h unsigned char flag,a; //flag为接收标识符 void main() { TMOD=0x20; //控制字为:0010 0000 则选择定时器T1,选择工作方式2(自动重装入初值的8位定时器) TH1=0xfa; //赋初值 TL1=0xfa; //赋和TH1相同的初值 TR1=1; // 置1,启动定时器T1 REN=1; //置1,允许串口接收数据 SM0=0; SM1=1; //01,选择串口工作方式1,即10位异步收发,波特率可变,由定时器控制 EA=1; //置1,CPU开放中断 ES=1; //置1,允许串行口中断 //发送数据 while(1) { if(flag==1) //是否接受过数据,若flag==1,则表示接收过数据,程序继续向下执行 { ES=0;//置0,禁止串行口中断 flag=0;//将flag清0 SBUF=a;//发送数据 while(!TI)//当TI==1,即数据发送成功时(SBUF中的数据发送完毕后硬件自动将TI置1) { TI=0;//将TI清0 ES=1;//置1,允许串行口中断 } } } } //接受数据函数 void ser() interrupt 4 // 中断处理函数 4表示对应的中断源为串口中断 { a=SBUF;//接收数据 flag=1; //将接收标识符置1,表示接收了数据 RI=0;//将RI清0 } 3.串行数据通信两种异步通信在这种通信方式中,接收器和发送器有各自的时钟,它们的工作是非同步的,异步通信用一帧来表示一个字符,其内容如下:一个起始位,仅接着是若干个数据位同步通信同步通信格式中,发送器和接收器由同一个时钟源控制,为了克服在异步通信中,每传输一帧字符都必须加上起始位和停止位,占用了传输时间,在要求传送数据量较大的场合,速度就慢得多。同步传输方式去掉了这些起始位和停止位,只在传输数据块时先送出一个同步头(字符)标志即可。:\keil。 ②打开Keil软件,先新建一个工程文件“Project-New?Project…”菜单。会弹出工程创建对话框。选择工程文件要存放的路径:\keil工程文件夹下面,并给该工程命名输入工程文件名最后单击保存在弹出的对话框中厂商及型号选择好 Atmel 公司的 AT8951后 , 单击确定新建一个 C51 文件 , 单击左上角的 New File保存好后把此文件加入到工程中方法如下用鼠标Source Group1上单击右键 , 然后Add Files to Group ‘Source Group 1。选择要加入的文件 , 找到后单击 Add, 然后单击 Close 在编辑框里输入代码 2、Proteus仿真 (1)在元件模式时,从元件库里找出本次实验需要用到的元器件,其元件名称和英文简写对应如下: ① 51芯片 AT89C51 ② 九针连接器 COMPIM ③ 虚拟终端 VIRTUAL TERMINAL (2)打开Proteus 7 Professional应用程序,在其中找到元器件,按下图所示连接: 注意: ⑴ 双击设置九针连接器的Physical port为COM2,Virtual Baud Rate为9600如下图所示: (2) 安装虚拟驱动软件和串口调试助手,运行串口调试助手,选择发送的串口为COM1,键入要发送的字符或者数据,选择手动发送,打开串口,如下图所示。 (3)双击仿真电路图中的AT89C51并添加产生的hex文件,点击运行按钮“”后会自动弹出虚拟终端,在串口调试助手上手动发送数据Nice to meet you !具体仿真如下图所示: (4)打开虚拟驱动软件,可以看到虚拟串口COM1与COM2已经打开了: 四、实 验 流 程 图 五、实 验 小 结 ⑴串行端口的本质功能是作为CPU和串行设备间的编码转换器。当数据从CPU经过串行端口发送出去时,字节数据转换为串行的位。在接收数据时,串行的位被转换为字节数据。当设定SM1、SM0为01时,串行口工作方式1。方式1为波特率可变的8位异步通信方式,由TXD发送RXD接收,一帧数据为10位,1位起始位(低电平),8位数据位(低位在前)和1位停止位(高电平),波特率取决于定时器 的T 溢出率(1/溢出周期)和波特率的选择位SMOD。 开始 定时器1初始化 串行口初始化 串口中断 启动定时器1 设置串口中断 接收到数据 发送 Y是 接收到数据

文档评论(0)

000 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档