单片微型计算机原理和应用答案,单片微型计算机原理与应用答案.doc

253b171540df25e1b84436cbe50dfc72.gif单片微型计算机原理与应用答案.doc

习题 22.1 MCS-51 单片机内部包含哪些主要逻辑功能部件答微处理器(CPU) 、数据存储器(RAM ) 、程序存储器( ROM/EPROM) 、特殊功能寄存器(SFR) 、并行 I/O 口、串行通信口、定时器/计数器及中断系统。2.2 说明程序计数器 PC 和堆栈指针 SP 的作用。复位后 PC 和 SP 各为何值答程序计数器 PC 中存放将要执行的指令地址,PC 有自动加 1 功能,以实现程序的顺序执行。它是 SFR 中唯一隐含地址的,因此,用户无法对它进行读写。但在执行转移、调用、返回等指令时能自动改变其内容,以实现改变程序的执行顺序。程序计数器 PC 中内容的变化决定程序的流程,在执行程序的工作过程中,由 PC 输出将要执行的指令的程序存储器地址,CPU 读取该地址单元中存储的指令并进行指令译码等操作,PC 则自动指向下一条将要执行的指令的程序存储器地址。SP 是一个 8 位的 SFR,它用来指示堆栈顶部在内部 RAM 中的位置。系统复位后 SP 为07H,若不对 SP 设置初值,则堆栈在 08H 开始的区域,为了不占用工作寄存器 R0R7 的地址,一般在编程时应设置 SP 的初值(最好在 30H7FH 区域) 。2.3 程序状态字寄存器 PSW 的作用是什么其中状态标志有哪几位它们的含义是什么答PSW 是保存数据操作的结果标志,其中状态标志有 CY(PSW.7)进位标志,AC(PSW.6 )辅助进位标志,又称半进位标志,F0 、F1 (PSW.5 、PSW.1)用户标志;OV(PSW.2)溢出标志;P(PSW.0 )奇偶标志。2.4 什么是堆栈 堆栈有何作用 为什么要对堆栈指针 SP 重新赋值 SP 的初值应如何设定答堆栈是一种数据结构,所谓堆栈就是只允许在其一端进行数据写入和数据读出的线性表。其主要作用有两个保护断点和保护现场。堆栈区的设置原则上可以在内部 RAM 的任意区域,但由于 MCS-51 单片机内部 RAM 的00H1FH 地址单元已被工作寄存器 R0R7 占用,20H2FH 为位寻址区,故堆栈一般设在30H7FH(对于 8032 系列芯片可为 30H0FFH)的区域内。单片机复位后,SP 的内容为07H,堆栈事实上由 08H 单元开始,考虑到 08H1FH 单元分别属于 13 组的工作寄存器区,则最好把 SP 值改置为 1FH 或更大的值。2.5 开机复位后,CPU 使用的是哪组工作寄存器 它们的地址如何 CPU 如何指定和改变当前工作寄存器组答开机复位后使用的是 0 组工作寄存器,它们的地址是 00H07H,对程序状态字 PSW中的 RS1 和 RS0 两位进行编程设置,可指定和改变当前工作寄存器组。RS1、RS000H 时,当前工作寄存器被指定为 0 组;RS1、RS001H 时,当前工作寄存器被指定为 1 组;RS1、RS010H 时,当前工作寄存器被指定为 2 组;RS1、RS011H 时,当前工作寄存器被指定为 3 组。2.6 MCS-51 的时钟周期、机器周期、指令周期是如何定义的当振荡频率为 12MHz 时,一个机器周期为多少微秒答 时钟周期也称为振荡周期,定义为时钟脉冲的倒数,是计算机中最基本的、最小的时间单位。 CPU 取出一条指令至该指令执行完所需的时间称为指令周期,因不同的指令执行所需的时间可能不同,故不同的指令可能有不同的指令周期。 机器周期是用来衡量指令或程序执行速度的最小单位。它的确定原则是以最小指令周期为基准的,即一个最小指令周期为一个机器周期。当振荡频率为 12MHz 时,一个机器周期 1 微秒2.7 MCS-51 单片机的控制信号、 、有哪些功能答是访问程序存储器控制信号。当端接低电平时,则不管芯片内部是否有程序存储器,CPU 只访问外部程序存储器。对 8031 来说,因其内部无程序存储器,所以该引脚必须接地。当端接高电平时,CPU 访问内部程序存储器,但当 PC(程序计数器)值超过某一值时,将自动转向片外程序存储器 1000H 地址继续执行程序。是地址锁存允许信号。当 CPU 访问外部存储器或 I/O 接口时,ALE 输出脉冲的下降沿用于锁存 16 位地址的低 8 位。在不访问外部存储器或 I/O 接口时,ALE 端有周期性正脉冲输出,其频率为振荡频率的 1/6。但是,每当访问外部数据存储器或 I/O 接口时,在第二个机器周期中 ALE 只出现一次,即丢失一个 ALE 脉冲。片外程序存储器读选通信号。在 CPU 从外部程序存储器读取指令(或常数)期间,每个机器周期两次有效,但在访问外部数据存储器或 I/O 接口时,信号将不出现。端可以驱动 8个 TTL 负载。2.9 简述 MCS-51 内部数据存储器的存储空间分配。答内部数据存储器分为 3 个区域工作寄存器区(00H1FH ) ;位寻址区(20H2FH ) ;堆栈和数据缓冲器区(30H7FH 或 30H0FFH) 。2.10 位地址和字节地址有何区别 位地址 20H 具体在内存中什么位置 答MCS-51 的位存储器由以内部 RAM 中 20H2FH 单元和特殊功能寄存器中地址为 8 的倍数的特殊功能寄存器两部分组成。其中每个单元的每一位都有一个位地址映像,它们既可以像普通内部 RAM 单元一样按字节存取,也可以对单元中的任何一位单独存取。字节地址是内部 RAM 中和特殊功能寄存器中每个存储单元的地址。位地址 20H 是内部 RAM24H 中的 D0 位。2.11 8051 的 4 个 IO 口作用是什么 8051 的片外三总线是如何分配的答MCS-51 单片机有 4 个 8 位并行 I/O 端口,分别记作 P0、P1、P2、P3 口。 在访问片外扩展存储器时, P0 口分时传送低 8 位地址和数据, P2 口传送高 8 位地址。P1 口通常作为通用 I/O 口供用户使用。P3 口具有第二功能,为系统提供一些控制信号。在无片外扩展存储器的系统中,这 4 个口均可作为通用 I/O 端口使用。在作为通用 I/O 端口使用时,这 4 个口都是准双向口。 在访问片外扩展存储器时,片外三总线的构成P0 口传送低 8 位地址经锁存器所存构成低 8 位地址总线,高 8 位地址总线由 P2 口构成。P0 口作为单片机系统的低 8 位地址/数据线分时复用,在低 8 位地址锁存后,P0 口作为双向数据总线。由 P3 口的第二功能输出数据存储器的读、写控制信号与片外程序存储器读选通信号,访问程序存储器控制信号,地址锁存允许信号构成控制总线。习题 33.1 汇编语句是由 4 个部分(字段)构成的,简述各部分的含义。答汇编语句的 4 个部分为标号 操作码 操作数;注释标号是用户设定的一个符号,表示存放指令或数据的存储单元地址。标号由以字母开始的18 个字母或数字串组成,以冒号结尾。不能用指令助记符、伪指令或寄存器名来作标号。标号是任选的,并不是每条指令或数据存储单元都要标号,只在需要时才设标号。如转移指令所要访问的存储单元前面一般要设置标号。一旦使用了某标号定义一个地址单元,在程序的其它地方就不能随意修改这个定义,也不能重复定义。操作码是指令或伪指令的助记符,用来表示指令的性质或功能。对于一条汇编语言指令,这个字段是必不可少的。操作数给出参加运算或其它操作 的数据或数据的地址。操作数可以表示为工作寄存器名、特殊功能寄存器名、标号名、常数、表达式等。这一字段可能有,也可能没有。若有两个或三个操作数,它们之间应以逗号分开。注释字段不是汇编语言的功能部分,只是增加程序的可读性。言简意赅的注释是汇编语言程序编写中的重要组成部分。3.2 举例说明 MCS-51 单片机的 7 种寻址方式,各寻址方式的寻址空间。立即寻址立即寻址方式的寻址空间为程序存储器。 例如 MOV A,3FH ;3FHA直接寻址直接寻址方式中操作数存储的空间有三种 内部数据存储器的低 128 个字节单元(00H 7FH )例如 MOV A,30H ;(30H)A指令功能是把内部 RAM 30H 单元中的内容送入累加器 A。 位地址空间例如 MOV C,00H ;直接位 00H 内容进位位 特殊功能寄存器例如 MOV IE,85H ;立即数 85H中断允许寄存器 IE。寄存器寻址寄存器寻址方式的寻址空间为工作寄存器和特殊功能寄存器等。 例如 MOV A,R6 ;(R6)A寄存器间接寻址寄存器间接寻址空间为内部 RAM 128 字节,外部 RAM例如 MOV A,R0 ; (R0 )A变址寻址变址寻址空间为程序存储器。例如 MOVC A,ADPTR ;DPTR )() ) AMOVC A,A PC ;PC)() )A相对寻址相对寻址空间为程序存储器。当前 PC 值是指相对转移指令所在地址(源地址)加转移指令字节数。即当前 PC 值 源地址 转移指令字节数偏移量 rel 是有符号的单字节数,以补码表示,相对值在-128 127 范围内,负数表示从当前地址向上转移,正数表示从当前地址向下转移。所以转移的目的地址为目的地址 当前 PC 值 rel 源地址 转移指令字节数 rel例如 JNC 2AH , JZ F8H位寻址位寻址空间为内部 RAM 20H2FH 的 128 位和 SFR 中的 83 位。例如 MOV C,30H, MOV P1.0, C3.3 指出下列指令的寻址方式和操作功能INC 40H ;直接寻址 40H140HINC A ;寄存器寻址 A1AINC R2 ;寄存器间接寻址 R21R2MOVC A, ADPTR ;基址加变址寄存器寻址 ADPTR AMOV A, 6EH ;立即寻址 6EHASETB P1.0 ;位寻址 P1.0 置 13.4 设内部 RAM 中 3AH 单元的内容为 50H,写出当执行下列程序段后寄存器 A、R0 和内部 RAM 50H, 51H 单元的内容为何值MOV A,3AH ;A50HMOV R0,A ;R050HMOV A,00H ;A00HMOV R0,A ;50H00HMOV A,25H ;A25HMOV 51H,A ;51H25H答A25H, 3AH50H, R050H, 50H00H, 51H25H3.5 设堆栈指针 SP 中的内容为 60H,内部 RAM 30H 和 31H 单元的内容分别为 27H 和1AH,执行下列程序段后,61H,62H,30H ,31H ,DPTR 及 SP 中的内容将有何变化PUSH 30H ;(SP)1SP, 30H 61HPUSH 31H ;(SP)1SP, 31H 62HPOP DPL ; 62 DPL, (SP)-1SPPOP DPH ; 61 DPH, (SP)-1SPMOV 30H,00H ; 00H30HMOV 31H,0FFH ; FFH31H答61H27H, 62H1AH, 30H00H, 31HFFH, DPTR271AH, SP60H3.6 设(A)30H, (R1)23H, (30H )05H。执行下列两条指令后,累加器 A 和 R1 以及内部 RAM 30H 单元的内容各为何值XCH A,R1XCHD A,R1答A25H, R130H, 30H03H3.7 设(A)01010101B , (R5)10101010B,分别写出执行下列指令后的结果ANL A, R5 ; A0000 0000B, (R5)10101010BORL A, R5 ; A 10101010B, (R5)10101010BXRL A, R5 ; A00000000B3.8 设指令 SJMP rel7FH,并假设该指令存放在 2113H 和 2114H 单元中。当该条指令执行后,程序将跳转到何地址答程序将跳转到 2194H 地址3.9 简述转移指令 AJMP addr11,SJMP rel , LJMP addr16 及 JMP ADPTR 的应用场合。答AJMP addr11 这是在当前 PC 的 2K 字节范围内的无条件转移指令,把程序的执行转移到指定的地址。SJMP rel 这是相对跳转指令,其中 rel 为相对偏移量。转向的目标地址是在当前 PC 的前128 字节到后 127 字节之间。LJMP addR16 执行这条指令时把指令的第二和第三字节分别装入 PC 的高位和低位字节中,无条件地转向指定地址。转移的目标地址可以在 64KB 程序存储器地址空间的任何地方,不影响任何标志。JMP ADPTR 把累加器 A 中 8 位无符号数与数据指针 DPTR 中的 16 位数相加,将结果作为转移的目标地址送入 PC,不改变累加器 A 和数据指针 DPTR 内容,也不影响标志。本指令以 DPTR 内容作为基址,A 的内容作为变址。只要把 DPTR 的值固定,而给 A 赋予不同的值,即可实现程序的多分支转移。3.10 查指令表,写出下列两条指令的机器码,并比较一下机器码中操作数排列次序的特点。MOV 78H,80H ;85 80 78MOV 78H,80H ;75 78 80答直接寻址单元传送到直接寻址单元的机器码是第二个操作数在前,而立即数传送到直接地址单元是第一个操作数在前,次序正好相反。3.11 试编写程序,查找在内部 RAM 30H50H 单元中 1AH 这一数据。若找到 1AH 则将51H 单元置为 01H;没找到则将 51H 单元置为 00H。答参考程序如下MOV R1, 2FHLOOP1 INC R1CJNE R1, 1AH, LOOP2SJMP LOOP3LOOP2 CJNE R1, 51, LOOP1MOV 51H, 00HSJMP ENDLOOP3 MOV 51H, 01HEND RET3.12 若 SP60H,子程序标号 MULT 所在的地址为 3A40H。执行 LCALL MULT 指令后,堆栈指针 SP 和堆栈内容发生了什么变化答SP62H, 61H40H, 62H3AH3.13 假设外部存储器 215AH 单元的内容为 3DH,执行下列指令后,累加器 A 中的内容为何值MOV P2,21HMOV R0,5AHMOVX A,R0答A 3DH习题 44.1 编程将数据存储器中以 2A00H 为首地址的 100 个连续单元清零。CLR AMOV R0, 64HMOV DPTR, 2A00HLOOP MOVX DPTR,AINC DPTRDJNZ R0, LOOPEND4.2 编程将片内 50H70H 单元中的内容传送到以 5C00H 为起始地址的存储区中。MOV DPTR, 5C00HMOV R0, 50HLOOP MOV A,R0MOVX DPTR,AINC R0INC DPTRCJNE R0,70H,LOOPEND4.3 片外 RAM 区从 1000H 单元开始存有 100 个单字节无符号数,找出最大值并存入1100H 单元中,试编写程序。MOV DPTR, 1000H ;置片外 RAM 区首地址MOV R0,00H ;清 R0MOV R1,64H ;置计数初值 100LOOP MOVX A, DPTR ;取片外 RAM 区的某个数送 ACJNZ A,R0,NT1 ;与 R0 中的数比较NT1 JC NT2 ;AR0跳转到 NT2MOV RO,A ;若AR0 ,则大数送 RONT2 INC DPTR ;修改数据块指针DJNZ R1,LOOP ;未完,循环RET4.4 设有 100 个单字节有符号数,连续存放在以 2100H 为首地址的存储区中,试编程统计其中正数、负数、零的个数。MOV R0, 00H ; 置负数的计数初值MOV R1, 00H ; 置正数的计数初值MOV R2, 00H ; 置 0 的计数初值MOV R4, 64H ; 置循环计数初值MOV DPTR, 2100H ; 置数据区首地址STARTMOVX A, DPTR ; 取某一数据送入 AJZ EQUAL ;为 0 转 EQUALJNB ACC.7, POSI ;为正数转 POSIINC R0 ; 负数计数值加 1INC DPTR ; 修改数据块指针DJNZ R4, START ; 未完,返回POSI INC R1 ; 正数计数值加 1INC DPTR ; 修改数据块指针DJNZ R4, STARTEQUALINC R2 ; 0 计数值加 1INC DPTRDJNZ R4, STARTEND4.5 从 2030H 单元开始,存有 100 个有符号数,要求把它传送到从 20BOH 开始的存储区中,但负数不传送,试编写程序。MOV R1, 64H ;置计数初值MOV R0, B0H ;目标数据区首地址低 8 位,高 8 位为 20HMOV DPTR, 2030H ;源数据区首地址STARTMOVX A, DPTR ; 取源数据区某数据送入 AJB ACC.7, D1 ;负数,转 D1MOVX R0,A ;正数,送入目标数据区INC DPTR ; 修改源数据块指针INC R0 ; 修改目标数据块指针DJNZ R1, START ;未完,继续RET ;返回D1 INC DPTR ;修改源数据块指针INC R0 ;修改目标数据块指针DJNZ R1, START ;未完,继续RET ;返回4.6 若从 30H 单元开始有 100 个数,编一个程序检查这些数,正数保持不变,负数取补后送回。MOV R0, 30H ;数据区首地址MOV R1, 64H ;计数初值START MOVX A, R0 ;取某个数JNB ACC.7, POSI ;正数,转 POSICPL A ;负数,取补ADD A, 01HMOVX R0, A ;送回原地址INC R0 ;修改数据块指针DJNZ R1, START ;未完,继续RETPOSI INC R0 ;修改数据块指针DJNZ R1, START ;未完,继续RET4.7 试编程把以 2040H 为首地址的连续 10 个单元的内容按升序排列,存到原来的存储区中。SORT MOV DPTR, 2040H;MOV R3, 09H;CLR F0;D1 MOVX A,DPTR ;MOV R2, A ;前一个数送 R2INC DPTRMOVX A, DPTR ;MOV R4, A ;后一个数送 R4MOV A, R2 ;前一个数送 ACLR CSUBB A, R4 ;前一个数减后一个数JC NEXT ;MOV A, R2 ;相邻数互换MOVX DPTR,AMOV R0,DPL ;数据指针低 8 位减 1DEC R0MOV DPL,R0MOV A, R4 ;MOVX DPTR,AINC DPTR;SETB F0NEXT DJNZ R3, D1;JB F0,SORTRET4.8 设在 2000H2004H 单元中存放有 5 个压缩 BCD 码,编程将它们转换成 ASCII 码,存放到以 2005H 为首地址的存储区中。MOV DPTR,2000H;MOV R0, 05H;MOV R1, 04H;D1 MOVX A, DPTR;ANL A, 0FHCLR C;ADD A,30H;MOV P2,20HMOVX R0,AINC DPTR;INC R0DJNZ R1, D1;RET在以 2000H 为首地址的存储区中,存放着 20 个用 ASCII 码表示的 O9 之间的数,试编程,将它们转换成 BCD 码,并以压缩 BCD 码的形式存放在 3000H3009H 单元中。MOV DPTR, 2000H;MOV R0, 20H;MOV R1, 00H;ASCBIN MOVX A, DPTR;CLR CSUBB A, 30H;MOV P2, 30H;MOVX R1,A;INC R1;INC DPTR;DJNZ R0, ASCBIN;RET4.10 试编写多字节 BCD 码数加法、减法子程序。4.11 若晶振为 6MHz,试编写延时 100ms、1s 的子程序。ORG 2000H 周期数MOV R0, 0AH ;毫秒数 R0 1DL2 MOV R1, MT ;1ms 延时值R1 1DL1 NOP 1NOP 1DJNZ R1,DL1 ;1ms 延时循环 2DJNZ R0,DL2 ;10ms 延时循环 2END4.12 试设计一个子程序,其功能为将片内 RAM 20H21H 中的压缩 BCD 码转换为二进制数,并存于以 30H 开始的单元。BCDB MOV A,20HMOV R2,A ;取千位、百位 BCD 码ACALL BCDB1 ;调用子程序MOV B,0AHMUL AB ;乘以 10MOV R6,A ;乘积低 8 位送 R6XCH A,B ;交换乘积高、低位MOV R5,A ;乘积高位送 R5MOV A,21H ;取十位、个位 BCD 码MOV R2,A ;送入 R2ACALL BCDB1 ;调用子程序ADD A,R6 ;加千位、百位乘积低 8 位MOV 31H,A ;低 8 位送入 31HMOV A,R5 ;乘积高 8 位送 AADDC A,00H ;加进位位MOV 30H,A ;结果高 8 位送入 30HHERE SJMP HERE子程序清单BCDB1 MOV A,R2 ;取压缩 BCD 码ANL A, 0F0H ;屏蔽低 4 位SWAP AMOV B,0AHMUL AB ;高位 BCD 码乘以 10MOV R3,A ;乘积送 R3MOV A,R2 ;取压缩 BCD 码ANL A, 0FH ;屏蔽高 4 位ADD A,R3 ;高位 BCD 码乘以 10 后加低位 BCD 码MOV R2,A ;送 R2RET习题 55.1 什么是中断系统中断系统的功能是什么答当 CPU 正在处理某件事情 例如,正在执行主程序的时候,外部或内部发生的某一事件如某个引脚上电平的变化,一个脉冲沿的发生或计数器的计数溢出等 请求 CPU 迅速去处理,于是,CPU 暂时终止当前的工作,转去处理所发生的事件。中断服务程序处理完该事件后,再回到原来被终止的地方,继续原来的工作,这样的过程称为中断。实现这种功能的部件称为中断系统。中断系统的功能(1)实现中断及中断返回, (2)实现优先级排队, (3)实现优先级控制。5.2 什么是中断嵌套答当 CPU 响应某一中断源的请求而进行中断处理时,若有优先级更高的中断源发出中断请求,则 CPU 中断正在执行的中断服务程序,保留程序的断点和现场,响应更高一级的中断,即是中断嵌套。5.3 什么是中断源MCS-51 有哪些中断源各有什么特点答向 CPU 发出中断请求的来源称为中断源。MC5-51 单片机的中断系统有 5 个中断请求源外部中断 0 请求,由引脚输入,中断请求标志为 IE0。外部中断 l 请求,由引脚输入,中断请求标志为 IEl。定时器/计数器 T0 溢出中断请求,中断请求标志为 TF0。定时器/计数器 T1 溢出中断请求,中断请求标志为 TF1。串行口中断请求,中断请求标志为 TI 或 RI。外部中断 0它的触发方式选择位为 IT0。IT00,为电平触发方式,引脚上低电平有效IT01,为脉冲触发方式,引脚上的电平从高到低的负跳变有效。IT0 位可由软件置“1”或清“0”。外部中断 0 请求标志位 IE0。当 IT00,即电平触发方式时,每个机器周期的 S5P2 采样引脚,若脚为低电平,则置“1” IE0,否则清“0” IE0 。当 IT01,即跳沿触发方式时,在第一个机器周期采样为低电平,则置“1” IE0。IE01,表示外部中断 0 正在向 CPU 申请中断。当 CPU 响应中断,转向中断服务程序时,由硬件清“0” IE0。外部中断 1 中断原是与此相同。定时器/计数器 0被启动计数后,从初值开始加 1 计数,当定时器/ 计数器 0 计数满而产生溢出时,由硬件自动使 TF0 置 1,并向 CPU 申请中断。该标志一直保持到 CPU 响应中断后,才由硬件自动清 0。也可用软件查询该标志,并由软件清 0。定时器/计数器 1 中断原理与此相同。串行中断请求由 TI、RI 的逻辑“或” 得到。即不论是发送标志还是接收标志,都将发生串行中断请求。5.4 MCS-51 单片机响应外部中断的典型时间是多少 在哪些情况下,CPU 将推迟对中断请求的响应答38 个机器周期。1 CPU 正在处理相同的或更高优先级的中断。因为当一个中断被响应时,要把对应的中断优先级状态触发器置“1”该触发器指出 CPU 所处理的中断优先级别 ,从而封锁了低级中断和同级中断。2 所查询的机器周期不是所执行指令的最后一个机器周期。作这个限制的目的是使当前指令执行完毕后,才能进行中断响应,以确保当前指令完整的执行。3 正在执行的指令是 RET1 或是访问 IE 或 IP 的指令。因为按 MCS-51 中断系统特性的规定,在执行完这些指令后,需要再执行一条指令才能响应新的中断请求。如果存在上述三种情况之一,CPU 将推迟对中断请求的响应。5.5 中断查询确认后,在下列各种运行情况中,能立即进行响应的是1当前正在进行高优先级中断处理2当前正在执行 RETI 指令3当前指令是 DIV 指令,且正处于取指令的机器周期4当前指令是 MOV A, R3答(4)能立即进行响应5.6 试编写出外部中断 1 为跳沿触发方式的中断初始化程序。答SETB EASETB EX1SETB IT15.7 在 MCS-51 中,需要外加电路实现中断撤除的是1定时中断2脉冲方式的外部中断3串行中断4电平方式的外部中断答(4)需要外加电路5.8 MCS-51 有哪几种扩展外部中断源的方法各有什么特点答(1)定时器/计数器作为外部中断源的使用方法当它们选择为计数器工作模式,T0 或 T1 引脚上发生负跳变时,T0 或 T1 计数器加 1,利用这个特性,可以把 T0、T1 引脚作为外部中断请求输入引脚,而定时器/计数器的溢出中断 TF1 或 TF0 作为外部中断请求标志。(2)中断和查询结合的方法若系统中有多个外部中断请求源,可以按它们的轻重缓急进行排队,把其中最高级别的中断源 IR0 直接接到 MCS-51 的一个外部中断输入端,其余的中断源 IR1IR4 用“线或”的办法连到另一个外部中断输入端,同时还连到 P1 口,中断源的中断请求由外设的硬件电路产生,这种方法原则上可处理任意多个外部中断。查询法扩展外部中断源比较简单,但是扩展的外部中断源个数较多时,查询时间较长。(3)用优先权编码器扩展外部中断源采用 74LS148 优先权编码器在硬件上对外部中断源进行排队,可以避免响应优先级最高的中断和响应优先级最低的中断所需的时间可能相差很大这样的问题。该方法的最大特点是结构简单,价格低廉,但该电路无法实现中断服务子程序的嵌套。5.9 中断服务子程序和普通子程序有什么区别答 1,中断服务子程序的入口地址由中断向量表确定,而普通子程序的入口地址在中断向量表以外的程序存储空间内任意设定。2,中断服务子程序的返回指令是 RETI, 而普通子程序的返回指令是 RET5.10 试编写一段对中断系统初始化的程序,允许 INT0, INT1,T0,串行口中断,且使 T0中断为高优先级。答SETB EASETB EX0SETB EX1SETB ET0SETB ESSETB PT05.11 在 MCS-51 单片机中,外部中断有哪两种触发方式如何加以区别答电平触发方式和跳沿触发方式。IT00 时, 为电平触发方式,引脚低电平有效。IT01 时, 为跳沿触发方式,引脚负跳变有效。IT10 时,为电平触发方式,引脚低电平有效。IT11 时,为跳沿触发方式,引脚负跳变有效。5.12 单片机在什么条件下可响应 INT0 中断简要说明中断响应的过程。答1,中断允许寄存器 IE 中的 EA1,且 EX11,同时没有其它优先于外部中断 0 的中断,若 IT00,引脚上低电平有效;若 IT01,引脚上的电平从高到低的负跳变有效。2,当 CPU 正在处理某件事情 例如,正在执行主程序的时候,外部发生的某一事件 如某个引脚上电平的变化,一个脉冲沿的发生请求 CPU 迅速去处理,于是,CPU 暂时终止当前的工作,转去处理所发生的事件。中断服务程序处理完该事件后,再回到原来被终止的地方,继续原来的工作,这样的过程称为中断。处理事件请求的过程,称为 CPU 的中断响应过程。5.13 当正在执行某一中断源的中断服务程序时,如果有新的中断请求出现,问在什么情况下可响应新的中断请求在什么情况下不能响应新的中断请求答1,一个中断源的中断请求被响应,需满足以下条件 该中断源发出中断请求。 CPU 开中断,即中断总允许位 EA1。 申请中断的中断源的中断允许位1,即该中断没有被屏蔽。 无同级或更高级中断正在被服务。2,中断响应是有条件的,并不是查询到的所有中断请求都能被立即响应,当遇到下列三种情况之一时,中断响应被封锁1 CPU 正在处理相同的或更高优先级的中断。因为当一个中断被响应时,要把对应的中断优先级状态触发器置“1”该触发器指出 CPU 所处理的中断优先级别 ,从而封锁了低级中断和同级中断。2 所查询的机器周期不是所执行指令的最后一个机器周期。作这个限制的目的是使当前指令执行完毕后,才能进行中断响应,以确保当前指令完整的执行。3 正在执行的指令是 RETI 或是访问 IE 或 IP 的指令。因为按 MCS-51 中断系统特性的规定,在执行完这些指令后,需要再执行一条指令才能响应新的中断请求。如果存在上述三种情况之一,CPU 将不能进行中断响应。习题 66.1 MCS-51 单片机的 TO、T1 用作定时器时,其定时时间与哪些因素有关答定时器/计数器用作定时方式时,其定时时间与时钟周期、工作方式、定时初值等因素有关。6.2 当 MCS-51 单片机的 TO 用于工作方式 3 时,由于 TRl 位已被 TO 占用,该如何控制定时器 T1 的开启和关闭答这时 T1 只能用作串行口波特率发生器或不需要中断的场合。因为 TR1 已被 T0 借用,所以 T1 的控制只有和 M1、M0 两个条件,选择定时或计数模式,M1、M0 选择工作方式。这时只要把方式控制字送入 TMOD 寄存器就可启动 T1 运行,如果让它停止工作,只需送入一个将 T1 设置为工作方式 3 的方式控制字就可以了。6.3 设 MCS-51 单片机的晶振频率为 12MHz,试用单片机的内部定时方式产生频率为100kHz 的方波信号,由 P1.1 脚输出。答依据题意,只要使 P1.0 引脚每隔 5us 取反一次即可得到 10us 的方波,因此定是时间T5us,可选择定时器/计数器 T0,以中断方式工作。设定 TMODTMOD 的低 4 位控制 T0,设定 T0 定时模式,即0;工作在方式 0,即 M1M000H;软件启动定时器,即 GAME0。TMOD 的高 4 位与 T0 无关,一般取 0,所以 TMOD 控制字为00H。计算定时初值晶振频率为 12MHz,机器周期 1us定时初值 8192-581871FFBH0001111111111011B因 TL0 的高 3 位未用,对计算出的初值要进行修正,即低 5 位前插入 3 个 0 构成低 8 位初值,从低 6 位向前取 8 位构成高 8 位初值,即 1111111100011011BFF1BHORG 0000HAJMP MAIN ;转主程序ORG 000BH ; T0 中断矢量地址AJMP ISER ;转中断服务程序ORG 100HMAIN MOV SP,60H ;设堆栈指针MOV TMOD,00H ;写控制字MOV TL0,1BH ;置 T0 初值MOV TH0,0FFHSETB ET0 ;允许 T0 中断SETB EA ;CPU 开中断SETB TR0 ;启动 T0SJMP ;等待中断ISER MOV TL0,1BH ;T0 中断服务子程序,重置 T0 初值MOV TH0,0FFHCPL P1.0 ;P1.1 取反RETIEND6.4 设 MCS-51 单片机的晶振频率为 6MHz,使用定时器 T1 的定时方式 1,在 P10 输出周期为 20ms、占空比为 60的矩形脉冲,以查询方式编写程序。答依据题意,使 P1.0 引脚输出 12ms 高电平,8ms 低电平,即可得到周期为 20ms、占空比为 60的矩形脉冲,因此定时时间 T112ms,T28ms,定时器 /计数器 T1,以查寻方式工作。设定 TMODTMOD 的高 4 位控制 T1,设定 T1 定时模式,即0;工作在方式 1,即 M1M001H;软件启动定时器,即 GAME0。TMOD 的低 4 位与 T0 无关,一般取 0,所以 TMOD 控制字为10H。计算定时初值晶振频率为 6MHz,机器周期 2us定时初值65536-6000 59536E890H65536-400061536F060HORG 100HMOV TMOD,10H ;LOOP0 MOV TL0,90H ;MOV TH0,0E8HSETB TR1 ;LOOP1JNB TF1,LOOP1 ;CLR TF1;SETB P1.0MOV TL0,60H ;MOV TH0,0F0HSETB TR1LOOP2JNB TF1,LOOP2 ;CLR TF1;CLR P1.0;SJMP LOOP0;RET6.5 设 MCS-51 单片机的晶振频率为 6MHz,以计数器 T1 进行外部事件计数,每计数 100个外部事件输入脉冲后,计数器 T1 转为定时工作方式,定时 5ms 后,又转为计数方式。如此周而复始地工作,试编程实现。答依据题意,设 T1 工作在计数模式时,工作在方式 0, 设 T1 工作在定时模式时,工作在方式 1 。设定 TMODTMOD 的高 4 位控制 T1,设定 T1 计数模式,即1;工作在方式 1,即 M1M010H;软件启动定时器,即 GAME0。TMOD 的低 4 位与 T0 无关,一般取 0,所以 TMOD 控制字为40H。设定 T1 定时模式,即0;工作在方式 1,即 M1M001H;软件启动定时器,即GAME0。TMOD 的低 4 位与 T0 无关,一般取 0,所以 TMOD 控制字为 10H。计算计数初值计数初值8192-100 80921F9CH0001111110011100B因 TL0 的高 3 位未用,对计算出的初值要进行修正,即低 5 位前插入 3 个 0 构成低 8 位初值,从低 6 位向前取 8 位构成高 8 位初值,则计数初值为 FC1CH计算定时初值晶振频率为 6MHz,机器周期 2us65536-250063036F63CHORG 100H;START MOV TMOD,40H ;MOV TL0,1CH;MOV TH0,0FCH ;SETB TR1;LOOP1JNB TF1,LOOP1;CLR TF1;MOV TMOD, 10

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值