自考单片机期末复习资料.docx
《自考单片机期末复习资料.docx》由会员分享,可在线阅读,更多相关《自考单片机期末复习资料.docx(30页珍藏版)》请在冰豆网上搜索。
自考单片机期末复习资料
◆单片机期末考试题型:
第一题:
填空题(30分),总30小空,每空1分
第二题:
判断题(15分),总15小题,每题1分
第三题:
简答题(30分),总6小题,每题5分,本题包括程序分析题
第四题:
编程题(25分),总2小题
◆复习资料要点:
教材+平时作业+实验报告(简答题和程序题主要复习课后习题和实验题)
◆主要复习知识点:
第一章微机计算机系统的基本知识
1.单片机就是在一片硅片上集成了中央处理器、随机存储器、只读存储器、中断系统、定时/计数器和多种I/O口的微型计算机系统,该系统不带外部设备。
从组成和功能上看,它已经具备了计算机系统的基本属性,所以也可以称其为单片微型计算机,简称单片机。
2.微型处理器是单片机的核心。
它主要由三部分组成:
寄存器阵列、运算器和控制器、
3.程序计数器PC,专门用于存放现行指令的16位地址。
CPU就是根据PC中的地址到ROM中读取程序指令。
每当取出现行指令一个字节后,PC就自动加1,PC+1→PC,当遇到转移指令或子程序时,PC内容会被指定的地址取代,实现程序转移。
PC用于存放CPU下一条要执行的指令地址,是一个16位的专用寄存器。
(PC的功能与作用)
4.运算器用来完成算术运算和逻辑运算操作,是处理信息的主要部件。
运算器主要由累加器A、状态寄存器PSW、算术运算单元ALU组成。
累加器A,用来存放参与算术运算和逻辑运算的一个操作数和运算结果。
状态字寄存器,用来保存ALU操作运算的条件标志,如进位标志、奇偶标志等。
算术运算单元ALU,由加法器和其他逻辑电路组成,其基本功能是进行加法和移位运算,由此实现其他各种算术和逻辑运算。
5.控制器是分析和执行指令的部件,控制器只要由程序计数器PC、指令寄存器和指令译码器组成。
6.总线是用于传送信息的公共途径。
总线可以分为数据总线、地址总线、控制总线。
7.数据总线DB:
数据线D0~D7共8位,由P0提供,分时输送低8位地址(通过地址锁存器锁存)和8位数据信息。
数据总线是双向的,可以从CPU输出,也可以从外部输入到CPU。
8.地址总线AB:
地址线A0~A15共16位,P2口提供高8位地址A8~A15,P0口经地址锁存器提供低8位地址A0~A7。
片外存储器可寻址范围达到64KB(即65536字节)。
9.控制总线CB:
控制总线由P3口的第二功能P3.6、P3.7H和3根独立的控制线ALE、
和
组成。
10.存储器是用来存储数据和程序的部件。
按其功能来分,存储器可以分为随机存储器(RAM)和只读存储器(ROM)两大类。
11.RAM:
可以随机写入读出,读写速度快,读写方便。
缺点是电源断电后,被存储的信息会丢失。
RAM主要用于存放各种数据。
12.ROM:
一般用来存放固定的数据和程序。
其特点是信息写入后,能长期保存,不会因断电而丢失。
所谓“只读”指不能写入。
13.(基本了解)ROM的5种不同形式:
①MaskROM(淹膜ROM)②OTPROM③EPROM(紫外线擦除)④E²PROM(用电擦除)⑤FlashROM(用电擦除,兼有EPROM和E²PROM的优点)
14.单片机程序设计语言可分为三类:
机器语言、汇编语言和高级语言
①机器语言:
机器语言是计算机可以识别和直接执行的语言,它由一组二进制代码组成,不同的微处理器机器语言也不同。
②汇编语言:
用助记符替代机器语言中的操作码,用十六进制数代替二进制数。
计算执行时,必须将汇编语言翻译成机器语言。
汇编语言和机器语言一样,微处理器不同,汇编语言也不同,即不同的微处理器采用不同的汇编语言。
第二章单片机的硬件结构(重点复习)
16.基本时序单位
单片机的时序单位有:
◆振荡周期:
晶振的振荡周期,又称时钟周期,为最小的时序单位。
◆状态周期:
振荡频率经单片机内的二分频器分频后提供给片内CPU的时钟周期。
因此,一个状态周期包含2个振荡周期。
◆机器周期:
1个机器周期由6个状态周期即12个振荡周期组成。
是计算机执行一种基本操作(如取指令,读存储器,写存储器等)的时间单位。
◆指令周期:
执行一条指令所需的时间。
一个指令周期由1~4个机器周期组成,依据指令不同而不同。
4种时序单位中,振荡周期和机器周期是单片机内计算其他时间值(例如,波特率、定时器的定时时间等)的基本时序单位。
例:
单片机外接晶振频率fosc=12MHZ时的各种时序单位:
◆振荡周期=1/fosc=1/12MHZ=0.0833us;
◆状态周期=2/fosc=2/12MHZ=0.167us;
◆机器周期=12/fosc=12/12MHZ=1us;
◆指令周期=(1~4)机器周期=1~4us。
17.MCS-51的存储器结构与常见的微型计算机的配置方法不同,采用哈佛结构它将程序存储器和数据存储器分开,各有自己的寻址方式、控制信号和功能。
程序存储器用来存放程序、始终要保留的表格、常数。
数据存储器存放程序运行中所需要的数据和结果(常数和变量)。
18.从物理空间(实际结构)看,MCS-51有四个存储器地址空间:
片内数据存储器、片外数据存储器、片内程序存储器、片外程序存储器
19.从逻辑上(使用角度)看,MCS-51有三个存储器空间:
片内、片外统一编址的程序存储器,片外数据存储器,片内数据存储器
20.程序存储器中的几个特殊地址的使用:
地址用途
0000H复位操作后的程序入口
0003H外部中断0服务程序入口
000BH定时器0中断服务程序入口
0013H外部中断1服务程序入口
001BH定时器1中断服务程序入口
0023H串行口中断服务程序入口
21.外部数据存储器作用:
用于存放随机读写的数据。
◆外部数据存储器包括两部分空间:
①外部RAM②扩展的I/O口地址
◆内部数据存储器(单元数少,但最复杂)特殊功能寄存器空间,离散分布,作数据缓冲器、标志位等
22.程序存储器与外部数据存储器的比较
◆相同:
地址线A15~A0
◆不同:
访问的指令不同,读写信号不同。
访问程序寄存器的指令为MOVC指令,访问外部数据存储器的指令为MOVX指令;程序寄存器:
只读,PSEN作为外部ROM读信号;外部数据存储器:
可读写,RD作为读信号,WR作为写信号。
23.工作寄存器区的选择
RS1:
程序状态寄存器PSW的D4位;RS0:
程序状态寄存器PSW的D3位;
RS1RS0
寄存器区
R0~R7所占单元的地址
00
0区
00H~07H
01
1区
08H~0FH
10
2区
10H~17H
11
3区
18H~1FH
复位时,自动选中0区。
一旦选中其中一个区,其它三区只能作为普通RAM单元使用,而不能作为工作寄存器使用。
设置多个工作寄存器区可以方便保护现场。
24.字节地址与位地址在使用上如何区别?
例:
MOVC,20H
MOVA,20H
位操作指令MOVC,20H位地址只有1bit(小圆区域)
字节操作指令MOVA,20H字节地址共8bit(大椭圆区域)
25.位地址空间组成及位地址表示法
⑴内部数据存储器的20H~2FH共16个单元可按位寻址,128位;
例1:
位地址1EH=23H.6即字节单元23H的D6位
⑵专用寄存器地址能被8整除的可按位寻址。
例2:
位地址D4H=D0H.4=PSW.4=RS1
26.特殊功能寄存器的地址分配(名称必须记住)
27.①累加器ACC:
累加器为8位的寄存器,是程序中使用最频繁的寄存器,是用于存放中间结果和数据传送的渠道。
②程序状态字寄存器PSW:
PSW也称为标志寄存器
⑴CY:
进/借位标志。
CY=1,有进/借位;CY=0,无进/借位。
⑵AC:
辅助进位标志,反映高半字节与低半字节之间的进/借位。
AC=1有进/借位;AC=0无进/借位。
⑶F0:
用户标志位
⑷RS1,RS0:
工作寄存器的控制位
⑸OV:
溢出标志位。
有溢出OV=1,无溢出OV=0。
⑹P:
奇偶标志位。
运算结果有奇数个“1”,P=1;偶数个“1”,P=0。
⑺D1:
无效位,一般不用。
③数据指针DPTR:
数据指针DPTR是一个16位的专用寄存器,DPTR主要用来存放16位地址。
④PC用于存放CPU下一条要执行的指令地址,是一个16位的专用寄存器。
27.访问不同的存储器空间使用不同的指令:
程序存储器,使用MOVC指令;外部数据存储器,使用MOVX指令;内部数据存储器,使用MOV指令;特殊功能寄存器,使用MOV指令;位地址空间,使用MOV、SETB、CLR等指令。
28.堆栈是在单片机内部RAM中从某个选定的存储单元开始划定的一个地址连续的区域。
堆栈操作是在内存RAM区专门开辟出来的按照“先进后出”原则进行数据存取的一种工作方式,主要用于子程序调用及返回和中断处理断点的保护和返回。
SP用来指示堆栈所处的位置。
当数据堆入栈区后,SP的值也自动随之变化。
51单片机属于向上生长型堆栈(即向高地址方向生成)。
29.用一个称为堆栈指针SP的特殊功能寄存器来给出栈顶存储单元的地址。
堆栈指针SP中存储的总是堆栈栈顶存储单元的地址,即堆栈指针SP总是指向堆栈栈顶。
30.向上生长型堆栈出栈入栈的操作原则是“先进后出”或“后进先出”。
31.实现复位操作,必须使RST引脚(9)保持两个机器周期以上的高电平。
32.复位是单片机的初始化操作,其主要功能是程序计数器PC值变为0000H,使单片机从0000H开始执行程序。
上电复位后,RAM的内容是随机的。
寄存器初始状态寄存器初始状态
PC0000HACC00H
PSW00HSP07H
第三章51单片机的指令系统
33.计算机所有的指令集合称为该计算机的指令系统。
34.指令是基本格式:
[标号:
]操作码[目的操作数][,源操作数][;注释]
●标号:
指令的符号地址;
●操作码:
规定指令的操作功能,是指令格式中唯一不能空缺的部分;
●操作数:
用于给指令的操作提供数据或地址。
把左边的操作数称为目的操作数,右边的操作数称为源操作数;
●注释:
注释是对语句或程序段功能的说明。
注释用“;”开头,可空缺。
35.按指令的功能分类:
数据传送指令(28条)、算术运算类指令(24条)、逻辑运算与移位类指令(25条)、控制转移类指令(17条)、位操作类指令(17条)。
36.寻址方式
特殊功能寄存器B仅在乘除法指令中位寄存器寻址方式,在其他指令中为直接寻址方式,除A、B和DPTR外,其他特殊功能寄存器一律用作直接寻址方式。
♦立即寻址
指令中跟在操作码后面的数据就是实际参与运算的操作数,称为立即数。
MCS-51指令系统中允许使用8位和16位立即数,立即数之前加“#”予以标识。
例:
MOVA,#6DHMOVA,#3AHMOVDPTR,#0DFFFHMOV40H,#30H
MOVA,#60HMOVDPTR,#3400HMOV30H,#40H
♦直接寻址
指令中包含了操作数的地址,该地址直接给出了参加运算或传送的单元的地址。
直接寻址可访问两种地址空间:
⑴特殊功能寄存器SFR(又叫做专用寄存器)⑵内部数据存储器RAM中的128个字节单元。
例:
MOVA,52HMOVA,P1MOV30H,20HMOVP0,P1
♦寄存器寻址
把指定的某一可寻址的工作寄存器R0~R7或A,B(乘、除指令中),DPTR,的内容作为操作数。
例:
MOV53H,AMOVB,AMOV20H,R1MOVP0,R0
♦寄存器间接寻址
指令指定的某一寄存器的内容作为操作数地址。
可用来间接寻址的寄存器有R0、R1和数据指针DPTR,前面加@表示间接寻址。
可访问内部RAM或外部数据存储器。
堆栈指针SP在执行指令中也起到寄存器间接寻址的作用,但它不出现在指令表达形式中。
实现间接寻址的地址指针:
(1)Ri(R0、R1):
寻址对象为片内RAM的128个单元;
(1)DPTR:
寻址对象为外部数据存储器。
例:
MOVA,@R0MOVB,@R1MOVXA,@DPTRPUSH20H
POPACCMOV@R0,AMOVXA,@R1MOVX@DPTR,A
♦变址寻址
基址寄存器(DPTR或PC):
存放基准地址;变址寄存器(A):
存放偏移量;基址寄存器的内容与变址寄存器的内容的和为可寻址单元的地址。
该类寻址方式用于访问程序存储器,对查表访问特别有用。
注意:
A中内容为无符号数。
例:
MOVCA,@A+DPTRMOVCA,@A+PCJMP@A+DPTR
♦位寻址
采用位寻址方式的操作数是8位二进制数中的某1位,指令中给出的是位址。
寻址对象:
①片内数据存储器位寻址区中,位地址为00H~7FH的128位②11个可位寻址的特殊功能寄存器中的82个有效可寻址位。
例:
MOVC,3AHSETBPSW,4MOVC,00HMOVC,20H
第四章51单片机的汇编语言程序设计
37.伪指令:
在对汇编语言进行翻译的过程中,需要提供一些有关汇编的信息指令。
这些指令在汇编时起到控制作用,但其自身不产生机器代码。
伪指令就是汇编程序能够识别的汇编命令,它是程序员发给汇编程序的命令,只在汇编过程中起作用,它不是单片机要执行的指令,所以没有机器码。
◆起始伪指令ORG(ORIGIN)
格式:
[<标号:
>]ORG<地址>
功能:
出现在源程序的开头,用于规定目标程序存放的起始地址。
例:
程序如下:
ORG0000H
START:
MOVA,#20H
ADDA,#08H
MOV20H,A
HERE:
SJMPHERE
◆结束伪指令END(ENDOFASSEMBLY)
格式:
[<标号:
>]END<表达式>
功能:
汇编终止命令,本命令用于终止源程序的汇编工作。
例:
程序如下:
ORG0000H
START:
MOVA,#20H
ADDA,#08H
MOV20H,A
HERE:
SJMPHERE
END
◆赋值伪指令EQU(EQUATE)
格式:
<字符名称>EQU<赋值项>
功能:
本命令用于给标号赋值。
例:
程序如下:
PPEQOR0
QQEQU30H
MOVA,PP;把R0中的值送给A
MOVB,QQ;把30H中的值送给直接地址F0H
◆定义字节伪指令DB(DEFINEBYTE)
格式:
[<标号:
>]DB<8位数表>
功能:
定义字节命令,本命令用于从指定的地址开始,在程序存储器的连续单元中定义字节数据。
例:
程序如下:
ORG0000H
TAB:
DB00H,45H,67H,78H
DB78H,58H,90H,57H
……
汇编后结果:
(0000H)=00H(0001H)=45H(0002H)=67H(0003H)=78H
(0004H)=78H(0005H)=58H(0006H)=90H(0007H)=57H
◆定义字伪指令DW(DEFINEWORD)
格式:
[<标号:
>]DW<16位数表>
功能:
定义数据字命令,本命令用于从指定地址开始,在程序存储器的连续单元中定义16位的数据字。
该命令将字数据表中的数据依从左到右的顺序存放在指定的存储单元中,数据字的高8位放在低地址单元,低8位放在高地址单元。
例:
程序如下:
ORG0030H
TAB:
DW6789H,3456H
DW1234H,5687H
……
汇编后的结果:
(0030H)=67H,(0031H)=89H
(0032H)=34H,(0033H)=56H
(0034H)=12H,(0035H)=34H
(0036H)=56H,(0037H)=87H
◆位定义命令BIT
格式:
<字符名称>BIT<位地址>
功能:
本命令用于给字符名称赋以位地址。
例:
程序如下:
AQBITP0.0
DEFBITP1.0
汇编结果:
把P0.0的位地址赋给AQ,把P1.0的位地址赋给DEF。
38.程序设计的基本步骤:
(1)分析问题,确定解题的基本思路
(2)画流程图(3)程序结构设计(4)编写源程序(5)汇编和调试
举例:
◆【例4-2】设在片内RAM中,20H和21H单元各存放有一个8位数据,要求拼装一个新字节并送30H保存,其低5位取自20H单元中的低5位,高3位取自21H单元中的低3位。
实现程序如下:
MOV30H,20H;20H单元中的数据送入30H单元
ANL30H,#00011111B;屏幕高3位
MOVA,21H;21H单元中的数据送入A
SWAPA;将A中的数据高低3位交换,循环左移4次
RLA;将A中数据再循环左移1次
ANLA,#11100000B;屏蔽A中数据的低5位
ORL30H,A;完成拼装
◆【例4-6】设在外部RAM的3个连续存储单元ST1/ST2和ST3中,ST1和ST2存放着两个不带符号的二进制数,请找出其中的大数并存在ST3中。
程序如下:
START:
CLRC;进位位清0
MOVDPTR,#ST1;设置数据指针
MOVXA,@DPTR;取第一个数
MOVR7,A;暂存R7
INCDPTR;数据指针加1
MOVXA,@DPTR;取第二个数
SUBBA,R7;比较两数的大小
JNCBIG1;第二个数大转移
XCHA,R7;第一个数大送A
BIG0:
INCDPTR;数据指针加1
MOVX@DPTR,A;存大数
RET
BIG1:
MOVXA,@DPTR;第二个数送A
◆【例4-11】有一数据块从片内RAM的30H单元开始存入,设数据块长度为10个单元。
根据下式:
求出Y的值,将Y值存入31H单元。
程序如下:
ORG1000H
MOVA,30H;取数
JBACC.7,NEG;负数,转NEG
JZZERO;为零,转ZERO
ADDA,#02H;为正数,求X+2
AJMPSAVE;转到SAVE,保存数据
ZERO:
MOVA,#64H;数据为零,Y=100
AJMPSAVE;转到SAVE,保存数据
NEG:
DECA
CPLA;求|X|
SAVE:
MOV31H,A;保存数据
SJMP$;暂停
◆【例4-13】在外部RAM首地址为table的数据表中,有10个字节的数据,编程将每个字节的最高位无条件的置1。
实现程序如下:
MOVDPTR,#table;送数据表首地址
MOVR7,#OAH;置处理次数
LOOP:
MOVXA,@DPTR;取数据
ORLA,#10000000B;最高位置1
MOVX@DPTR,A;送回
INCDPTR;地址加1
DJNZR7,LOOP;未处理完返回
SJMP$
◆【例4-20】编写一程序,实现下图中逻辑运算电路。
其中P3.1、P1.1、P1.0分别是单片机端口线上的信息,RS0、RS1是PSW寄存器的两个标志位,30H、31H是两个位地址,运算结果由P1.0输出。
程序如下:
ORG0000H
MOVC,P3.1
ANLC,P1.1
CPLC
MOV20H,C;暂存数据
MOVC,30H
ORLC,/31H
ANLC,RS1
ANLC,20H
ANLC,RS0
MOVP1.0,C;输出结果
SJMP$
第五章51单片机的中断系统
39.51单片机共有5个中断源,2个中断优先级,可以实现两级中断嵌套。
中断主要由三个要素组成:
中断源、优先级和响应过程
40.中断源就是引起中断的来源,也可认为是中断的原因。
51单片机提供了5个中断源:
两个外部中断请求
和
,两个片内计数器/定时器中断T0和T1,另一个为片内串行口中断。
41.外部中断源:
表TCON寄存器位结构
位置
D7
D6
D5
D4
D3
D2
D1
D0
位地址
8F
8E
8D
8C
8B
8A
89
88
位符号
TF1
TR1
TF0
TR0
IE1
IT1
IE0
IT0
IT0是
触发方式控制位,即选择外部中断0是电平触发方式还是下降沿触发方式,此位可由软件置位和复位;IE0是
中断下降沿请求标志位;IT1和IE1分别为外部中断1的触发方式控制位和下降沿中断请求标志位。
42.内部中断源:
(1)定时器/计数器中断源
①TF0是片内定时器/计数器0溢出时中断申请标志位。
②TF1是片内定时器/计数器1溢出时中断申请标志位,功能与TF0相同。
(2)串行口中断:
表SCON寄存器位结构:
位置
D7
D6
D5
D4
D3
D2
D1
D0
位地址
9FH
9EH
9DH
9CH
9BH
9AH
99H
98H
位符号
SM0
SM1
SM2
REN
IB8
RB8
TI
RI
1TI是串行口发送完毕中断标志位。
当TI=1时,就向CPU申请中断,表示数据发送完毕;
2RI是串行口接收完毕中断标志位。
RI=1表示串行口接收器向CPU申请中断。
43.计算机中断系统中有两种不同类型的中断:
一种称为非屏蔽中断,另一种称为可屏蔽中断。
对非屏蔽中断,用户不能用软件方法加以禁止,一旦有中断申请,CPU必须予以响应。
但对可屏蔽中断,用户则可以通过软件方法来控制是否允许某中断源的中断。
51系列单片机的5个中断源都是可屏蔽中断的。
44.表中断允许寄存器IE的位结构
位置
D7
D6
D5
D4
D3
D2
D1
D0
位地址
AFH
ADH
ACH
ABH
AAH
A9H
A8H
位符号
EA
-
-
ES
ET1
EX1
ET0
EX0
◆EA是CPU中断总允许位。
当EA=1时,开放中断,而每个中断是开放还是屏蔽分别由各自的允许位确定。
EA=0,禁止所有中断,不论其他为是否为1。
◆ES是串行口中断允许位。
ES=1,允许串行口的接收和发送中断;ES=0,禁止串行口中断。
◆ET1是开放或禁止定时器1溢出中断位。
ET1=0则禁止定时器1中断,置位则开启其中断。
◆EX1是外部中断1的中断允许位。
EX1=0,则禁止外部中断1中断,EX=1,则开启其中断。
◆ET0是开放或禁止定时器0溢出中断位。
ET0=0则禁止定时器0中断,置位则开启其中断。
★EX0是外部中断0的中断允许位。
EX0=0,则禁止外部中断0中断,置位则开启其中断。
45.表中断优先级寄存器IP的位结构
位置
D7
D6
D5
D4
D3
D2
D1
D0
位地址
BDH
BCH
BBH
BAH
B9H
B8H
位符号
-
-
-
PS
PT1
PX1
PT0
PX0
●PS:
串行口优先级设定位。
PS=1时,则编程为高优先级。
●PT1:
定时器1优先级设定位。
PT1=1时,则编程为高优先级。
●PX1:
外部中断1优先级设定位。
PX1=1时,则编程为高优先级。
●PT0:
定时器0优先级设定位。
PT0=1时,则编程为高优先级。
●PX