资源描述
第一章 单片机概述 1.2 除了单片机这一名称之外,单片机还可称为(微控制器)和(嵌入式控制器)。 1.3 单片机与普通计算机的不同之处在于其将(微处理器)、(存储器)和(各种输入输出接口)三部分集成于一块芯片上。 4、单片机的发展大致分为哪几个阶段? 答:单片机的发展历史可分为四个阶段: 第一阶段(1974年-1976年):单片机初级阶段。 第二阶段(1976年-1978年):低性能单片机阶段。 第三阶段(1978年-现在):高性能单片机阶段。 第四阶段(1982年-现在):8位单片机巩固发展及16位单片机、32位单片机推出阶段 1.5 单片机根据其基本操作处理的位数可分为哪几种类型? 答:单片机根据其基本操作处理的位数可分为:1位单片机、4位单片机、8位单片机、16位单片机和32位单片机。 1.6 MCS-51系列单片机的基本芯片分别为哪几种?它们的差别是什么? 答:基本芯片为8031、8051、8751。 8031内部包括1个8位cpu、128BRAM,21个特殊功能寄存器(SFR)、4个8位并行I/O口、1个全双工串行口,2个16位定时器/计数器,但片内无程序存储器,需外扩EPROM芯片。 8051是在8031的基础上,片内又集成有4KBROM,作为程序存储器,是1个程序不超过4KB的小系统。 8751是在8031的基础上,增加了4KB的EPROM,它构成了1个程序小于4KB的小系统。用户可以将程序固化在EPROM中,可以反复修改程序。 1.7 MCS-51系列单片机与80C51系列单片机的异同点是什么? 答:共同点为它们的指令系统相互兼容。不同点在于MCS-51是基本型,而80C51采用CMOS工艺,功耗很低,有两种掉电工作方式,一种是CPU停止工作,其它部分仍继续工作;另一种是,除片内RAM继续保持数据外,其它部分都停止工作。 1.8 8051与8751的区别是(C) (A)内部数据存储单元数目的不同 (B)内部数据存储器的类型不同 (C)内部程序存储器的类型不同 (D)内部的寄存器的数目不同 第 1 页www.khdaw.comwww.khdaw.com第 1 页www.khdaw.com1.9 在家用电器中使用单片机应属于微型计算机的(B) (A)辅助设计应用 (B)测量、控制应用 (C)数值计算应用 (D)数据处理应用 1.10 说明单片机主要应用在哪些领域? 答:单片机主要运用领域为:工业自动化;智能仪器仪表;消费类电子产品;通信方面;武器装备;终端及外部设备控制;多机分布式系统。 第二章 MCS-51单片机的硬件结构 2.1 MCS-51单片机的片内都集成了哪些功能部件?各个功能部件的最主要的功能是什么? 答:功能部件如下:微处理器(CPU); 数据存储器(RAM); 程序存储器(ROM/EPROM,8031没有此部件),4个8位并行I/O口(P0口、P1口、P2口、P3口);1个全双工的串行口; 2个16位定时器/计数器;中断系统;21个特殊功能寄存器(SFR)。 各部件功能:CPU(微处理器)包括了运算器和控制器两大部分,还增加了面向控制的处理功能,不仅可处理字节数据,还可以进行位变量的处理;数据存储器(RAM)片内为128B(52系列的为256B),片外最多可外扩64KB。数据存储器来存储单片机运行期间的工作变量、运算的中间结果、数据暂存和缓冲、标志位等;程序存储器(ROM/EPROM)用来存储程序;中断系统具有5个中断源,2级中断优先权;定时器/计数器用作精确的定时,或对外部事件进行计数;串行口可用来进行串行通信,扩展并行I/O口,还可以与多个单片机相连构成多机系统,从而使单片机的功能更强且应用更广;特殊功能寄存器用于CPU对片内各功能部件进行管理、控制、监视。 2.2 说明MCS-51单片机的引脚 EA的作用,该引脚接高电平和接低电平时各有何种功能? 答:当该引脚为高电平时,单片机访问片内程序存储器,但在PC(程序计数器)值超过0FFFH(对于8051、8751)时,即超出片内程序存储器的4KB地址范围时,将自动转向执行外部程序存储器内的程序。 当该引脚为低电平时,单片机则只访问外部程序存储器,不论是否有内部程序存储器。对于8031来说,因其无内部程序存储器,所以该引脚必须接地,这样只能选择外部程序存储器。 2.3 MCS-51的时钟振荡周期和机器周期之间有何关系? 答:每12个时钟周期为1个机器周期。 第 2 页www.khdaw.comwww.khdaw.com第 2 页www.khdaw.com2.4在MCS-51 单片机中,如果采用6 MHZ 晶振,1个机器周期为(2微秒)。 2.5程序存储器的空间里,有5个单元是特殊的,这5个单元对应MCS-51单片机5个中断源的中断入口地址,请写出这些单元的地址以及对应的中断源。 答: 中断源 入口地址 外部中断0 0003H 定时器0(T0) 000BH 外部中断1 0013H 定时器1(T1) 001BH 串行口 0023H 2.6 内部RAM中,位地址为30H的位,该位所在字节的字节地址为(26H)。 2.7 若A中的内容为63H,那么,P标志位的值为(0)。 2.8 判断下列说法是否正确: (A)8031的CPU是由RAM和EPROM所组成。 (错) (B)区分片外程序存储器和片外数据存储器的最可靠的方法是看其位于地址范围的低端还是高端。 (错) (C)在MCS-51中,为使准双向的I/O口工作在输入方式,必须保证它被事先预置为1。 (对) (D)PC可以看成是程序存储器的地址指针。 (对) 2.9 8031单片机复位后,R4所对应的存储单元的地址为(04H),因上电时PSW=(00H)。这时当前的工作寄存器区是(0)组工作寄存器区。 2.10 什么是机器周期?1个机器周期的时序是如何来划分的?如果采用12MHZ晶振,1个机器周期为多长时间? 答:CPU完成一个基本操作所需要的时间称为机器周期。时序划分:一个机器周期包括12个时钟周期,分为6个状态;S1-S6。每个状态又分为2拍;P1和P2。因此,1个机器周期中的12个时钟周期表示为:S1P1、S1P2、S2P1、S2P2、S6P2。如果采用12MHZ晶振,1个机器周期为1s。 2.11判断以下有关PC和DPTR的结论是否正确? (A)DPTR是可以访问的,而PC不能访问。 (错) (B)它们都是16位的寄存器。 (对) (C)它们都具有加1的功能。 (对) 第 3 页www.khdaw.comwww.khdaw.com第 3 页www.khdaw.comkh第 1 页www.khdaw.com(D)DPTR可以分为2个8位寄存器使用,但PC不能。 (对) 12、内部RAM中,哪些单元可作为工作寄存器区,哪些单元可以进行位寻址?写出它们的字节地址。 答:地址为00H-1FH的32个单元是4组通用工作寄存器区,每个区包括8个8位工作寄存器,编号为R0-R7。字节地址为20H-2FH的16个单元可进行128位的位寻址,这些单元构成了1位处理机的存储器空间。位地址范围是00H-7FH。 2.13使用8031单片机时,需将EA引脚接(低)电平,因为其片内无(程序)存储器。 2.14片内RAM低128个单元划分为哪3个主要部分?各部分的主要功能是什么? 答:字节地址为00H-1FH的32个单元是4组通用工作寄存器区,每个区包括8个8位工作寄存器,编号为R0-R7。可以通过改变PSW中的RS1、RS0来切换当前的工作寄存器区,这种功能给软件设计带来极大的方便,特别是在中断嵌套时,为实现工作寄存器现场内容保护提供了方便;字节地址为20H-2FH的16个单元可进行工128位的位寻址,这些单元构成了1位处理机的存储器空间;字节地址为30H-7FH的单元为用户RAM区,只能进行字节寻址。用于作为数据缓冲区以及堆栈区。 2.15 判断下列说法是否正确 (A)程序计数器PC不能为用户编程时直接使用,因为它没有地址。 (对) (B)内部RAM的位寻址区,只能供位寻址使用,而不能供字节寻址使用。 (错) (C)8031共有21个特殊功能寄存器,它们的位都是可用软件设置的,因此,是可以进行位寻址的。 (错) 2.16 PC的值是:(C) (A)当前正在执行指令的前一条指令的地址 (B)当前正在执行指令的地址 (C)当前正在执行指令的下一条指令的地址 (D)控制器中指令寄存器的地址 2.17 通过堆栈操作实现子程序调用,首先就要把(PC)的内容入栈,以进行断点保护。调用返回时,再进行出栈保护,把保护的断点送回到(PC)。 2.18 写出P3口各引脚的第二功能。 答: 口引脚 第二功能定义 P3.0 串行输入口 P3.1 串行输出口 第 4 页www.khdaw.comwww.khdaw.com第 4 页www.khdaw.com内部程序存储器,所以该引脚必须接礘 P3.2 外部中断0 P3.3 外部中断1 P3.4 定时器0外部计数输入 P3.5 定时器1外部计数输入 P3.6 外部数据存储器写选通 P3.7 外部数据存储器读选通 2.19 MCS-51单片机程序存储器的寻址范围是由程序计数器PC的位数所决定的,因为MCS-51的PC是16位的,因此其寻址的范围为(64)KB。 2.20 当MCS-51单片机运行出错或程序陷入死循环时,如何来摆脱困境? 答:可通过复位来解决。 2.21 判断下列说法是否正确? (A)PC是1个不可寻址的特殊功能寄存器 (对) (B)单片机的主频越高,其运算速度越快 (对) (C)在MCS-51单片机中,1个机器周期等于1微秒 (错) (D)特殊功能寄存器SP内装的是栈顶首地址单元的内容 (错) 2.22 如果手中仅有一台示波器,可通过观察哪个引脚的状态,来大致判断MCS-51单片机正在工作? 答:ALE 引脚。 第三章 MCS-51的指令系统 3.1 判断以下指令的正误: (1) MOV 28H,R2 (2) DEC DPTR (3) INC DPTR (4) CLR R0 (5) CPL R5 (6) MOV R0,R1 (7) PUSH DPTR (8) MOV F0,C (9)MOV F0,Acc.3 (10)MOVX A,R1 (11) MOV C,30H (12)RLC R0 答:(3)、(8)、(10)、(11)对,其余错。 3.2 判断下列说法是否正确。 (A)立即寻址方式是被操作的数据本身在指令中,而不是它的地址在指令中。() (B)指令周期是执行一条指令的时间。 () (C)指令中直接给出的操作数称为直接寻址。 (×) 3.3在基址加变址寻址方式中,以(A)作变址寄存器,以(DPTR)或(PC)作基址寄存器 第 5 页www.khdaw.comwww.khdaw.com第 5 页www.khdaw.comwww.khdaw.com第 3 页www.khdaw.comkhd3.4 MCS-51共有哪几种寻址方式?各有什么特点? 答: 共有7种寻址方式。 (1)寄存器寻址方式 操作数在寄存器中,因此指定了寄存器就能得到操作数。 (2)直接寻址方式 指令中操作数直接以单元地址的形式给出,该单元地址中的内容就是操作数。 (3)寄存器间接寻址方式 寄存器中存放的是操作数的地址,即先从寄存器中找到操作数的地址,再按该地址找到操作数。 (4)立即寻址方式 操作数在指令中直接给出,但需在操作数前面加前缀标志“#”。 (5)基址寄存器加变址寄存器间接寻址方式 以DPTR或PC作基址寄存器,以累加器A作为变址寄存器,并以两者内容相加形成的16位地址作为操作数的地址,以达到访问数据表格的目的。 (6)位寻址方式 位寻址指令中可以直接使用位地址。 (7)相对寻址方式 在相对寻址的转移指令中,给出了地址偏移量,以“rel”表示,即把PC的当前值加上偏移量就构成了程序转移的目的地址。 3.5 MCS-51指令按功能可以分为哪几类? 答:MCS-51指令系统按功能分为:数据传送类(28条);算术操作类(24条);逻辑运算类(25条);控制转移类(17条);位操作类(17条)。 3.6 访问SFR,可使用哪些寻址方式? 答:一般采用直接寻址,对于SFR中字节地址能被8整除的SFR可以使用位寻址,对于SFR中的A、B、DPTR寄存器可以采用寄存器寻址。 3.7 指令格式是由(操作码)和(操作数)所组成,也可能仅由(操作码)组成。 3.8 假定累加器A中的内容为30H,执行指令: 1000H:MOVC A,A+PC 后,把程序存储器(1031H)单元的内容送入累加器中 3.9 在MCS-51中,PC和DPTR都用于提供地址,但PC是为访问(程序)存储器提供地址,而DPTR是为访问(数据)存储器提供地址。 3.10 在寄存器间接寻址方式中,其“间接”体现在指令中寄存器的内容不是操作数,而是操作数的(地址)。 3.11 该程序段的功能是什么? PUSH A 第 6 页www.khdaw.comwww.khdaw.com第 6 页www.khdaw.com >PUSH B POP A POP B 答:功能是A、B内容互换 3.12 已知程序执行前有A=02H,SP=52H,(51H)=FFH,(52H)=FFH。下列程序执行后: POP DPH POP DPL MOV DPTR,#4000H RL A MOV B,A MOVC A,A+DPTR PUSH A MOV A,B INC A MOVC A,A+DPTR PUSH A RET ORG 4000H DB 10H,80H,30H,50H,30H,50H A=50H SP=50H (51H)=30H (52H)=50H PC=5030H 3.13 写出完成如下要求的指令,但是不能改变未涉及位的内容。 (A)把Acc.3,Acc.4,Acc.5和Acc.6清0。 解:ANL A,#87H (B)把累加器A的中间4位清0。 解:ANL A,#C3H (C)使Acc.2和Acc.3置1。 解:ORL A,#0CH 3.14 假定A=83H,(R0)=17H,(17H)=34H,执行以下指令: ANL A,#17H ORL 17H,A XRL A,R0 CPL A 后,A的内容为(0CBH) 3.15 假设A=55H,R3=0AAH,在执行指令后ANL A,R3后, A=(00H), R3=(0AAH) 3.16 如果DPTR=507BH,SP=32H,(30H)=50H,(31H)=5FH,(32H)=3CH,则执行下列指令后: POP DPH 第 7 页www.khdaw.comwww.khdaw.com第 7 页www.khdaw.comF0,Acc.3 (10)MOVX A,R1 (11) MOV C,30H >POP DPL POP SP 则:DPH=(3CH) DPL=(5FH) SP=(4FH) 3.17 假定SP=60H,A=30H,B=70H,执行下列指令: PUSH A PUSH B 后,SP的内容为(62H),61H单元的内容为(30H),62H单元的内容为(70H)。 3.18借助本书中的指令表:表3-3表3-7对如下的指令代码(16进制)进行手工反汇编。 FF C0 E0 E5 F0 F0 解:查表可知 FF MOV R7,A C0 E0 PUSH 0E0H E5 F0 MOV A,0F0H F0 MOVX DPTR, A 第四章 MCS-51汇编语言程序设计 4.1 用于程序设计的语言分为哪几种?它们各有什么特点? 答:用于程序设计的语言基本上分为三种:机器语言、汇编语言和高级语言。 (1)机器语言:在单片机中,用二进制代码表示的指令、数字和符号简称为机器语言,直接用机器语言编写的程序称为机器语言程序。用机器语言编写的程序,不易看懂,不便于记忆,且容易出错。(2)汇编语言具有如下特点:A、汇编语言是面向机器的语言,程序设计人员必须对MCS-51单片机的硬件有相当深入的了解。B、助记符指令和机器指令一一对应,所以用汇编语言编写的程序效率高,占用的存储空间小,运行速度快,因此用汇编语言能编写出最优化的程序。C、汇编语言程序能直接管理和控制硬件设备(功能部件),它能处理中断,也能直接访问存储器及I/O接口电路。(3)高级语言:高级语言不受具体机器的限制,都是参照一些数学语言而设计的,使用了许多数学公式和数学计算上的习惯用语,非常擅长于科学计算。计算机不能直接识别和执行高级语言,需要将其“翻译”成机器语言才能识别和执行。 4.3 解释下列术语:“手工汇编”、“机器汇编”、“交叉汇编”以及“反汇编”。 答、手工汇编:通常把人工查表翻译指令的方法称为“手工汇编”。机器汇编:机器汇编实际上是通过执行汇编程序来对源程序进行汇编的。交叉汇编:由于使用微型计算机完成了汇第 8 页www.khdaw.comwww.khdaw.com第 8 页www.khdaw.com能定义 P3.0 编,而汇编后得到的机器代码却是在另一台计算机(这里是单片机)上运行,称这种机器汇编为“交叉汇编”。反汇编:有时,在分析现成产品的ROM/EPROM中的程序时,要将二进制数的机器代码语言程序翻译成汇编语言源程序,该过程称为反汇编。 4.4 下列程序段经汇编后,从1000H开始的各有关存储单元的内容将是什么? ORG 1000H TAB1 EQU 1234H TAB2 EQU 3000H DB “MAIN” DW TAB1,TAB2,70H 答:(1000H)=M(1001H)=A(1002H)=I(1003H)=N(1004H)=34H (1005H)=12H (1006H)=00H (1007H)=30H (1008H)=70H (1009H)=00H 4.5 设计子程序时注意哪些问题? 答:在编写子程序时应注意以下问题: (1)子程序的第一条指令的地址称为子程序的入口地址。该指令前必须有标号。 (2)主程序调用子程序,是通过主程序或调用程序中的调用指令来实现的。 (3)注意设置堆栈指针和现场保护,因调用子程序时,要把断点压入堆栈,子程序返回执行RET指令时再把断点弹出堆栈送入PC指针,因此子程序结构中必须用堆栈。 (4)子程序返回主程序时,最后一条指令必须是RET指令,它的功能是在执行调用指令时,把自动压入堆栈中的断点地址弹出送入PC指针中,从而实现子程序返回主程序断点处继续执行主程序。 (5)子程序可以嵌套,即主程序可以调用子程序,子程序又可以调用另外的子程序,通常情况下可允许嵌套8层。 (6)在子程序调用时,还要注意参数传递的问题。 4.6 试编写1个程序,将内部RAM中45H单元的高4位清0,低4位置1。 解: MOV A,45H ANL A,#0FH ORL A,#0FH 4.7 已知程序执行前有A=02H,SP=42H,(41H)=FFH,(42H)=FFH。下述程序执行后, POP DPH POP DPL MOV DPTR,#3000H RL A MOV B,A MOVC A,A+DPTR 第 9 页www.khdaw.comwww.khdaw.com第 9 页www.khdaw.com PUSH A MOV A,B INC A MOVC A,A+DPTR PUSH A ORG 3000H DB 10H,80H,30H,80H,50H,80H A=80H SP=40H (41H)=50H (42H)=80H PC=8050H。 4.8 计算下面子程序中指令的偏移量和程序执行的时间(晶振频率为12MHZ)。 7B0F MOV R3,#15 ;1个机器周期 7CFF DL1: MOV R4,#255 ;1个机器周期 8B90 DL2: MOV P1,R3 ;2个机器周期 DC DJNZ R4,DL2 ;2个机器周期 DB DJNZ R3,DL ;2个机器周期 22 RET ;2个机器周期 解:程序执行的时间为15.346s。 4.9 假定A=83H,(R0)=17H,(17H)=34H,执行以下指令: ANL A,#17H ORL 17H,A XRL A,R0 CPL A 后,A的内容为(0CBH) 4.10 试编写程序,查找在内部RAM的30H50H单元中是否有0AAH这一数据。若有,则将51H单元置为“01H”;若未找到,则将51H单元置为“00H”。 ORG 0000H MOV R0,#30H MOV R2,#21H LOOP: MOV A,R0 CJNE A,#0AAH,NOT MOV 51H,#01H SJMP DEND NOT: INC R0 DJNZ R2,LOOP MOV 51H,#00H DEND: SJMP DEND 4.11 试编写程序,查找在内部RAM的20H40H单元中出现“00H”这一数据的次数。并将查找到的结果存入41H单元。 ORG 0000H MOV R0,#20H MOV R2,#21H 第 10 页www.khdaw.comwww.khdaw.com第 10 页www.khdaw.com啊胺椿惚唷薄?答、手工汇编:通常把人工查表翻译? MOV 41H,#00H LOOP: MOV A,R0 CJNE A,#00H,NOTE INC 41H NOTE: INC R0 DJNZ R2,LOOP END 4.12 若SP=60H,标号LABEL所在的地址为3456H。LCALL指令的地址为2000H,执行如下指令: 2000H LCALL LABEL后,堆栈指针SP和堆栈内容发生了什么变化?PC的值等于什么?如果将指令LCALL直接换成ACLAA是否可以?如果换成ACALL指令,可调用的地址范围是什么? 答:堆栈指针SP的内容为62H,堆栈内容(61H)=03H,(62H)=20H;PC值为3456H,不能将LCALL换为ACALL,因为LCALL可调用64KB范围内的子程序,而ACALL所调用的子程序地址必须与ACALL指令下一条指令的第一个字节在同一个2KB区内(即16位地址中的高5位地址相同。如果换为ACALL,可调用的地址范围为2002H-27FFH。 第五章 MCS-51的中断系统 5.1 什么是中断系统? 答:能够实现中断处理功能的部件称为中断系统。 5.3 什么是中断源?MCS-51有哪些中断源?各有什么特点? 答:产生中断的请求源称为中断源。MCS-51中断系统共有5个中断请求源:(1)外部中断请求0,中断请求标志为IE0。(2)外部中断请求1,中断请求标志为IE1。(3)定时器/计数器T0溢出中断请求,中断请求标志为TF0。(4)定时器/计数器T1溢出中断请求,中断请求标志为TF1。(5)串行口中断请求,中断请求标志为TI或RI。特点:2个外部中断源,3个内部中断源。 5.4外部中断1所对应的中断入口地址为(0013H)。 5.5下列说法错误的是:(A,B,C) (A)各中断源发出的中断请求信号,都会标记在MCS-51系统的IE寄存器中。 (B)各中断源发出的中断请求信号,都会标记在MCS-51系统的TMOD寄存器中。 (C)各中断源发出的中断请求信号,都会标记在MCS-51系统的IP寄存器中。 (D)各中断源发出的中断请求信号,都会标记在MCS-51系统的TCON和SCON寄存器中。 第 11 页www.khdaw.comwww.khdaw.com第 11 页www.khdaw.com?8 页www.khdaw.com能定义 5.6 MCS-51单片机响应外部中断的典型时间是多少?在哪些情况下,CPU将推迟对外部中断请求的响应? 答:典型时间是3-8个机器周期。在下列三种情况下,CPU将推迟对外部中断请求的响应: (1)CPU正在处理同级的或更高级优先级的中断 (2)所查询的机器周期不是当前所正在执行指令的最后一个机器周期 (3)正在执行的指令是RETI或是访问IE或IP的指令。 5.7 中断查询确认后,在下列各种8031单片机运行情况中,能立即进行响应的是(D) (A)当前正在进行高优先级中断处理 (B)当前正在执行RETI指令 (C)当前指令是DIV指令,且正处于取指令的机器周期 (D)当前指令是MOV A,R3 5.8 8031单片机响应中断后,产生长调用指令LCALL,执行指令的过程包括:首先把(PC)的内容压入堆栈,以进行断点保护,然后把长调用指令的16位地址送(PC),使程序执行转向(响应中断请求的中断入口的地址)中的中断地址区。 5.9 编写出外部中断1为跳沿触发的中断初始化程序。 ORG 0000H AJMP MAIN ORG 0013H AJMP PINT1 ORG 0100H MAIN: SETB IT1 SETB EX1 SETB EA HERE: AJMP HERE PINT1: RETI END 5.10 在MCS-51中,需要外加电路实现中断撤除的是(D) (A)定时中断 (B)脉冲方式的外部中断 (C)外部串行中断 (D)电平方式的外部中断 5.11 MCS-51有哪几种扩展外部中断源的方法? 答:扩展外部中断源的方法有:定时器/计数器作为外部中断源的使用方法;中断和查询结第 12 页www.khdaw.comwww.khdaw.com第 12 页www.khdaw.com R2,#21H 第 10 页www.khdaw.comwww.kh0合的方法。 5.12 下列说法正确的是(C D) (A)同一级别的中断请求按时间的先后顺序顺序响应。 (B)同一时间同一级别的多中断请求,将形成阻塞,系统无法响应。 (C)低优先级中断请求不能中断高优先级中断请求,但是高优先级中断请求能中断低优先级中断请求 (D)同级中断不能嵌套。 5.13 中断服务子程序返回指令RETI和普通子程序返回指令RET有什么区别? 答:两者的区别在于,RETI清除了中断响应时,被置1的MCS-51内部中断优先级寄存器的优先级状态。 5.14 某系统有3个外部中断源1、2、3,当某一中断源变为低电平时,便要求CPU进行处理,它们的优先处理次序由高到低依次为3、2、1,中断处理程序的入口地址分别为1000H,1100H,1200H。试编写主程序及中断服务程序(转至相应的中断处理程序的入口即可)。 ORG 0000H AJMP MAIN ORG 0003H LJMP PINT0 ORG 0100H MAIN: SETB IT0 SETB EX0 SETB EA HERE: SJMP HERE PINT0: PUSH PSW PUSH A JNB P1.3,IR3 JNB P1.2,IR2 JNB P1.1,IR1 PINTIR: POP A POP PSW RETI IR3: LJMP IR3INT IR2: LJMP IR2INT IR1: LJMP IR1INT ORG 1000H IR3INT: LJMP PINTIR ORG 1100H IR2INT: LJMP PINTIR ORG 1200H 第 13 页www.khdaw.comwww.khdaw.com第 13 页www.khdaw.com髦卸显捶龅闹卸锨肭笮藕牛蓟岜昙窃贛CS-51?IR1INT: LJMP PINTIR END 第六章 MCS-51的定时器/计数器 6.1 如果采用的晶振的频率为3MHZ,定时器/计数器工作在方式0、1、2下,其最大的定时时间各为多少? 答:方式0 213*4us=32.768 方式1 216*4us=262.144 方式2 28*4us=1.024 6.2 定时器/计数器用作定时器时,其计数脉冲由谁提供?定时时间与哪些因素有关? 答:定时器/计数器被选定为定时器工作模式时,计数输入信号是内部时钟脉冲,每个机器周期产生1个脉冲使计数器增1,因此,定时器/计数器的输入脉冲的周期与机器周期一样,为时钟振荡频率的1/2。 6.3 定时器/计数器作计数器使用时,对外界计数频率有何限制? 答:定时器/计数器用作计数器时,计数脉冲来自相应的外部输入引脚T0或T1。对外界计数频率要求为其最高频率为系统振荡频率的1/24。 6.4 采用定时器/计数器T0对外部脉冲进行计数,每计数100个脉冲后,T0转为定时工作方式。定时1ms后,又转为计数方式,如此循环不止。假定MCS-51单片机的晶体震荡器的频率为6MHZ,请使用方式1实现,要求编写出程序。 ORG 0000H AJMP MAIN ORG 000BH LJMP PT0J ORG 0100H MAIN: MOV TMOD,#05H;00000001 MOV TH0,#0FFH;X=65436 MOV TL0,#9CH CLR F0 SETB TR0 SETB ET0 SETB EA HERE: AJMP HERE PT0J: JB F0,PT0D MOV TMOD,#01H;00000001 MOV TH0,#0FEH;X=65036 MOV TL0,#0CH SETB F0 第 14 页www.khdaw.comwww.khdaw.com第 14 页www.khdaw.com1系统的TMOD寄存器中。 (C)各中断源发出档 RETI PT0D: CLR F0 MOV TMOD,#05H MOV TH0,#0FFH MOV TL0,#9CH RETI END 6.5 定时器/计数器的工作方式2有什么特点?适用于哪些应用场合? 答:工作方式2为自动恢复初值的(初值自动装入)8位定时器/计数器,TLX作为常数缓冲器,当TLX计数溢出时,在置1溢出标志TFX的同时,还自动的将THX中的初值送至TLX,使TLX从初值开始重新计数(X=0,1)。 6.6 编写程序,要求使用T0,采用方式2定时,在P1。0输出周期为400微秒,占空比为1:10的矩形脉冲。 ORG 0000H AJMP MAIN ORG 000BH AJMP PT0 ORG 0100H MAIN: MOV R2,#00H MOV TMOD,#02H MOV TH0,#0ECH;X=236 MOV TL0,#0ECH SETB P1.0 SETB TR0 SETB ET0 SETB EA HERE: SJMP HERE PT0: CJNE R2,#09H,PT01 SETB P1.0 MOV R2,#00H RETI PT01: CLR P1.0 INC R2 RETI END 6.7 一个定时器的定时时间有限,如何实现两个定时器的串行定时,来实现较长时间的定时? 答:第一个定时溢出启动第二个定时计数,实行串行定时 6.8 当定时器T0用于方式3时,应该如何控制定时器T1的启动和关闭? 答:控制信号C/T和M1 M0。 第 15 页www.khdaw.comwww.khdaw.com第 15 页www.khdaw.com TH0,#0FEH;X=65036 MOV TL0,#0C6.9 定时器/计数器测量某正脉冲的宽度,采用何种方式可得到最大量程?若时钟频率为6MHZ,求允许测量的最大脉冲宽度是多少? 答:上升沿从0开始计数,计满回到下降沿。最大脉冲宽度Tw=131.072us 6.10编写一段程序,功能要求为:当P1.0引脚的电平正跳变时,对P1.1的输入脉冲进行计数;当P1.2引脚的电平负跳变时,停止计数,并将计数值写入R0、R1(高位存R1,低位存R0)。 ORG 0000H LJMP MAIN MAIN: ORG 0100H MOV R0,#00H MOV R1,#00H MOV TL0,#00H MOV TH0,#00H LOOP1: JB P1.0,LOOP1 LOOP2: JNB P1.0,LOOP2 SETB TR0 LOOP3: JNB P1.2,LOOP3 LOOP4: JB P1.2,LOOP4 CLR TR0 MOV R1,TH0 MOV R0,TL0 END 6.11 THX与TLX(X=0,1)是普通寄存器还是计数器?其内容可以随时用指令更改吗?更改后的新值是立即刷新还是等当前计数器计满之后才能更新? 答:THX与TLX(X=0,1)是计数器,能用指令更改;能立即刷新。 6.12 判断下列说法是否正确? (1)特殊功能寄存器SCON,与定时器/计数器的控制无关。 () (2)特殊功能寄存器TCON,与定时器/计数器的控制无关 (×) (3)特殊功能寄存器IE,与定时器/计数器的控制无关 (×) (4)特殊功能寄存器TMOD,与定时器/计数器的控制无关 (×) 第 16 页www.khdaw.comwww.khdaw.com第 16 页www.khdaw.com#0FEH;X=65036 MOV TL0,#0C第七章 MCS-51的串行口 7.3 帧格式为1个起始位,8个数据位和1个停止位的异步串行通信方式是方式(1)。 7.4 串行口有几种工作方式?有几种帧格式?各种工作方式的波特率如何确定? 串行口有四种工作方式:方式0、方式1、方式2、方式3有三种帧格式: 方式0帧格式 D1 D2 D3 D4 D5 D6 D7 D0 方式0波特率=Fosc/12 方式1帧格式 方式1波特率=2T1/32 SMOD起始位 D0 停止D7 D6 D5 D4 D3 D2 D1 方式2和方式3帧格式 D1 D2 D3 D4 D5 D6 D7 D0 停止起始位 D8 方式2的波特率=2*Fosc/64 MOD方式3的波特率=2 *T1/32 MOD7.5 假定串行口发送的字符格式为1个起始位,8个数据位,1个奇校验位,1个停止位,请画出传送字符“A”的帧格式? 0 0 0 0 0 1 0 1 0 1 1 7.6 判断下列说法是否正确 (A)串行口通行的第9数据位的功能可由用户定义。(T) (B)发送数据的第9数据位的内容在SCON寄存器的TB8位中预先准备好的。(T) (C)串行通讯帧发送时,指令把TB8位的状态送入发送SBUF中。(F) (D)串行通讯接收到的第9位数据送SCON寄存器的RB8中保存。(T) (E)串行口方式1的波特率是口变的,通过定时器/计数器T1的溢出率设定。(T) 7.7通过串行口发送或接收数据时,在程序中应使用: C (A)MOVC指令 (B)MOVX指令(C)MOV指令 (D)XCHD指令 第 17 页www.khdaw.comwww.khdaw.com第 17 页www.khdaw.com (×) (4)特殊功能寄存器TM7.8 为什么定时器/计数器T1用作串行口波特率发生器时,常采用方式2?若已知时钟频率,通讯波特率,如何计算器初值? 答:定时器T1工作方式2是一种自动重装方式,无需在中断服务程序中送数,没有由于中断引起的误差。定时器工作在方式2是一种既省事又精确的产生串行口波特率的方法。设定时器T1方式2的初值为X,则有: 定时器T1的溢出率=计数速率/(256-X)=Fosc/(256-X)*12 则方式2的波特率=2 *F/(256-X)*12*32 MODosc故计数器初值为X=2 *F/12*32*波特率 MODosc7.9 串行口工作方式1的波特率是:C (A)固定的,为Fosc/32。 (B)固定的,为Fosc/16。 (C)可变得,通过定时器/计数器T1的溢出率设定。 (D)固定的,为Fosc/64。 7.10 在串行通讯中,收发双方对波特率的设定应该是的。 7.11 若晶体振荡器为11.0592MHZ,串行口工作于方式1,波特率为4800b/s,写出用T1作为波特率发生器的方式控制字和计数初值。 方式
展开阅读全文