1、第一章1.单片机具有哪些特点(1)片内存储容量越来越大。(2 抗干扰性好,可靠性高。(3)芯片引线齐全,容易扩展。(4)运行速度高,控制功能强。(5)单片机内部的数据信息保存时间很长,有的芯片可以达到 100 年以上。2. 89C51 单片机内包含哪些主要逻辑功能部件?答:80C51 系列单片机在片内集成了以下主要逻辑功能部件:(l)CPU(中央处理器):8 位(2)片内 RAM:128B(3)特殊功能寄存器:21 个(4)程序存储器:4KB(5)并行 I/O 口:8 位,4 个(6)串行接口:全双工,1 个(7)定时器/计数器:16 位,2 个(8)片内时钟电路:1 个3.什么是微处理器(C
2、PU)、微机和单片机?答:微处理器本身不是计算机,但它是小型计算机或微机的控制和处理部分。微机则是具有完整运算及控制功能的计算机,除了微处理器外还包括存储器、接口适配器以及输入输出设备等。单片机是将微处理器、一定容量的 RAM、ROM 以及 I/O 口、定时器等电路集成在一块芯片上,构成的单片微型计算机。4. 微型计算机怎样执行一个程序?答:通过 CPU 指令,提到内存当中,再逐一执行。5.什么是嵌入式系统?他有哪些类型?为什么说单片机是典型的嵌入式系统?答; 嵌入式系统是将先进的计算机技术、半导体技术和电子技术和各个行业的具体应用相结合后的产物,这一点就决定了它必然是一个技术密集、资金密集、
3、高度分散、不断创新的知识集成系统。它有嵌入式微处理器、嵌入式微控制器、嵌入式 DSP 处理器、嵌入式片上系统等。嵌入式系统的出现最初是基于单片机的。它从体系结构到指令系统都是按照嵌入式应用特点专门设计的,能最好的满足面对控制对象,应运系统的嵌入、现场的可靠运行以及非凡的控制品质要求。因此,她是典型的嵌入式系统。第二章1.89C51 单片机内包含哪些主要逻辑功能部件?答:80C51 系列单片机在片内集成了以下主要逻辑功能部件:(l)CPU(中央处理器):8 位(2)片内 RAM:128B(3)特殊功能寄存器:21 个(4)程序存储器:4KB(5)并行 I/O 口:8 位,4 个(6)串行接口:全
4、双工,1 个(7)定时器/计数器:16 位,2 个(8)片内时钟电路:1 个2.89C51 的 EA 端有何用途?答:/EA 端接高电平时,CPU 只访问片内 并执行内部程序,存储器。/EA 端接低电平时,CPU 只访问外部 ROM,并执行片外程序存储器中的指令。/EA 端保持高电平时,CPU 执行内部存储器中的指令。3. 89C51 的存储器分哪几个空间?如何区别不同空间的寻址?答:ROM(片内 ROM 和片外 ROM 统一编址)(使用 MOVC)(数据传送指令)(16bits地址)(64KB) 片外 RAM(MOVX)(16bits 地址)(64KB) 片内 RAM(MOV)(8bits
5、 地址)(256B)4. 简述 89C51 片内 RAM 的空间分配。答:片内 RAM 有 256B 低 128B 是真正的 RAM 区 高 128B 是 SFR(特殊功能寄存器)区 5. 简述布尔处理存储器的空间分配,片内 RAM 中包含哪些可位寻址单元。答:片内 RAM 区从 00HFFH(256B) 其中 20H2FH(字节地址)是位寻址区 对应的位地址是 00H7FH6. 如何简捷地判断 89C51 正在工作?答:用示波器观察 8051 的 XTAL2 端是否有脉冲信号输出(判断震荡电路工作是否正常?) ALE(地址锁存允许)(Address Latch Enable)输出是 fosc
6、 的 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 口用作通
7、用/口输入时,若通过 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 口结构
8、有何不同?用作通用/口输入数据时,应注意什么?答:P0 口内部没有上拉电阻,可以用做 16 位地址的低 8 位;P3 有第二功能;P2 口可以用做 16 位地址的高 8 位;需要上拉电阻。OC 门电路无法输出高低电平,只有靠上拉电阻才能实现11. 89C51 单片机的信号有何功能?在使用 8031 时,信号引脚应如何处理?答:(1)80C51 单片机的 EA 信号的功能EA 为片外程序存储器访问允许信号,低电平有效;在编程时,其上施加 21V 的编程电压EA 引脚接高电平时,程序从片内程序存储器开始执行,即访问片内存储器;EA 引脚接低电平时,迫使系统全部执行片外程序存储器程序。(2)在使用
9、80C31 时,EA 信号引脚的处理方法因为 80C31 没有片内的程序存储器,所以在使用它时必定要有外部的程序存储器,EA 信号引脚应接低电平。12. 89C51 单片机有哪些信号需要芯片引脚以第 2 功能的方式提供?答: 第一功能 第二功能串行口:P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)中断:P3.2 INT0 外部中断 0P3.3 INT1 外部中断 1定时器/计数器(T0、T1):P3.4 T0(定时器/计数器 0 的外部输入)P3.5 T1(定时器/计数器 1 的外部输入)数据存储器选通:P3.6 WR(外部存储器写选通,低电平有效,输出)P3.7 RD(外部存储
10、器读选通,低电平有效,输出)定时器/计数器(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 个字节单元,共
11、包含 128 位,是可位寻址的 RAM 区。这 16 个字节单元,既可进行字节寻址,又可实现位寻址。(3)字节寻址区(30H7FH)从内部数据 RAM 区的 48127(30H7FH),共 80 个字节单元,可以采用间接字节寻址的方法访问。14. 使单片机复位有几种方法?复位后机器的初始状态如何?答:(1)单片机复位方法单片机复位方法有:上电自动复位、按键电平复位和外部脉冲三种方式,如题图2-1 所示。题图 2-1(2)复位后的初始状态复位后机器的初始状态,即各寄存器的状态:PC 之外,复位操作还对其他一些特殊功能寄存器有影响,它们的复位状态如题表 2-1 所例15. 开机复位后,CPU 使用
12、的是哪组工作寄存器?它们的地址是什么?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 赋值。(最
13、后一问同题 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(奇偶校验
14、位)17. 位地址 7CH 与字节地址 7CH 如何区别?位地址 7CH 具体在片内 RAM 中的什么位置?答:用不同的寻址方式来加以区分,即访问 128 个位地址用位寻址方式,访问低 128字节单元用字节寻址和间接寻址。具体地址为 2F 的第五位,即为 7C。18. 89C51 单片机的时钟周期与振荡周期之间有什么关系?什么叫机器周期和指令周期?答:时钟信号的周期称为机器状态周期,是振荡周期的两倍。一个机器周期是指 CPU访问存储器一次所需的时间。指令周期是执行一条指令所需的时间。19. 一个机器周期的时序如何划分?答:一个机器周期=12 个震荡周期=6 个时钟周期(状态周期) S1P1,S
15、1P2,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 指令自行保存,因
16、此 SP的作用就是一个指针,当进行中断调用,子函数调用时将现场数据压入 SP 所指向的存储器,SP 自动增加 1 或 2,当中断结束 RETI,调用返回 RET,POP 时将 SP 数据弹出,SP 自动减 1 或,28051 最大为 128 字节的片内存储器,0X20 以上理论都可以做堆栈用 96 字节,8052 为256 字节 224 字节可用,但这样便没有其它空间可用于数据存储现在的单片机的程序一般都能用 C51 来,不用关心堆栈大小与 SP 寄存器21. 89C51 有几种低功耗方式?如何实现?答:空闲方式和掉电方式空闲方式和掉电方式是通过对 SFR 中的 PCON(地址 87H)相应位
17、置 1 而启动的。当 CPU 执行完置 IDL=1(PCON.1)的指令后,系统进入空闲工作方式。这时,内部时钟不向 CPU 提供,而只供给中断、串行口、定时器部分。CPU 的内部状态维持,即包括堆栈指针 SP、程序计数器 PC、程序状态字 PSW、累加器 ACC 所有的内容保持不变,端口状态也保持不变。ALE 和 PSEN 保持逻辑高电平。当 CPU 执行一条置 PCON.1 位(PD)为 1 的指令后,系统进入掉电工作方式。在这种工作方式下,内部振荡器停止工作。由于没有振荡时钟,因此,所有的功能部件都停止工作。但内部 RAM 区和特殊功能寄存器的内容被保留,而端口的输出状态值都保存在对应的
18、 SFR 中,ALE 和 PSEN 都为低电平。22. PC 与 DPTR 各有哪些特点?有何异同?答:(1)程序计数器 PC 作为不可寻址寄存器的特点程序计数器 PC 是中央控制器申最基本的寄存器,是一个独立的计数器,存放着下一条将程序存储器中取出的指令的地址。程序计数器 PC 变化的轨迹决定程序的流程。程序计数器的宽度决定了程序存储器可以寻址的范围。程序计数器 PC 的基本工作方式有:程序计数器 PC 自动加 1。这是最基本的工作方式,也是这个专用寄存器被称为计数器的原因。执行条件或无条件转移指令时,程序计数器将被置入新的数值,程序的流向发生变化。变化的方式有下列几种:带符号的相对跳转 S
19、JMP、短跳转 AJMP、长跳转 LJMP 及 JMP A+DPTR 等。在执行调用指令或响应中断时:PC 的现行值,即下一条将要执行的指令的地址送入堆栈,加以保护;将子程序的入口地址或者中断矢量地址送入 PC,程序流向发生变化,执行子程序或中断服务程序;子程序或中断服务程序执行完毕,遇到返回指令 RET 或 RETI 时,将栈顶的内容送到 PC 寄存器中,程序流程又返回到原来的地方,继续执行。(2)地址指针 DPTR 的特点地址指针 DPTR 的特点是,它作为片外数据存储器寻址用的地址寄存器(间接寻址)。(3)地址指针 DPTR 与程序计数器 PC 的异同相同之处:两者都是与地址有关的、16
20、 位的寄存器。其中,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
21、 DPTP。23. 89C51 端口锁存器的“读修改写”操作与“读引脚”操作有何区别?答:指令系统中有些指令读锁存器的值, 有些指令则读引脚上的值。读锁存器指令是从锁存器中读取一个值并进行处理, 把处理后的值(原值或已修改后的值)重新写入锁存器中。这类指令称为读-修改-写指令。对于读-修改-写指令。直接读锁存器而不是读端口引脚, 是因为从引脚上读出的数据不一定能真正反映锁存器的状态。单片机原理及接口技术课后习题答案第三章1、 指令:CPU 根据人的意图来执行某种操作的命令指令系统:一台计算机所能执行的全部指令集合机器语言:用二进制编码表示,计算机能直接识别和执行的语言汇编语言:用助记符、符号和
22、数字来表示指令的程序语言高级语言:独立于机器的,在编程时不需要对机器结构及其指令系统有深入了解的通用性语言2、 见第 1 题3、简述 8951 的汇编指令格式。答: 操作码 目的操作数 ,源操作数4、简述 8951 的寻址方式和所能涉及的寻址空间。 寻址方式 寻址空间立即数寻址 程序存储器 ROM直接寻址 片内 RAM 低 128B、特殊功能寄存器寄存器寻址 工作寄存器 R0-R7、A、B、C、DPTR寄存器间接寻址 片内 RAM 低 128B、片外 RAM变址寻址 程序存储器(A+PC,A+DPTR)相对寻址 程序存储器 256B 范围(PC+偏移量)位寻址 片内 RAM 的 20H-2FH
23、 字节地址、部分 SFR5、访问特殊功能寄存器和外数据存储器,应采用那些寻址方式?答: SFR:直接寻址,位寻址,寄存器寻址;片外 RAM:寄存器间接寻址6、8951 中已知(30H)=38H,请分析以下各是什么指令,说明源操作数的寻址方式以及执行结果。MOV A,40H ;直接寻址(40H)AMOV R0,A;寄存器寻址(A)R0MOV P1,#0F0H ;立即数寻址 0F0P1MOV R0,30H;直接寻址(30H) (R0)MOV DPTR,#3848H;立即数寻址 3848HDPTRMOV 40H,38H;直接寻址 (38H) 40HMOV R0,30H;直接寻址 (30H) R0MO
24、V P0,R0;寄存器寻址( R0 )P0MOV 18H,#30H ;立即数寻址 30H18HMOV A,R0 ;寄存器间接寻址 (R0) AMOV 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、8951 片内高 128 字节的地址寻址要注意什么/?答: 用直接寻址,位寻址,寄存器寻址8、指出些列指令的本质? MOV A,DATA ;直接寻址
25、 2 字节 1 周期MOV A,#DATA ;立即数寻址 2 字节 1 周期MOV DATA1,DATA2 ;直接寻址 3 字节 2 周期MOV 74H,#78H ;立即数寻址 3 字节 2 周期如果想查某一指令的机器码,字节数或周期数可查阅书本后面的附录 A9、设 R0 的内容分为 32H,A 的内容为 48H, 。 。 。 。请指出在执行下列程序段后上述各单元内容的变化?MOV A,R0 ;(R0)=80HAMOV R0,40H ;(40H)=08H(R0)MOV 40H,A ;(A)=8040HMOV R0,#35H ;35HR0最后结果:(R0)=35H (A)=80H, (32H)=
26、08H, (40H)=80H10、如何访问 SFR,可采用那些寻址方式?答:用直接寻址,位寻址,寄存器寻址11、如何访问片外 RAM,可使用那些寻址方式?答:只能采用寄存器间接寻址(用 MOVX 指令)12、如何访问片内 RAM,可使用那些寻址方式?答:低 128 字节:直接寻址,位寻址,寄存器间接寻址,寄存器寻址(R0R7)高 128 字节:直接寻址,位寻址,寄存器寻址13、如何访问片内外程序存储器,可使用那些寻址方式?答:采用变址寻址(用 MOVC 指令)14、说明十进制调整的原因和方法?答:压缩 BCD 码在进行加法运算时应逢十进一,而计算机只将其当作十六进制数处理,此时得到的结果不正确
27、。用 DA A 指令调整(加 06H,60H,66H)15、说明 8951 布尔机处理机功能?答:用来进行位操作16、ANL A,#17H ;83H17H=03HAORL 17H,A ;34H03H=37H17HXRL A,R0 ;03H37H=34HCPL A ;34H 求反等于 CBH所以(A)=CBH17、 (1)SETB ACC.0 或 SETB E0H ;E0H 是累加器的地址(2)CLR ACC.7CLR ACC.6CLR ACC.5CLR ACC.4(3)CLR ACC.6CLR ACC.5CLR ACC.4CLR ACC.3 18、MOV 27H,R7MOV 26H,R6MOV
28、 25H,R5MOV 24H,R4MOV 23H,R3MOV 22H,R2MOV 21H,R1MOV 20H,R019、MOV 2FH,20MOV 2EH,21MOV 2DH,2220、编程,进行两个 16 位数的减法:6F5DH-13B4H,结果存入内部 RAM 的 30 和 31H 单元,30H 存低八位。CLR CMOV A,#5DH ;被减数的低 8 位AMOV R2,#B4H ;减数低 8 位R2SUBB A,R2 ;被减数减去减数,差AMOV 30H,A ;低 8 位结果30HMOV A,#6FH ;被减数的高 8 位AMOV R2,#13H ;减数高 8 位R2SUBB A,R2
29、 ;被减数减去减数,差AMOV 31H,A ;高 8 位结果30H注意:如果在你的程序中用到了进位位,在程序开始的时候要记得清 0 进位位21、编程,若累加器 A 满足下列条件,则程序转至 LABEL 存储单元,设 A 中为无符号数。(1)A10CJNE A,#0AH,L1 ;(A)与 10 比较,不等转 L1LJMP LABEL ;相等转 LABELL1:JNC LABEL ;(A)大于 10,转 LABEL或者:CLR CSUBB A,#0AHJNC LABEL(2)A10CJNE A,#0AH,L1 ;(A)与 10 比较,不等转 L1RET ;相等结束L1:JNC LABEL ;(A)大于 10,转 LABELRET ;(A)小于 10,结束或者:CLR CSUBB A,#0AHJNC L1RETL1:JNZ LABEL