已阅读5页,还剩14页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1.89C51 单片机内包含哪些主要逻辑功能部件? 答:80C51 系列单片机在片内集成了以下主要逻 辑功能部件: (l)CPU(中央处理器):8 位 (2)片内 RAM:128B (3)特殊功能寄存器:21 个 (4)程序存储器:4KB (5)并行 I/O 口:8 位,4 个 (6)串行接口:全双工,1 个 (7)定时器/计数器:16 位,2 个 (8)片内时钟电路:1 个 2.89C51 的 EA 端有何用途? 答:/EA 端接高电平时,CPU 只访问片内 flash Rom 并执行内部程序,存储器。/EA 端接低电平 时,CPU 只访问外部 ROM,并执行片外程序存储 器中的指令。/EA 端保持高电平时,CPU 执行内 部存储器中的指令。 3. 89C51 的存储器分哪几个空间?如何区别不同 空间的寻址? 答:ROM(片内 ROM 和片外 ROM 统一编址)(使 用 MOVC)(数据传送指令)(16bits 地址) (64KB) 片外 RAM(MOVX)(16bits 地址) (64KB) 片内 RAM(MOV)(8bits 地址)(256B) 4. 简述 89C51 片内 RAM 的空间分配。 答:片内 RAM 有 256B 低 128B 是真正的 RAM 区 高 128B 是 SFR(特殊功能寄存器)区 5. 简述布尔处理存储器的空间分配,片内 RAM 中包含哪些可位寻址单元。 答:片内 RAM 区从 00HFFH(256B) 其中 20H2FH(字节地址)是位寻址区 对应的位地址是 00H7FH 6. 如何简捷地判断 89C51 正在工作? 答:用示波器观察 8051 的 XTAL2 端是否有脉冲 信号输出(判断震荡电路工作是否正常?) ALE(地址锁存允许)(Address Latch Enable)输出是 fosc 的 6 分频 用示波器观察 ALE 是否有脉冲输出(判断 8051 芯片的好坏?) 观察 PSEN(判断 8051 能够到 EPROM 或 ROM 中读取指令码?) 因为/PSEN 接外部 EPROM(ROM)的/OE 端 子 OE=Output Enable(输出允许) 7. 89C51 如何确定和改变当前工作寄存器组? 答:PSW(程序状态字)(Program Status Word)中的 RS1 和 RS0 可以给出 4 中组合 用来从 4 组工作寄存器组中进行选择 PSW 属于 SFR(Special Function Register)(特殊功能寄存器) 8. 89C51 P0 口用作通用/口输入时,若通 过 TTL“OC”门输入数据,应注意什么?为什么? 答: 9. 读端口锁存器和“读引脚”有何不同?各使 用哪种指令? 答:读锁存器(ANL P0,A)就是相当于从存储器 中拿数据,而读引脚是从外部拿数据(如 MOV A,P1 这条指令就是读引脚的,意思就是把端口 p1 输入数据送给 A) 传送类 MOV,判位转移 JB、JNB、这些都属 于读引脚,平时实验时经常用这些指令于外部通 信,判断外部键盘等;字节交换 XCH、XCHD 算术 及逻辑运算 ORL、CPL、ANL、ADD、ADDC、SUBB、INC、DEC 控制转移 CJNE、DJNZ 都属于读锁存器。 10. 89C51 P0P3 口结构有何不同?用作通用 /口输入数据时,应注意什么? 答:P0 口内部没有上拉电阻,可以用做 16 位地 址的低 8 位; P3 有第二功能; P2 口可以用做 16 位地址的高 8 位; 需要上拉电阻。OC 门电路无法输出高低电 平,只有靠上拉电阻才能实现 11. 89C51 单片机的信号有何功能?在使用 8031 时,信号引脚应如何处理? 答:(1)80C51 单片机的 EA 信号的功能 EA 为片外程序存储器访问允许信号,低电 平有效;在编程时,其上施加 21V 的编程电压 EA 引脚接高电平时,程序从片内程序存储 器开始执行,即访问片内存储器;EA 引脚接低电 平时,迫使系统全部执行片外程序存储器程序。 (2)在使用 80C31 时,EA 信号引脚的处理方 法 因为 80C31 没有片内的程序存储器,所以在 使用它时必定要有外部的程序存储器,EA 信号 引脚应接低电平。 12. 89C51 单片机有哪些信号需要芯片引脚以第 2 功能的方式提供? 答: 第一功能 第二功能 串行口: P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) 中断: P3.2 INT0 外部中断 0 P3.3 INT1 外部中断 1 定时器/计 数器(T0、T1): P3.4 T0(定时器/计数器 0 的外部输入) P3.5 T1(定时器/计数器 1 的外部输入) 数据存储器 选通: P3.6 WR(外部存储器写选通,低电平有效,输出) P3.7 RD(外部存储器读选通,低电平有效,输出) 定时器/计 数器(T2): P1.0 T2(定时器 T2 的计数端) P1.1 T2EX(定时器 T2 的外部输入端) 13. 内部 RAM 低 128 字节单元划分为哪 3 个主要 部分?各部分主要功能是什么? 答:片内 RAM 低 128 单元的划分及主要功能: (l)工作寄存器组(00HlFH) 这是一个用寄存器直接寻址的区域,内部数 据 RAM 区的 031(00HlFH),共 32 个单 元。它是 4 个通用工作寄存器组,每个组包含 8 个 8 位寄存器,编号为 R0R7。 (2)位寻址区(20H2FH) 从内部数据 RAM 区的 3247(20H2FH)的 16 个字节单元,共包含 128 位,是可位寻 址的 RAM 区。这 16 个字节单元,既可进行字节 寻址,又可实现位寻址。 (3)字节寻址区(30H7FH) 从内部数据 RAM 区的 48127(30H7FH),共 80 个字节单元,可以采用间接字节寻址 的方法访问。 14. 使单片机复位有几种方法?复位后机器的初 始状态如何? 答:(1)单片机复位方法 单片机复位方法有:上电自动复位、按键电 平复位和外部脉冲三种方式,如题图 2-1 所示。 题图 2-1 (2)复位后的初始状态 复位后机器的初始状态,即各寄存器的状态: PC 之外,复位操作还对其他一些特殊功能寄存器 有影响,它们的复位状态如题表 2-1 所例 15. 开机复位后,CPU 使用的是哪组工作寄存器?它 们的地址是什么?CPU 如何确定和改变当前工作 寄存器组? 答:一般开机复位后都是选择第一组通用工作寄 存器作为工作寄存器的,一共有 4 组,分别为 0.1.2.3 连续位于 00h 到 1FH 地址, 然后在机器中有个程序状态字 PSW,它的第四和 第三位 RS1,RS0 是用来选择工作寄存器组的, 可能不同机器地址稍有不同。他们俩的值和寄存 器组的关系: RS1/RS0 0/0 0/1 1/0 1/1 使用的工作寄存器 0 1 2 3 地址 00-07 08-0F 10-17 18-1F 写程序的时候就是通过定义程序状态字来选择使 用不同的寄存器组。也可以直接对 RS1 和 RS0 赋 值。 (最后一问同题 7) 16. 程序状态寄存器 PSW 的作用是什么?常用标 志有哪些位?作用是什么? 答:PSW 是一个 SFR(特殊功能寄存器) 位于片内 RAM 的高 128B 具体地址 D0H(00HFFH)(片内 RAM 的编址) (8bits 编址方法) PSW=Program Status Word(程序状态字) PSW 的常用标志位有哪些? CY=Carry(进位标志位) AC=Auxiliary Carry(辅助进位标志位) (半进位标志位) F0 用户标志位 RS1,RS0,用来选择当前工作寄存器组 (R0R7)(4 选 1) OV=Overflow(溢出标志位) P=Parity(奇偶校验位) 17. 位地址 7CH 与字节地址 7CH 如何区别?位地 址 7CH 具体在片内 RAM 中的什么位置? 答:用不同的寻址方式来加以区分,即访问 128 个位地址用位寻址方式,访问低 128 字节单元用 字节寻址和间接寻址。 具体地址为 2F 的第五位,即为 7C。 18. 89C51 单片机的时钟周期与振荡周期之间有 什么关系?什么叫机器周期和指令周期? 答:时钟信号的周期称为机器状态周期,是振荡 周期的两倍。一个机器周期是指 CPU 访问存储器 一次所需的时间。指令周期是执行一条指令所需 的时间。 19. 一个机器周期的时序如何划分? 答:一个机器周期=12 个震荡周期=6 个时钟周期 (状态周期) S1P1,S1P2,S2P1,S2P2,S3P1,S3P2,S4P1, S4P2,S5P1,S5P2,S6P1,S6P2 其中 s=state(状态),p=phase(相位) 20. 什么叫堆栈?堆栈指针 SP 的作用是什么? 89C51 单片机堆栈的容量不能超过多少字节? 答:堆栈都是一种数据项按序排列的数据结构, 只能在一端(称为栈顶(top)对数据项进行插入 和删除。要点:堆:顺序随意栈:后进先出 (Last-In/First-Out) 在调用子程序时需要保存调用函数的 CPU 寄存器 PC 指针,PC 指针是被 CALL 指令自动压入 SP 所指向的片内存储器,CPU 寄存器要由用户用 PUSH 指令自行保存,因此 SP 的作用就是一个指 针,当进行中断调用,子函数调用时将现场数据压 入 SP 所指向的存储器,SP 自动增加 1 或 2,当中 断结束 RETI,调用返回 RET,POP 时将 SP 数据弹 出,SP 自动减 1 或,2 8051 最大为 128 字节的片内存储器,0X20 以上理 论都可以做堆栈用 96 字节,8052 为 256 字节 224 字节可用,但这样便没有其它空间可用于数据存 储现在的单片机的程序一般都能用 C51 来,不用 关心堆栈大小与 SP 寄存器 21. 89C51 有几种低功耗方式?如何实现? 答:空闲方式和掉电方式 空闲方式和掉电方式是通过对 SFR 中的 PCON(地址 87H)相应位置 1 而启动的。 当 CPU 执行完置 IDL=1(PCON.1)的指令后,系 统进入空闲工作方式。这时,内部时钟不向 CPU 提供,而只供给中断、串行口、定时器部分。 CPU 的内部状态维持,即包括堆栈指针 SP、程序 计数器 PC、程序状态字 PSW、累加器 ACC 所有的 内容保持不变,端口状态也保持不变。ALE 和 PSEN 保持逻辑高电平。 当 CPU 执行一条置 PCON.1 位(PD)为 1 的指令 后,系统进入掉电工作方式。在这种工作方式下, 内部振荡器停止工作。由于没有振荡时钟,因此, 所有的功能部件都停止工作。但内部 RAM 区和特 殊功能寄存器的内容被保留,而端口的输出状态 值都保存在对应的 SFR 中,ALE 和 PSEN 都为低 电平。 22. PC 与 DPTR 各有哪些特点?有何异同? 答:(1)程序计数器 PC 作为不可寻址寄存器的特 点 程序计数器 PC 是中央控制器申最基本的寄 存器,是一个独立的计数器,存放着下一条将程 序存储器中取出的指令的地址。 程序计数器 PC 变化的轨迹决定程序的流程。 程序计数器的宽度决定了程序存储器可以 寻址的范围。 程序计数器 PC 的基本工作方式有: 程序计数器 PC 自动加 1。这是最基本的 工作方式,也是这个专用寄存器被称为计数 器的原因。 执行条件或无条件转移指令时,程序计数 器将被置入新的数值,程序的流向发生变化。 变化的方式有下列几种:带符号的相对跳转 SJMP、短跳转 AJMP、长跳转 LJMP 及 JMP A+DPTR 等。 在执行调用指令或响应中断时: PC 的现行值,即下一条将要执行的指令 的地址送入堆栈,加以保护; 将子程序的入口地址或者中断矢量地址送 入 PC,程序流向发生变化,执行子程序或中断 服务程序; 子程序或中断服务程序执行完毕,遇到返 回指令 RET 或 RETI 时,将栈顶的内容送到 PC 寄 存器中,程序流程又返回到原来的地方,继续执 行。 (2)地址指针 DPTR 的特点 地址指针 DPTR 的特点是,它作为片外数据 存储器寻址用的地址寄存器(间接寻址)。 (3)地址指针 DPTR 与程序计数器 PC 的异同 相同之处: 两者都是与地址有关的、16 位的寄存器。 其中,PC 与程序存储器的地址有关,而 DPTR 与数据存储器的地址有关。 作为地址寄存器使用时,PC 与 DPTR 都是 通过 P0 和 P2 口(作为 16 位地址总线)输 出的。但是,PC 的输出与 ALE 及 PSEN 有 关;DPTR 的输出,则与 ALE、RD 及 WR 相联系。 不同之处: PC 只能作为 16 位寄存器对待,由于有自 动加 1 的功能,故又称为计数器; DPTR 可以作为 16 位寄存器对待,也可以 作为两个 8 位寄存器对待。 PC 是不可以访问的,有自己独特的变化 方式,它的变化轨迹决定了程序执行的流程; DPTR 是可以访问的,如 MOV DPTR,#XXXXH,INC DPTP。 23. 89C51 端口锁存器的“读修改写”操作 与“读引脚”操作有何区别? 答:指令系统中有些指令读锁存器的值, 有些指 令则读引脚上的值。读锁存器指令是从锁存器中 读取一个值并进行处理, 把处理后的值(原值或 已修改后的值)重新写入锁存器中。这类指令称 为读-修改-写指令。 对于读-修改-写指令。直接读锁存器而不是 读端口引脚, 是因为从引脚上读出的数据不一定 能真正反映锁存器的状态。 单片机原理及接口技术课后习题答案 第三章 1、 指令:CPU 根据人的意图来执行某种操作 的命令 指令系统:一台计算机所能执行的全部指令集合 机器语言:用二进制编码表示,计算机能直接识 别和执行的语言 汇编语言:用助记符、符号和数字来表示指令的 程序语言 高级语言:独立于机器的,在编程时不需要对机 器结构及其指令系统有深入了解的通用性语言 2、 见第 1 题 3、 操作码 目的操作数 ,源操作数 4、 寻址方式 寻址空间 立即数寻址 程序存储器 ROM 直接寻址 片内 RAM 低 128B、特殊功能寄存器 寄存器寻址 工作寄存器 R0-R7、A、B、C、DPTR 寄存器间接寻 址 片内 RAM 低 128B、片外 RAM 变址寻址 程序存储器(A+PC,A+DPTR) 相对寻址 程序存储器 256B 范围(PC+偏移量) 位寻址 片内 RAM 的 20H-2FH 字节地址、部分 SFR 5、 SFR:直接寻址,位寻址,寄存器寻址;片 外 RAM:寄存器间接寻址 6、 MOV A,40H ;直接寻址(40H)A MOV R0,A;寄存器寻址(A)R0 MOV P1,#0F0H ;立即数寻址 0F0P1 MOV R0,30H;直接寻址(30H) (R0) MOV DPTR,#3848H;立即数寻址 3848HDPTR MOV 40H,38H;直接寻址 (38H) 40H MOV R0,30H;直接寻址 (30H) R0 MOV P0,R0;寄存器寻址( R0 )P0 MOV 18H,#30H ;立即数寻址 30H18H MOV A,R0 ;寄存器间接寻址 (R0) A MOV P2,P1 ;直接寻址 (P1)P2 最后结果:(R0)=38H, (A)=40H, (P0) =38H, (P1)=(P2)=0F0H, (DPTR) =3848H, (18H)=30H, (30H)=38H, (38H) =40H, (40H)=40H, (48H)=38H 注意:左边是内容,右边是单元 7、 用直接寻址,位寻址,寄存器寻址 8、 MOV A,DATA ;直接寻址 2 字节 1 周期 MOV A,#DATA ;立即数寻址 2 字节 1 周期 MOV DATA1,DATA2 ;直接寻址 3 字节 2 周期 MOV 74H,#78H ;立即数寻址 3 字节 2 周期 如果想查某一指令的机器码,字节数或周期数可 查阅书本后面的附录 A 9、 MOVA,R0 ;(R0)=80HA MOVR0,40H ;(40H)=08H(R0) MOV40H,A ;(A)=8040H MOVR0,#35H ;35HR0 最后结果:(R0)=35H (A)=80H, (32H) =08H, (40H)=80H 10、用直接寻址,位寻址,寄存器寻址 11、只能采用寄存器间接寻址(用 MOVX 指令) 12、低 128 字节:直接寻址,位寻址,寄存器间 接寻址,寄存器寻址(R0R7) 高 128 字节:直接寻址,位寻址,寄存器寻址 13、采用变址寻址(用 MOVC 指令) 14、压缩 BCD 码在进行加法运算时应逢十进一, 而计算机只将其当作十六进制数处理,此时得到 的结果不正确。用 DA A 指令调整(加 06H,60H,66H) 15、用来进行位操作 16、ANL A,#17H ;83H17H=03HA ORL 17H,A ;34H03H=37H17H XRL A,R0 ;03H37H=34H CPL A ;34H 求反等于 CBH 所以(A)=CBH 17、 (1)SETB ACC.0 或 SETB E0H ;E0H 是 累加器的地址 (2)CLR ACC.7 CLR ACC.6 CLR ACC.5 CLR ACC.4 (3)CLR ACC.6 CLR ACC.5 CLR ACC.4 CLR ACC.3 18、MOV 27H,R7 MOV 26H,R6 MOV 25H,R5 MOV 24H,R4 MOV 23H,R3 MOV 22H,R2 MOV 21H,R1 MOV 20H,R0 19、MOV 2FH,20 MOV 2EH,21 MOV 2DH,22 20、CLR C MOV A,#5DH ;被减数的低 8 位A MOV R2,#B4H ;减数低 8 位R2 SUBB A,R2 ;被减数减去减数,差A MOV 30H,A ;低 8 位结果30H MOV A,#6FH ;被减数的高 8 位A MOV R2,#13H ;减数高 8 位R2 SUBB A,R2 ;被减数减去减数,差A MOV 31H,A ;高 8 位结果30H 注意:如果在你的程序中用到了进位位,在程序 开始的时候要记得清 0 进位位 21、 (1)A10 CJNE A,#0AH,L1 ;(A)与 10 比较,不 等转 L1 LJMP LABEL ;相等转 LABEL L1:JNC LABEL ;(A)大于 10, 转 LABEL 或者: CLR C SUBB A,#0AH JNC LABEL (2)A10 CJNE A,#0AH,L1 ;(A)与 10 比较,不 等转 L1 RET ;相等结束 L1:JNC LABEL ;(A)大于 10, 转 LABEL RET ;(A)小于 10, 结束 或者: CLR C SUBB A,#0AH JNC L1 RET L1:JNZ LABEL RET (3)A10 CJNE A,#0AH,L1 ;(A)与 10 比较,不 等转 L1 L2:LJMP LABEL ;相等转 LABEL L1:JC L2 ;(A)小于 10,转 L2 RET 或者: CLR C SUBB A,#0AH JC LABEL JZ LABEL RET 22、 (SP)=23H, (PC)=3412H 参看书上 80 页 23、 (SP)=27H, (26H)=48H, (27H) =23H, (PC)=3456H 参看书上 79 页 24、不能。ACALL 是短转指令,可调用的地址范 围是 2KB。 在看这个题的时候同时看一下 AJMP 指令。同时 考虑调用指令 ACALL 和 LCALL 指令和 RET 指令的 关系。 25、 MOV R2,#31H ;数据块长度R2 MOV R0,#20H ;数据块首地址R0 LOOP:MOV A,R0 ;待查找的数据A CLR C ;清进位位 SUBB A,#0AAH ;待查找的数据是 0AAH 吗 JZ L1 ;是,转 L1 INC R0 ;不是,地址增 1,指向下一个待查数据 DJNZ R2,LOOP ;数据块长度减 1,不等于 0,继续查找 MOV 51H,#00H ;等于 0,未找到, 00H51H RET L1:MOV 51H,#01H ;找到,01H51H RET 26、 MOV R2,#31H ;数据块长度R2 MOV R0,#20H ;数据块首地址R0 LOOP:MOV A,R0 ;待查找的数据A JNZ L1 ;不为 0,转 L1 INC 51H ;为 0,00H 个数 增 1 L1:INC R0 ;地址增 1,指向下一个 待查数据 DJNZ R2,LOOP ;数据块长度减 1,不等于 0,继续查找 RET 27、 MOV DPTR,#SOURCE ;源首地址 DPTR MOV R0,#DIST ;目的首 地址R0 LOOP:MOVX A,DPTR ;传送一个字 符 MOV R0,A INC DPTR ;指向下一 个字符 INC R0 CJNE A,#24H,LOOP ;传送的 是“$”字符吗?不是,传送下一个字符 RET 28、 MOV A,R3 ;取该数高 8 位A ANL A,#80H ;取出该数符号判断 JZ L1 ;是正数,转 L1 MOV A,R4 ;是负数,将该数低 8 位A CPL A ;低 8 位取反 ADD A,#01H ;加 1 MOV R4,A ;低 8 位取反加 1 后 R4 MOV A,R3 ;将该数高 8 位A CPL A ;高 8 位取反 ADDC A,#00H ;加上低 8 位加 1 时 可能产生的进位 MOV R3,A ;高 8 位取反加 1 后 R3 L1: RET 29、 CLR C ;清进位位 C MOV A,31H ;取该数低 8 位A RLC A ;带进位位左移 1 位 MOV 31H,A ;结果存回 31H MOV A,30H ;取该数高 8 位A RLC A ;带进位位左移 1 位 MOV 30H,A ;结果存回 30H 30、 MOV R2,#04H ;字节长度R2 MOV R0,#30H ;一个加数首地址 R0 MOV R1,#40H ;另一个加数首地址 R1 CLR C ;清进位位 LOOP:MOV A,R0 ;取一个加数 ADDC A,R1 ;两个加数带进位 位相加 DA A ;十进制调整 MOV R0,A ;存放结果 INC R0 ;指向下一个字 节 INC R1 ; DJNZ R2,LOOP ;数据块长度减 1,不等于 0,继续查找 RET 31、 MOV R2,#08H ;数据块长度R2 MOV R0,#30H ;数据块目的地址 R0 MOV DPTR,#2000H ;数据块源地址 DPTR LOOP:MOVX A, DPTR ;传送一个数据 MOV R0,A INC DPTR ;指向下一个数 据 INC R0 ; DJNZ R2,LOOP ;数据块长度减 1,没传送完,继续传送 RET 32、 (1)MOV R0,0FH ;2 字节,2 周期 4 字 节 4 周期(差) MOV B,R0 ;2 字节,2 周期 (2)MOV R0,#0FH ;2 字节,1 周期 4 字节 3 周期(中) MOV B,R0 ;2 字节,2 周期 (3)MOV B,#0FH ;3 字节,2 周期 3 字节 2 周期(好) 33、 (1)功能是将片内 RAM 中 50H51H 单元清 0。 (2)7A0A (大家可以看一下书上,对于立 即数寻址的话,后面一个字节存放的是立即数) 7850 (第一个字节的后三位是寄存器,前一个 条指令是 010 也就是指的 R2,在这里是 R0,所 以应该是 78,后一个字节存放的是立即数) DAFC (这里涉及到偏移量的计算,可以参考书 上 56 页) 34、 INC R0 ;(7EH)=00H INC R0 ;(R0)=7FH INC R0 ;(7FH)=39H INC DPTR ;(DPTR)=10FFH INC DPTR ;(DPTR)=1100H INC DPTR ;(DPTR)=1101H 35、解:(1000H)=53H (1001H)=54H (1002H)=41H (1003H)=52H (1004H)=54H (1005H)=12H (1006H)=34H (1007H)=30H (1008H)=00H (1009H)=70H 36、MOV R0,#40H ;40HR0 MOV A,R0 ;98HA INC R0 ;41HR0 ADD A,R0 ;98H+(41H)=47HA INC R0 MOV R0,A ;结果存入 42H 单元 CLR A ;清 A ADDC A,#0 ;进位位存入 A INC R0 MOV R0,A ;进位位存入 43H 功能:将 40H,41H 单元中的内容相加结果放在 42H 单元,进位放在 43H 单元, (R0) =43H, (A)=1, (40H)=98H, (41H) =AFH, (42H)=47H, (43H)=01H 37、 MOV A,61H ;F2HA MOV B,#02H ;02HB MUL AB ;F2HO2H=E4HA ADD A,62H ;积的低 8 位加上 CCHA MOV 63H,A ;结果送 62H CLR A ;清 A ADDC A,B ;积的高 8 位加进 位位A MOV 64H,A ;结果送 64H 功能:将 61H 单元的内容乘 2,低 8 位再加上 62H 单元的内容放入 63H,将结果的高 8 位放在 64H 单元。 (A)=02H, (B)=01H, (61H) =F2H, (62H)=CCH, (63H)=B0H, (64H)=02H 39、MOV A,XXH ORL A,#80H MOV XXH,A 40、 (2)MOV A,XXH MOV R0,A XRL A,R0 第五章 1、什么是中断和中断系统?其主要功能是什么? 答:当 CPU 正在处理某件事情的时候,外部发生 的某一件事件请求 CPU 迅速去处理,于是,CPU 暂时中止当前的工作,转去处理所发生的事件, 中断服务处理完该事件以后,再回到原来被终止 的地方,继续原来的工作。这种过程称为中断, 实现这种功能的部件称为中断系统。功能: (1) 使计算机具有实时处理能力,能对外界 异步发生的事件作出及时的处理 (2) 完全消除了 CPU 在查询方式中的等待现 象,大大提高了 CPU 的工作效率 (3) 实现实时控制 2、试编写一段对中断系统初始化的程序,使之 允许 INT0,INT1,TO,串行口中断,且使 T0 中 断为高优先级中断。 解:MOV IE,#097H MOV IP,#02H 3、在单片机中,中断能实现哪些功能? 答:有三种功能:分时操作,实时处理,故障处 理 4、89C51 共有哪些中断源?对其中端请求如何 进行控制? 答:(1)89C51 有如下中断源 :外部中断 0 请求,低电平有效 :外部中断 1 请求,低电平有效 T0:定时器、计数器 0 溢出中断请求 T1:定时器、计数器 1 溢出中断请求 TX/RX:串行接口中断请求 (2)通过对特殊功能寄存器 TCON、SCON、IE、IP 的各位进行置位或复位等 操作,可实现各种中断控制功能 5、什么是中断优先级?中断优先处理的原则是 什么? 答:中断优先级是 CPU 相应中断的先后顺序。原 则: (1) 先响应优先级高的中断请求,再响应优 先级低的 (2) 如果一个中断请求已经被响应,同级的 其它中断请求将被禁止 (3) 如果同级的多个请求同时出现,则 CPU 通过内部硬件查询电路,按查询顺序确定应该响 应哪个中断请求 查询顺序:外部中断 0定时器 0 中断外部中 断 1定时器 1 中断串行接口中断 6、说明外部中断请求的查询和响应过程。 答:当 CPU 执行主程序第 K 条指令,外设向 CPU 发出中断请求,CPU 接到中断请求信号并在本条 指令执行完后,中断主程序的执行并保存断点地 址,然后转去响应中断。CPU 在每个 S5P2 期间 顺序采样每个中断源,CPU 在下一个机器周期 S6 期间按优先级顺序查询中断标志,如果查询到某 个中断标志为 1,将在接下来的机器周期 S1 期 间按优先级进行中断处理,中断系统通过硬件自 动将相应的中断矢量地址装入 PC,以便进入相 应的中断服务程序。中断服务完毕后,CPU 返回 到主程序第 K+1 条指令继续执行。 7、89C51 在什么条件下可响应中断? 答: (1) 有中断源发出中断请求 (2) 中断中允许位 EA=1.即 CPU 开中断 (3) 申请中断的中断源的中断允许位为 1, 即中断没有被屏蔽 (4) 无同级或更高级中断正在服务 (5) 当前指令周期已经结束 (6) 若现行指令为 RETI 或访问 IE 或 IP 指 令时,该指令以及紧接着的另一条指令已执行完 毕 8、简述 89C51 单片机的中断响应过程。 答:CPU 在每个机器周期 S5P2 期间顺序采样每 个中断源,CPU 在下一个机器周期 S6 期间按优 先级顺序查询中断标志,如查询到某个中断标志 为 1,将在接下来的机器周期 S1 期间按优先级 进行中断处理,中断系统通过硬件自动将相应的 中断矢量地址装入 PC,以便进入相应的中断服 务程序。一旦响应中断,89C51 首先置位相应的 中断“优先级生效”触发器,然后由硬件执行一 条长调用指令,把当前的 PC 值压入堆栈,以保 护断点,再将相应的中断服务的入口地址送入 PC,于是 CPU 接着从中断服务程序的入口处开始 执行。对于有些中断源,CPU 在响应中断后会自 动清除中断标志。 9、在 89C51 内存中,应如何安排程序区? 答:主程序一般从 0030H 开始,主程序后一般是 子程序及中断服务程序。在这个大家还要清除各 个中断的中断矢量地址。 10、试述中断的作用及中断的全过程。 答:作用:对外部异步发生的事件作出及时的处 理 过程:中断请求,中断响应,中断处理,中 断返回 11、当正在执行某一个中断源的中断服务程序时, 如果有新的中断请求出现,试问在什么情况下可 响应新的中断请求?在什么情况下不能响应新的 中断请求? 答:(1)符合以下 6 个条件可响应新的中断请 求: a)有中断源发出中断请求 b)中断允许位 EA=1,即 CPU 开中断 c)申请中断的中断源的中断允许位为 1,即中断 没有被屏蔽 d)无同级或更高级中断正在被服务 e)当前的指令周期已结束 f)若现行指令为 RETI 或访问 IE 或 IP 指令时, 该指令以及紧接着的另一条指令已被执行完 12、89C51 单片机外部中断源有几种触发中断请 求的方法?如何实现中断请求? 答:有两种方式:电平触发和边沿触发 电平触发方式:CPU 在每个机器周期的 S5P2 期 间采样外部中断引脚的输入电平。若为低电平, 使 IE1(IE0)置“1” ,申请中断;若为高电平, 则 IE1(IE0)清零。 边沿触发方式:CPU 在每个机器周期 S5P2 期间 采样外部中断请求引脚的输入电平。如果在相继 的两个机器周期采样过程中,一个机器周期采样 到外部中断请求为高电平,接着下一个机器周期 采样到外部中断请求为低电平,则使 IE1(IE0) 置“1”申请中断;否则,IE1(IE0)置 0。 13、89C51 单片机有五个中断源,但只能设置两 个中断优先级,因此,在中断优先级安排上受到 一定的限制。试问以下几种中断优先顺序的安排 (级别由高到低)是否可能:若可能,则应如何 设置中断源的中断级别:否则,请简述不可能的 理由。 定时器 0,定时器 1,外中断 0,外中断 1,串行口中断。 可以,MOV IP,#0AH 串行口中断,外中断 0,定时器 0,外中 断 1,定时器 1。 可以,MOV IP,#10H 外中断 0,定时器 1,外中断 1,定时器 0,串行口中断。 不可以,只能设置一级高级优先级,如果将 INT0,T1 设置为高级,而 T0 级别 高于 INT1. 外中断 0,外中断 1,串行口中断, 定 时器 0,定时器 1 。 可以,MOV IP,#15H 串行口中断,定时器 0,外中断 0,外中 断 1,定时器 1。 不可以 外中断 0,外中断 1,定时器 0,串行口 中断,定时器 1 。 不可以 外中断 0,定时器 1,定时器 0,外中断 1,串行口中断。 可以,MOV IP,#09H 14、89C51 各中断源的中断标志是如何产生的? 又是如何清 0 的?CPU 响应中断时,中断入口地 址各是多少? 答:各中断标志的产生和清“0”如下: (1) 外部中断类 外部中断是由外部原因引起的,可以通过两个固 定引脚,即外部中断 0 和外部中断 1 输入信号。 外部中断 0 请求信号,由 P3.2 脚输入。通过 IT0 来决定中断请求信号是低电平有效还是下跳 变有效。一旦输入信号有效,则向 CPU 申请中断, 并且使 IE0=1。硬件复位。 外部中断 1 请求信号,功能与用法类似外部中断 0 (2) 定时中断类 定时中断是为满足定时或计数溢出处理需要而设 置的。当定时器/计数器中的计数结构发生计数 溢出的,即表明定时时间到或计数值已满,这时 就以计数溢出信号作为中断请求,去置位一个溢 出标志位。这种中断请求是在单片机芯片内部发 生的,无需在芯片上设置引入端,但在计数方式 时,中断源可以由外部引入。 TF0:定时器 T0 溢出中断请求。当定时器 T0 产 生溢出时,定时器 T0 请求标志 TF0=1,请求中 断处理。使用中断时由硬件复位,在查询方式下 可由软件复位。 TF1:定时器 T1 溢出中断请求。功能与用法类似 定时器 T0 (3) 串行口中断类 串行口中断是为串行数据的传送需要而设置的。 串行中断请求也是在单片机芯片内部发生的,但 当串行口作为接收端时,必须有一完整的串行帧 数据从 RI 端引入芯片,才可能引发中断。 RI 或 TI:串行口中断请求。当接收或发送一串 帧数据时,使内部串行口中断请求标志 RI 或 TI=1,并请求中断。响应后必须软件复位。 CPU 响应中断时,中断入口地址如下: 中断源 入口地址 外部中断 0 0003H 定时器 T0 中断 000BH 外部中断 1 0013H 定时器 T1 中断 001BH 串行口中断 0023H 15、中断响应时间是否为确定不变的?为什么? 答:中断响应时间不是确定不变的。由于 CPU 不 是在任何情况下对中断请求都予以响应的;此外, 不同的情况对中断响应的时间也是不同的。下面 以外部中断为例,说明中断响应的时间。 在每个机器周期的 S5P2 期间, 端的电平被所存 到 TCON 的 IE0 位,CPU 在下一个机器周期才会 查询这些值。这时满足中断响应条件,下一条要 执行的指令将是一条硬件长调用指令“LCALL” , 使程序转入中断矢量入口。调用本身要用 2 个机 器周期,这样,从外部中断请求有效到开始执行 中断服务程序的第一条指令,至少需要 3 个机器 周期,这是最短的响应时间。 如果遇到中断受阻的情况,这中断响应时间会更 长一些。例如,当一个同级或更高级的中断服务 程序正在进行,则附加的等待时间取决于正在进 行的中断服务程序:如果正在执行的一条指令还 没有进行到最后一个机器周期,附加的等待时间 为 13 个机器周期;如果正在执行的是 RETI 指 令或者访问 IE 或 IP 的指令,则附加的等待时间 在 5 个机器周期内。 若系统中只有一个中断源,则响应时间为 38 个 机器周期。 16、中断响应过程中,为什么通常要保护现场? 如何保护? 答:因为一般主程序和中断服务程序都可能会用 到累加器,PSW 寄存器及其他一些寄存器。CPU 在进入中断服务程序后,用到上述寄存器时,就 会破坏它原来存在寄存器中的内容;一旦中断返 回,将会造成主程序的混乱。因而在进入中断服 务程序后,一般要先保护现场,然后再执行中断 处理程序,在返回主程序以前再恢复现场。 保护方法一般是把累加器、PSW 寄存器及其他一 些与主程序有关的寄存器压入堆栈。在保护现场 和恢复现场时,为了不使现场受到破坏或者造成 混乱,一般规定此时 CPU 不响应新的中断请求。 这就要求在编写中断服务程序时,注意在保护现 场之前要关中断,在恢复现场之后开中断。如果 在中断处理时允许有更高级的中断打断它,则在 保护现场之后再开中断,恢复现场之前关中断。 17、清叙述中断响应的 CPU 操作过程,为什么说 中断操作是一个 CPU 的微查询过程? 答:在中断响应中,CPU 要完成以下自主操作过 程: a) 置位相应的优先级状态触发器,以标明所响 应中断的优先级别 b) 中断源标志清零 (TI、RI 除外) c) 中断断点地址装入堆栈保护(不保护 PSW) d) 中断入口地址装入 PC,以便使程序转到中断 入口地址处 在计算机内部,中断表现为 CPU 的微查询操作。 89C51 单片机中,CPU 在每个机器周期的 S6 状态, 查询中断源,并按优先级管理规则处理同时请求 的中断源,且在下一个机器周期的 S1 状态中, 响应最高级中断请求。 但是以下情况除外: a) CPU 正在处理相同或更高优先级中断 b)多机器周期指令中,还未执行到最后一个机器 周期 c) 正在执行中断系统的 SFR 操作,如 RETI 指令 及访问 IE、IP 等操作时,要延后一条指令 18、在中断请求有效并开中断状况下,能否保证 立即响应中断?有什么条件? 答:在中断请求有效并开中断状况下,并不能保 证立即响应中断。这是因为,在计算机内部,中 断表现为 CPU 的微查询操作。89C51 单片机中, CPU 在每个机器周期的 S6 状态下,查询中断源, 并按优先级管理规则处理同时请求的中断源,且 在下一个机器周期的 S1 状态中,响应最高级中 断请求。 在以下情况下,还需要有另外的等待: a) CPU 正在处理相同或更高优先级中断 b) 多机器周期指令中,还未执行到最后一个机 器周期 c)正在执行中断系统的 SFR 操作,如 RETI 指令 及访问 IE、IP 等操作时,要延后一条指令 第 6 章习题答案 1、定时器模式 2 有什么特点?适用于什么场合? 答:(1)模式 2 把 TL0(或 TL1)配置成一个可以 自动重装载的 8 位定时器/计数器。TL0 计数溢 出时不仅使溢出中断标志位 TF0 置 1,而且还自 动把 TH0 中的内容重新装载到 TL0 中。TL0 用作 8 位计数器,TH0 用以保存初值。 (2)用于定时工作方式时间(TF0 溢出周期) 为 ,用于计数工作方式时,最大计数长度(TH0 初值=0)为 28=256 个外部脉冲。 这种工作方式可省去用户软件重装初值的语句, 并可产生相当精确定时时间,特别适于作串行波 特率发生器。 2、单片机内部定时方式产生频率为 100KHZ 等宽 矩形波,假定单片机的晶振频率为 12MHZ,请编 程实现。 答: T0 低 5 位:1BH T0 高 8 位:FFH MOV TMOD,#00H ;设置定时器 T0 工作于模式 0 MOV TL0,#1BH ;设置 5ms 定时初值 MOV TH0,#0FFH SETB TR0 ;启动 T0 LOOP:JBC TF0,L1;查询到定时时间到?时间到 转 L1 SJMP LOOP ;时间未到转 LOOP,继续查 询 L1:MOV TL0,#1BH;重新置入定时初值 MOV TH0,#0FFH CPL P1.0 ;输出取反,形成等宽矩形波 SJMP LOOP ;重复循环 3、89C51 定时器有哪几种工作模式?有何区别? 答:有四种工作模式:模式 0,模式 1,模式 2,模式 3 (1) 模式 0:选择定时器的高 8 位和低 5 位 组成一个 13 位定时器/计数器。TL 低 5 位溢出 时向 TH 进位,TH 溢出时向中断标志位 TF 进位, 并申请中断。 定时时间 t=(213-初值)振荡周期12;计数 长度位 213=8192 个外部脉冲 (2) 模式 1:与模式 0 的唯一差别是寄存器 TH 和 TL 以全部 16 位参与操作。定时时间 t=(216-初值)振荡周期12;计数长度位 216=65536 个外部脉冲 (3) 模式 2:把 TL0 和 TL1 配置成一个自动 重装载的 8 位定时器/计数器。TL 用作 8 位计数 器,TH 用以保存初值。TL 计数溢出时不仅使 TF0 置 1,而且还自动将 TH 中的内容重新装载到 TL 中。 定时时间 t=(28-初值)振荡周期12;计数长 度位 28=256 个外部脉冲 (4) 模式 3:对 T0 和 T1 不大相同 若设 T0 位模式 3,TL0 和 TH0 被分为两个相互独 立的 8 位计数器。TL0 为 8 位计数器,功能与模 式 0 和模式 1 相同,可定时可计数。 TH0 仅用作简单的内部定时功能,它占用了定时 器 T1 的控制位 TR1 和中断标志位 TF1,启动和 关闭仅受 TR1 控制。 定时器 T1 无工作模式 3,但 T0 在工作模式 3 时 T1 仍可设置为 02。 4、89C51 内部设有几个定时器/计数器?它们是 由哪些特殊功能寄存器
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度内衣品牌营销推广合同3篇
- 2024年新型电动汽车租赁合同争议解决起诉状范本模板3篇
- 2024年借款终止与结算协议3篇
- 2024年度房产买卖合同标的物详细描述3篇
- 2024年度东莞市房产租赁合同及附属装修改造协议3篇
- 2024年商业店铺出租合同文本3篇
- 2024年度投标项目顾问服务协议版B版
- 吉林体育学院《电路分析基础(1)》2023-2024学年第一学期期末试卷
- 2024年度汽车改装贷款担保协议书3篇
- 2024年施工企业节能减排合同台账范本3篇
- 2023年北京肿瘤医院(含社会人员)招聘笔试真题
- 能源管理总结报告
- 2024年时事政治试题库
- 2024-2025学年统编版五年级语文上册第七单元达标检测卷(原卷+答案)
- 旅行社分店加盟协议书(2篇)
- 城镇燃气经营安全重大隐患判定及燃气安全管理专题培训
- 个人和企业间资金拆借合同
- 重大火灾隐患判定方法
- 银行岗位招聘笔试题及解答(某大型央企)2024年
- 2024年《浙江省政治学考必背内容》(修订版)
- JJF(京) 3031-2024 高精度数字温度计校准规范
评论
0/150
提交评论