- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第5章 MCS-51定时/计数器 串行口及中断系统 特殊功能寄存器: TMOD-控制定时/计数器的工作方式。 TCON-控制定时/计数器的启动运行并记录T0,T1的溢出标志。 5.1.3 定时/计数器的4种工作方式 5.2 MCS-51串行口 5.2.1 串行通信的两种基本方式 5.2.2 MCS-51串行口结构 5.2.3 串行口工作方式 5.3. MCS-51单片机中断系统 5.3.1. 中断的一般功能 5.3.2. 中断请求源 5.3.3. 中断控制 (涉及到对中断源的允许还是禁止,各中断的优先级设置) 5.3.4. 中断响应过程 5.3.6. 多外部中断源的设计 5.3.7. 用软件模拟第三个中断优先级(略) 发送数据:数据写入SBUF,就发送一帧数据为10位,从TXD脚输出(起始位,停止位自动生成),发送完后,置中断标志位TI。 (时序分析略) 接收数据:REN=1是接收的先决条件,以所选波特率的16倍速率采样RXD引脚,当采样到负跳变时,就开始接收一帧的其余数据,靠起始位来同步,接收一位要采样3次(包括起始位,停止位),取2次是相同的值作为接收的位值,以保证可靠。 RXD TXD GND RXD TXD GND 起始位 若: (1)RI=0 (2)接收的停止位为1,或SM2=0时,停止位进入RB8 上述两个条件满足,则接收到的8位数据进入SBUF,并置中断标志RI,否则的话,接收的数据将丢失,不能再恢复。 道理: (1)RI=0,即上一帧数据接收完后,发生的中断请求已被响应(中断标志RI要人工清0),SBUF中的上一帧数据已被取走,SBUF空。(即接收完成后,RI位置,不要忘了清0,否则下一帧数据收不到)。 (2)接收的停止位不为1,同步肯定不对,接收的数据肯定错,故放弃数据! 举例:方式1的应用 例6-7 把内部RAM 40H~5FH单元中的ASCII码,在最高位D7加上奇偶校验位后由甲机发送到乙机。 波特率为1200,晶振为11.059MHZ。 设甲机为串行方式1发送状态,SCON?40H,乙机为串行方式1接收状态,SCON?50H。 用T1(方式2)作波特率发生器,TMOD?20H 初值:1200= * X=E8H 甲机编程:MOV TMOD,#20H MOV TL1,#0E8H MOV TH1,#0E8H MOV SCON,#40H ;串行方式1 SETB TR1 MOV R0,#40H MOV R1,#20H NEXT: MOV A,@R0 ;取ASCII码 LCALL SOUT ;调用发送子程序 INC R0 DJNZ R1,NEXT 。 。 SOUT: MOV C,P ;A中为1的奇偶标志, P=0, ;偶数个“1”P=1,奇数个“1” CPL C MOV ACC,7,C MOV SBUF,A JNB TI,$ CLR TI RET 乙机编程:(把接收到的32个字节存放在60~70H中) MOV TMOD,#20H MOV TL1,#0E8H MOV TH1,#0E8H MOV SCON,#50H MOV R0,#60H MOV R1,#20H NEXT: LCALL SIN JNC ERR ;若“1”的个数为偶,则出错。 ;因为发送过来的都是奇的 MOV @R0,A INC R0 DJNZ R1,NEXTERR: ;出错处理 SIN: JNB RI,$ CLR RI MOV A,SBUF MOV C,P ;获得了奇偶性 ANL A,#7FH ;屏蔽奇偶位 RET 奇偶校验的一般处理: 接收到的数据的奇偶标志 P 0 1 0 1 接收的奇偶位 RB8 0 1 发送的奇偶位 TB8 0 1 3.方式2和方式3 数据帧为11位(1个起始位,8个数据位,1位可程控为“1”或“0”的第9位数据(TB8),1位停止位) 波特率: 方式2:2SMOD/64*fOSC 方式3:同方式1 发送:同方式1。 因为是9位UART(异步收发器),第9位数据是TB8,可用作多机通信中的地址或数据的标志位,也可作奇偶校验位。 接收:在接收数据结束以后若(1)RI=0
文档评论(0)