内容发布更新时间 : 2024/11/5 5:19:49星期一 下面是文章的全部内容请认真阅读。
《单片机原理及应用》复习提纲
一、内容提要 第一章 基础知识
1. 有符号数、无符号数、字符在计算机内部的存储方式。 2. 数制间转换(16进制、10进制、2进制)及表示方式。 3. 有符号数的原码、反码及补码。
4. 单片机的概念及特点(理解,不需要死记硬背书本上的词句) 5.8位单片机的种类、型号、性能及应用场合(了解) 第二章 基本原理
1. 51/52系列单片机的片内资源; 2. 51内部结构
3. CPU部件理解:程序状态字 PSW 的作用、内容 4. 存储器结构
内部RAM(地址范围:00H~FFH) 四个区域(工作寄存器区、位寻址区、通用区、SFR区[SFR区包括哪些系统寄存器])的特点及用途、访问方式;
注意:堆栈区存在于RAM内不是一个固定的区域,其栈顶地址由SP的内容指定,上电复位后指向07H(即第0组工作寄存器R7所在地址);程序内可将其指向RAM内任意地址。 AVR的堆栈是向下增长的(内容增加一个单元,地址减1),而MCS51的堆栈是向上增长的(内容增加,地址加1)。 内部ROM(地址范围:31系列:无;51系列:0000H~0FFFH;52系列:0000H~1FFFH) 5.程序计数器:PC的作用,PC是独立于内部RAM的一个16位存储单元。
6. 并行口的内部结构图2.6~2.9, 注意该电路内部总线与并口内部寄存单元连接(位于内部RAM的SFR区),外部与引脚相连。
7.外部引脚:ALE, PSEN, RST, EA 等引脚的功能、作用
第三章 汇编程序设计 (重点)
1. 熟悉全部指令、功能及对相关寄存器的影响,汇编语言编程将作为主要考核编程语言。
2. 寻址方式——寻址方式即运算时,从什么地方、怎样找到数据所在内存单元(比如通过寄存器名称找到,称为寄存器寻址;直接立即数赋值,称为立即寻址??)
3. 常用伪指令:什么叫做汇编伪指令?伪指令与51指令集有什么区别?
注意:C语言内没有伪指令这种说法,因为C是编译器自动为用户声明的变量分配内存空间的;而汇编语言编程时,我们必须指定程序、数据所位于内存中的位置,因此需要伪指令辅助编程。
可以这样看;伪指令是仅仅供汇编器将汇编代码翻译成二进制代码时确定二进制代码存放位置而使用的语句,而这些代码不被传送至单片机ROM,也不被单片机所执行 4. 程序设计
三种基本结构的编程:顺序、循环、分支。灵活使用三种结构实现实际所需的目标。
第4章、第5章
公平起见,与3班一样,此章不做考核要求,但编程题使用C语言作答,只要程序正确,同样给分。
第6章 内部资源 1. 并行口的输入输出
2. 定时/计数器的编程:相关控制寄存器、初始化,定时/计数初值的计算。
3. 中断系统:理解中断系统的工作过程;理解中断源、中断向量、中断优先级的含义;掌握中断服务子程序的基本编写方法。
4. 串行口:相关控制寄存器内容、作用;串行口的几种工作方式;串行波特率的计算。 5. 综合应用:例如定时中断程序,需要初始化定时器及中断寄存器等。
第7章 常用外部接口
1. 最小系统的概念:能让单片机正常工作的最小规模的电路
2. 外部存储器的扩展:尽管存储器的扩展在实际应用中并不常用到,但是理解存储器的扩展对于理解单片机的外部三总线结构相当有好处。
存储器扩展(也是其他芯片扩展)的两种常见方案:线选法、译码器法(各自优缺点) 控制总线:用于选通外部芯片或为外部芯片提供时钟信号、控制信号 数据总线:8位,用于在单片机和外部芯片间传递并行数据
地址总线:16位,用于选中需要访问的存储器单元;在其他芯片的扩展中,常常将地址总线上的高位与芯片选通引脚相连,这样,我们可以给外部芯片拟定硬件地址,例如P2.7 与外部芯片的CE端相连,则只要最高地址位为0就可以选通该芯片。
3. 8255A的接口设计
第8章 A/D,D/A转换器接口(必考)
本章内容在自动化控制领域使用很广泛,因此还是纳入考核范围,我们一共讲解了两个型号的芯片: 1. ADC0809的功能、性能参数、引脚、与单片机间的连接及编程等。
2. DAC0832的功能、性能参数、引脚、与单片机间的连接及编程等。如何确定DAC0832的硬件地址?如何使用DAC0832编制任意波形输出程序?
第9章~第12章
随着今后大家不断的与单片机打交道,慢慢会意识到这些章节的内容其实很重要,本次考试不做要求。这些内容大家在未来与单片机相关的课程设计、毕业设计中会频繁使用。
二、试卷题型
1. 2. 3. 4. 5. 6.
简答题:32% 问答题:12% 简单编程题:16%
依图示电路编程题:10% 硬件扩展题:14% 综合应用设计题:16%
三、参考习题(注意:习题不作为期末考试内容,仅提供题型的示例):
一.填空题
1. 单片机与普通计算机的不同之处在于其将 , 和 三部分集成于一块芯片上。 答:CPU、存储器、I/O口
2. 在MCS-51单片机中,如果采用6MHz晶振,1个机器周期为 . 答:2us。
3. 有符号数-70 的二进制原码为 11000110 B ,反码: 10111001 B , 补码 10111010 B
4. 如果(TOMD)=2FH,则T1为 定时 器,其工作在工作方式 2 下。
5. 当P1口做输入口输入数据时,引脚一般处于高阻态,因此必须先向该端口的锁存器送数据 1 ,使内部元件VT1 截止 ,否则读取输入数据可能出错。
二、判断题
1. 8031与8051的区别之处在于内部RAM的容量不一样。 ( × )
解析:8031与8051的区别在于8031无片内ROM,而8051有4KB的内部ROM,而RAM的容量并无区别,因此错误。 2. 程序计数器PC不能为用户编程时直接使用,因为它没有地址 ( √ )
解析:16位寄存器PC独立于单片机的RAM区而单独存在,因此我们无法直接使用诸如 MOV PC,#XXXXH之类的寻址指令对其访问。
改变PC值的指令只有跳转指令和堆栈指令、另外在中断发生时PC的内容会被置为相应的中断向量地址。 3.内部RAM的位寻址区,只能供位寻址使用,而不能供字节寻址使用。( × )
解析:内部RAM的位寻址区位于20H~2FH单元(每个单元有8位,共16单元*8位=128bits),各位又分配了一个独立于单元地址的位地址 位寻址范围为00H~FFH(注意每个地址对应的是1位二进制数)。当使用位寻址指令时,如MOV C,09H时,09H表示的是一个位地址,该位为21H单元中的次低位,如下图所示。 单元地址 20H 20H 07H 0FH 06H 0EH 05H 0DH 04H 0CH 位地址 03H 0BH 02H 0AH 01H 09H 00H 08H ?? ?? 该区即可以当做通用Ram单元用直接地址访问(MOV 21H,A)也可以用位寻址访问。因此题中所述内容错误 4. 8031共有21个特殊功能寄存器,它们的位都是可以用软件设置的,因此,是可以进行位寻址的。( × ) 解析:自行查阅课本P19页的SFR区, 表2.4(位于内部RAM 80H~FFH范围内),注意有部分特殊寄存器(例如TH0,TL0)是不提供位寻址的,凡是“位地址与位名称”下内容为空白的寄存器均不提供位寻址地址,因此该题错误。 5. 判断下列指令的正误 ORG 0000H
AJMP MAIN ( × ) ORG 0900H
MAIN: MOV R7, 23H ( √ ) MOVX A,@R7 ( × ) ?? ?? RET
解析:(1)相对跳转指令AJMP可跳转的范围为:取出当前指令后PC内容(即指令所在单元地址+2)所在的2KB地址范围内。显然,本题AJMP指令位于0000H,取指后PC内容为0002H,其寻址范围为ROM内的:0000H~07FFH 单元。而MAIN标号对应地址为0900H大于该范围,因此该语句错误;
(2)该语句的意思是将片内RAM 23H单元的内容(注意,尽管23H里面存的数据是多少读这一句时我们不知道,但不影响该语句的正确性)送至R7,因此该指令是正确的。
(3)寄存器间址寻址只能使用R0和R1,这里使用R7来间址寻址,显然是错误的。
三、程序阅读题
已知程序执行前有A=02H,SP=52H,(51H)=FFH,(52H)=FFH。下述程序执行后:
POP DPH ; 52H单元存放的内容FFH放入DPH,(SP)-1=51H POP DPL ; 51H单元存放的内容FFH放入DPH,(SP)-1=50H MOV DPTR,#4000H ; (DPH)=40H; (DPL)=00H RL A ; (ACC)=04H (左移相当于乘2) MOV B,A ; (B)=04H MOVC A,@A+DPTR ; 变址寻址单元为(04H+4000H=4004H)内容放入A ;查程序末尾的数据表可知 (ACC)= 30H PUSH A ; (SP)+1=51H,将#30H推入堆栈 51H单元 MOV A,B ; (B)? (ACC) = 04H INC A ; (ACC) = 05H MOVC A,@A+DPTR ; 同上查表,得到4005H单元内容 PUSH A ; (SP)+1=52H,将 #50H推入堆栈区
RET ; 返回指令执行时,将堆栈顶部的2字节内容恢复至PC ; 先弹栈顶数50H到PCH,再弹30H到PCL因此此时PC=
;(5030)
ORG 4000H DB 10H,80H,30H,50H,30H,50H 请问:A=( ),SP=( ),(51H)=( ),(52H)=( ),PC=( )。
此类题目不要着急作答,先对程序进行阅读理解,每句话写上注释,注释内容包括指令操作影响的寄存器内容,本例注释参见程序中蓝色部分。
根据上述分析,不难得出结果:
答:A=50H , SP=50H , (51H)=30H , (52H)=50H , PC=5030H
四、简答题
1. 片内RAM低128个单元划分为哪3个主要部分?各部分的主要功能是什么?
答:片内RAM低128个单元主要包括工作寄存器区、位寻址区、通用区三个部分。(主要功能自行查阅书本相关章节作答)
(简答题仅举此一例,主要注重对相关内容的理解,不需要长篇背诵书本中定义,按自己的理解答题最佳。此外,注意理解题目意思,如本题只问道低128单元,即00H~7FH),不包括SFR区(80H~FFH),因此列举出3个区的类型,及相应作用即可。
五、编程题
1. 设晶振为12MHz请利用定时标志查询法编制一段20分钟的定时程序,20分钟定时时间到后P1口外接的8盏共阳极LED小灯开始闪烁。 答案:略
解题思路:注意题目要求用查询方法,即对TF0(1)进行位查询的方法编程。
注意定时中断法是如何实现同样的功能,与查询有何不同。请自行编制程序练习,并用Keil调试
2. 8255A外接12盏小灯,请编写流水灯程序。
解题思路:1、 注意8255A的口地址编制及小灯具体接在A,B,C哪个口上;
例如:设A0,A1接在地址总线的最低两位,译码器接在 P0.7,P0.6,P0.7过锁存器后的地址线上,译码器输出端 Y3作为8255A的选通信号,则我们可定义如下硬件地址:
8255A的PA口地址为FF70H,则PB口:FF71H; PC口 FF72H, 控制口地址为:FF73H
假如12盏小灯接在PA口、和PB口的低4位,则编制对应地址的流水灯程序即可。
具体程序这里不提供,8255控制12盏交通灯的程序及Proteus电路原理图,大家可到课程网页上的Proteus目录下查看,作为参考。