第八章80C51并行口和串行口详解.ppt

  1. 1、本文档共98页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第八章80C51并行口和串行口详解

图8–8 串行口方式0同步移位输出电路 图8–9 多机通信的主机程序流程图 图8–10 多机通信的从机程序流程图 表8–1 串行口工作方式选择 SM0 SM1 工作方式 特 点 波 特 率 0 0 方式0 8位移位寄存器 fosc/12 0 1 方式1 10位UART 可变 1 0 方式2 11位UART fosc/64或fosc/32 1 1 方式3 11位UART 可变 常用波特率查询表 8-5-2 串行口的应用 (一) 串行口初始化编程格式: SIO:MOV SCON,#控制状态字 ;写方式字且 ;TI=RI=0 (MOV PCON,#80H) ;波特率加倍 ( MOV TMOD,#20H ) ;T1作波特率发生器 ( MOV TH1,#X ) ;选定波特率 ( MOV TL1,#X ) ( SETB TR1) ( SETB EA) ;开串行口中断 ( SETB ES) 一、一般编程方法 一般发送程序:先发送一个字符,等待TI=1后再发送下一个字符。 1.查询方式: TRAM: MOV A,@R0 ;取数据 MOV SBUF,A ;发送一个字符 WAIT: JBC TI,NEXT ;等待发送结束 SJMP WAIT NEXT: INC R0 ;准备下一次发送 SJMP TRAM 2.中断方式: ORG 0023H ;串行口中断入口 AJMP SINT MAIN: … ;初始化编程 TRAM: MOV A,@R0 ;取数据 MOV SBUF,A ;发送第一个字符 H: SJMP H ;其它工作 SINT: CLR TI ;中断服务程序 INC R0 MOV A,@R0 ;取数据 MOV SBUF,A ;发送下一个字符 RETI 一般接收程序:REN=1、RI=0等待接收,当RI=1,从SBUF读取数据。 1.查询方式: WAIT: JBC RI,NEXT ;查询等待 SJMP WAIT NEXT: MOV A,SBUF ;读取接收数据 MOV @R0,A ;保存数据 INC R0 ;准备下一次接收 SJMP WAIT 2.中断方式: ORG 0023H AJMP RINT MAIN: … ;初始化编程 H: SJMP H ;其它任务 RINT: CLR RI ;清中断标志 MOV A,SBUF ;读取接收数据 MOV @R0,A ;保存数据 INC R0 RETI MAINT: MOV SCON,#80H;串行口初始化 MOV PCON,#80H;波特率 SETB EA SETB ES ;开串行口中断 MOV R0,#50H ;设数据指针 MOV R7,#10H ;数据长度 LOOP: MOV A,@R0 ;取一个字符 MOV C,P ;加奇偶校验 MOV TB8,C MOV SBUF,A ;启动一次发送 HERE: SJMP HERE ;CPU执行其它任务 (二)异步通讯程序举例 1.发送程序:将片内RAM 50H起始单元的16个数由串行口发送。要求发送波特率为系统时钟的32分频,并进行奇偶校验。 ORG 0023H ;串行口中断入口 AJMP TRANI TRANI: PUSH A ;保护现场 PUSH PSW CLR TI ;清发送结束标志 DJNZ R7,NEXT ;是否发送完? CLR ES ;发送完,关闭串行口中断 SJMP TEND NEXT: INC R0 ;未发送完,修改指针 MOV A,@R0 ;取下一个字符 MOV C,P ;加奇偶校验 MOV TB8,C MOV SBUF,A ;发送一个字符 POP PSW ;恢

文档评论(0)

ee88870 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档