汇编语言串口通信接收发送的程序题.doc_第1页
汇编语言串口通信接收发送的程序题.doc_第2页
汇编语言串口通信接收发送的程序题.doc_第3页
汇编语言串口通信接收发送的程序题.doc_第4页
汇编语言串口通信接收发送的程序题.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

例2 利用定时/计数器T0的方式1,产生10ms的定时,并使P1.0引脚上输出周期为20ms的方波,采用中断方式,设系统时钟频率为12 MHz。解:1、计算计数初值X:由于晶振为12 MHz,所以机器周期Tcy为1 ms。所以:Nt/ Tcy 1010-3 / 110-610000X655361000055536D8F0H即应将D8H送入TH0中,F0H送入TL0中 2、求T0的方式控制字TMOD: M1M0=01,GATE=0,C/T=0,可取方式控制字为01H;ORG 0000H LJMP MAIN ;跳转到主程序 ORG 000BH ;T0的中断入口地址 LJMP DVT0 ;转向中断服务程序 ORG 0100H MAIN:MOV TMOD,#01H ;置T0工作于方式1 MOV TH0,#0D8H ;装入计数初值 MOV TL0,#0F0H SETB ET0 ;T0开中断 SETB EA ;CPU开中断 SETB TR0 ;启动T0 SJMP $ ;等待中断 DVT0:CPL P1.0 ;P1.0取反输出 MOV TH0,#0D8H ;重新装入计数值 MOV TL0,#0F0H RETI ;中断返回 END 2、串行口方式1的发送和接收例7-4:89C51串行口按双工方式收发ASCII字符,最高位用来作奇偶校验位,采用奇校验方式,要求传送的波特率为1200b/s。编写有关的通信程序。解:7位ASCII码加1位奇校验共8位数据,故可采用串行口方式1。 89C51单片机的奇偶校验位P是当累加器A中1的数目为奇数时,P=1。如果直接把P的值放入ASCII码的最高位,恰好成了偶校验,与要求不符。因此,要把P的值取反以后放入ASCII码最高位,才是要求的奇校验。 2、串行口方式1的发送和接收 双工通信要求收、发能同时进行。收、发操作主要是在串行接口进行,CPU只是把数据从接收缓冲器读出和把数据写入发送缓冲器。数据传送用中断方式进行,响应中断以后,通过检测是RI置位还是TI置位来决定CPU是进行发送操作还是接收操作。 发送和接收都通过调用子程序来完成,设发送数据区的首地址为20H,接收数据区的首地址为40H,fosc为6MHz,通过查波特率初值(表7-2)可知定时器的初装值为F3H。定时器T1采用工作模式2,可以避免计数溢出后用软件重装定时初值的工作。 2、串行口方式1的发送和接收主程序 MOV TMOD ,#20H ;定时器1设为模式2 MOV TL1 , #0F3H ;定时器初值 MOV TH1 ,#0F3H ;8位重装值 SETB TR1 ;启动定时器1 MOV SCON ,#50H ;设置为方式1, ;REN=1 MOV R0 ,#20H ;发送数据区首址 MOV R1 ,#40H ;接收数据取首址 ACALL SOUT ;先输出一个字符 SETB ES SETB EA SJMP $ ;等待中断 2、串行口方式1的发送和接收发送子程序 SOUT: CLR TI MOV A , R0 ;取发送数据到A MOV C ,P ;奇偶标识赋予C CPL C ;奇校验 MOV ACC.7, C INC R0 ;修改发送数据指针 MOV SBUF ,A ;发送ASCII码 RET ;返回 2、串行口方式1的发送和接收 例7-7:利用串行口和堆栈技术发送字符串常量。 上面两个例子中,发送和接收的都是一些变量数据,且存放在内部RAM单元中。现说明如何利用堆栈技术发送存放在程序存储器内的字符串常量。 下面的例子中,这些字符串是发送给CRT终端的,以回车符(CR)和换行符(LF)开始,以换码符(ESC)为结尾。下面是程序片断: 2、串行口方式1的发送和接收CR EQU 0DH ;ASCII回车符LF EQU 0AH ;ASCII换行符ESC EQU 1BH ;ASCII换码符MOV TMOD ,#20H ;设置定时器T1为模式2MOV TL1 ,#0FDH ;设波特率位9600b/s ;(fosc=11.059MHz)MOV TH1 ,#0FDH SETB TR1 ;启动T1运行MOV SCON ,#01000000B ;设置串行口方式1ACALL XSTRINGDB CR ,LFDB NU&BIAA ;字符串常量DB ESCMOV B, #01H 3、串行口方式2、方式3的发送和接收 串行口方式 2与方式 3基本一样(只是波特率设置不同),接收发送 11位信息:开始为l位起始位(0),中间8位数据位,数据位之后为1位程控位(由用户置SCON的TB8决定),最后是1位停止位(1)。只比方式l多了一位程控位。 3、串行口方式2、方式3的发送和接收例7-8:用第9个数据位作奇偶校验位,编制串行口方式2的发送程序。 解:设计一个发送程序,将片内RAM 50H5FH中的数据串行发送;串口设定为方式2,TB8作奇偶校验位。在数据写入发送缓冲器之前,先将数据的奇偶位P写入TB8,这时,第9位数据作奇偶校验用。程序清单如下:TRT: MOV SCON ,#80H ;方式2设定 MOV PCON ,#80H ;取波特率为fosc/32 MOV R7 ,#10H ;数据长度10HR7LOOP: MOV A ,R0 ;取数据A MOV C ,PSW.0 ;PTB8 MOV TB8 ,C MOV SBUF ,A ;数据SBUF,启动发送WAIT: JBC TI ,CONT ;判断发送中断标志 SJMP WAITCONT: INC R0 DJNZ R7 ,LOOP RET 3、串行口方式2、方式3的发送和接收例7-9 编制一个串行口方式2接收程序,并核对奇偶校验位。 在方式2、方式3的发送过程中,将数据和附加在TB8中的奇偶位一块发向对方。因此,作为接收的一方应设法取出该奇偶位进行核对,相应的接收程序段为:RRR: MOV SCON ,#90H ;选方式2,并允许接收(REN=1)LOOP: JBC RI ,RECEIV ;等待接收数据并清RI SJMP LOOPRECEIV: MOV A ,SBUF ;将接收到的字符取出后,送到ACC。;传送指令影响PSW, 产生接收端的奇偶值 JB PSW.0 ,ONE ; P=1, 转判RB8 JB RB8 ,ERR ; P=0, 判RB8 SJMP RIGHT; P=0, RB8=0接收正确ONE: JNB RB8 ,ERR; P=1, RB8=0转错误处理RIGHT: ; P=1, RB8=1接收正确 ERR: ;接收有错 3、串行口方式2、方式3的发送和接收例7-10:编制一个发送程序,将片内RAM中50H5FH的数据串行发送。串行口设定为工作方式2,TB8作奇偶校验位。 解:在数据写入发送SBUF之前,先将数据的奇偶标志P写入TB8,此时,第9位数据便可作奇偶校验用。可采用查询和中断两种方式发送。(1)采用查询方式的程序段 ORG 0000H AJMP MAIN ;上电,转向主程序 ORG 0100H ;主程序MAIN: MOV SCON ,#80H ;设工作方式2 MOV PCON ,#80H ;取波特率为fosc/32 MOV R0 ,#50H ;首址50H送R0 MOV R7 ,#10H ;数值长度送R7LOOP: MOV A ,R0 ;取数据 MOV C ,PSW.0 ;PC MOV TB8 ,C ;奇偶标志送TB8 MOV SBUF ,A ;发送数据WAIT: JBC TI ,CONT AJMP WAIT ;等待中断标志TI=1CONT: INC R0 DJNZ R7 ,LOOP ;数值尚未发送完, 继续发送下一个数据 SJMP $ END(2)采用中断方式的程序段 ORG 0000H AJMP MAIN ;上电,转向主程序 ORG 0023H ;串行口的中断入口地址 AJMP SERVE ;转向中断服务程序 ORG 0100H ;主程序MAIN: MOV SCON ,#80H MOV PCON ,#80H MOV R0 ,#50H MOV R7 ,#0FH SETB ES ;允许串行口中断 SETB EA ;CPU允许中断 MOV A , R0 MOV C , PSW.0 ;PC MOV TB8 ,C MOV SBUF ,A ;发送第一个数据 SJMP $ 3、串行口方式2、方式3的发送和接收例7-11:编制一个接收程序,将接收的16B数据送入片内RAM的50H5FH单元中。设串行口工作于方式 3,波特率为2400b/s。 解:方式3为11位异步通信方式,波特率取决于TI的溢出率。查 表72可知,当晶振为11.059MHz,波特率为2400b/s时,可取SMOD=0。源程序如下:MAIN: MOV TMOD ,#20H ;设TI工作于模式2 MOV TH1 ,#0F4H ;赋循环计数初值 MOV TL1 ,#0F4H ;赋计数值 SETB TR1 ;启动定时器TI MOV R0 ,#50H ;首地址送R0 MOV R7 ,#10H ;数据长度送R7 MOV SCON ,#0D0H ;串行口工作于方式3,可接收 MOV PCON ,#00H ;设SMOD=0WAIT: JBC RI ,PR1 ;接收完一帧数据,清RI,转PR1 SJMP WAIT ;否则等待PR1: MOV A ,SBUF ;读入数据 JNB P ,PNP ;P=0,转PNP JNB RB8 ,PER ;P=1,RB8=0,转出错处理 SJMP RIGHTPNP: JB RB8 ,PER ;P=0,RB8=1,转出错处理RIGHT: MOV R0 ,A ;数据送内存 INC R0 ;修改地址指针 DJNZ R7 ,WAIT ;数据未接收完,继续接收下一个数据 CLR PSW.5 ;置正确接收完毕标志F0=0 RETPER: SETB PSW.5 RET1MCS51的中断系统有几个中断源?几个中断优先级?中断优先级是如何控制的?在出现同级中断申请时,CPU按什么顺序响应(按由高级到低级的顺序写出各个中断源)?各个中断源的入口地址是多少?答:MCS51单片机有5个中断源,2个中断优先级,中断优先级由特殊功能寄存器IP控制,在出现同级中断申请时,CPU按如下顺序响应各个中断源的请求:INT0、T0、INT1、T1、串口,各个中断源的入口地址分别是0003H、000BH、0013H、001BH、0023H。2已知单片机系统晶振频率为6MHz,若要求定时值为10ms时,定时器T0工作在方式1时,定时器T0对应的初值是多少?TMOD的值是多少?TH0=?TL0=?(写出步骤)答:定时值为10ms时,定时器T0工作在方式1时,定时器T0对应的初值是1388HTMOD的值是00000001B,TH0=13H;TL0=88H。3MCS51系列单片机的内部资源有哪些?说出8031、8051和8751的区别。答:MCS51系列单片机上有1个8位CPU、128B的RAM、21个SFR、4个并行口、1个串行口、2个定时计数器和中断系统等资源。8031、8051和8751的区别是8031内无ROM;8051内有4KB的掩膜ROM;8751内有4KB的EPROM。简述行列式非编码键盘的工作原理。答:行线通过电阻接+5V。没有键闭合时,行线呈高电平; 某键闭合时,该键对应的行线和列线被短路。此时行线电平由列线电位所决定。在某一时刻只让一条列线处于低电平,其他列线处于高电平。当这一列邮件按下时,该键所在的行电平将有高电平变成低电平,可判断该列相应的行是否有键按下。同理,逐列扫描各列,便可识别所有按键的动作。1. 简述MCS-51系列单片机I/O口的功能。答:n 对单片机的控制,其实就是对I/O口的控制,无论单片机对外界进行何种控制,亦或接受外部的控制,都是通过I/O口进行的。n MCS-51系列单片机四个I/O口除了基本的输入输出功能之外,P0口第二功能可以作为低8位地址总线/数据总线,P2口可以作为高8位地址总线。P3口每一个引脚都具有第二功能。n 简述子程序调用和执行中断服务程序的异同点。(8分)n 相同点:均能中断主程序执行本程序,然后再返回断点地址继续执行主程序。 n 不同点:n (1)中断服务程序入口地址是固定的,子程序调用入口地址是用户自己设定的。n (2)中断服务子程序返回指令除具有子程序返回指令所具有的全部功能之外,还有清除中断响应时被置位的优先级状态、开放较低级中断和恢复中断逻辑等功能。 n (3)中断服务子程序是在满足中断申请的条件下,随机发生的;而子程序调用是用户主程序事先安排好的。5. 简述MCS-51系列单片机最小系统的组成。答:对51系列单片机来说,最小系统一般应该包括:单片机、电源、晶振电路、复位电路。1简述89C51单片机的4个I/O口在使用上有哪些分工和特点?四个I/O端口都是准双向端口。P0口作为一般I/O端口使用or作为地址(低8位)/数据总线使用。P1作为通用I/O端口。通常情况下,P2端口是作为高8位地址线使用P3端口可作为通用I/O端口,还有第二功能。289C51单片机的RAM分为几部分?各有什么特点和功能?片内RAM(256个单元):00HFFH;片外RAM(可扩展至64KB):0000HFFFFH片内RAM又可分为两个部分,低128个单元(00H7FH)和高128个单元(80HFFH)。其中低128个单元作为数据存储器使用。高128个单元被特殊功能寄存器SFR占用。片内和片外RAM通过不同的寻址方式来区别。MOV , MOVX低128单元包括:用户RAM区(30-7FH),位寻址区(20-2FH),工作寄存器区(18H-1FH)常把堆栈设在用户RAM区。3简述时钟周期、机器周期、指令周期的概念及三者之间的关系。时钟周期也称为振荡周期,(时钟周期就是单片机外接晶振的倒数,例如12M的晶振,它的时间周期就是1/12 us),在一个时钟周期内,CPU仅完成一个最基本的动作。在8051单片机中把一个时钟周期定义为一个节拍(用P表示),二个节拍定义为一个状态周期(用S表示)。 机器周期 在计算机中,为了便于管理,常把一条指令的执行过程划分为若干个阶段,每一阶段完成一项工作。完成一个基本操作所需要的时间称为机器周期。8051系列单片机的一个机器周期同6个S周期(状态周期)组成。一个机器周期=6个状态周期=12个时钟周期。 指令周期 指令周期是执行一条指令所需要的时间,一般由若干个机器周期组成。指令不同,所需的机器周期数也不同。通常含一个机器周期的指令称为单周期指令,包含两个机器周期的指令称为双周期指令。4MCS-51 单片机堆栈有何特点?若SP=60H,PC=2000H,标号LABEL所在的地址为3000H,问执行长调用指令LCALL LABEL后,堆栈指针和堆栈的内容发生什么变化?PC的值等于什么?堆栈先进后出,后进先出。 执行长调指令后,SP=62H,PC=3000H,(61H)=03H,(62)=20H589C51共有哪些中断源?有哪些特殊功能寄存器对各个中断源进行控制?一共有5个中断源。两个外部中断INT0,INT1,两个定时计数中断T0、T1,串行口TCON(定时控制器寄存器),SCON(串行口控制寄存器)IE( 中断允许寄存器),IP(中断优先级寄存器 )TCOM44、什么是保护现场,什么是恢复现场?保护现场:当CPU响应中断程序时,硬件会自动把断点地址(16位程序计数器的值)压入堆栈之外,用户还须注意保护有关工作寄存器、累加器、标志位等信息;恢复现场:在完成中断服务程序后,恢复原工作寄存器、累加器、标志位等的内容。简述89C51串口通信的四种方式及其特点。方式0:同步移位寄存器输入/输出方式,常用于扩展I/O口。波特率固定为振荡频率

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论