推荐单片机复习资料.docx
《推荐单片机复习资料.docx》由会员分享,可在线阅读,更多相关《推荐单片机复习资料.docx(20页珍藏版)》请在冰豆网上搜索。
推荐单片机复习资料
第一章
★1.1.18何谓奇偶校验?
它有什么用途?
请说明其具体方法?
答:
奇偶校验是一种校验代码传输正确性的方法,它有奇校验和偶校验两种方式,奇偶校验法常用于识别数据是否发生传输错误,并且可以启动校正措施,或者舍弃传输发生错误的数据,要求重新传输有错误的数据块。
这种方法是在每一个字节中加上一个奇偶校验位,并被传输,即每个字节发送九位数据,数据传输以前通常会确定是奇校验还是偶校验,以保证发送端和接收端采用相同的校验方法进行数据校验,假如校验位不符,则认为传输出错。
★1.1.22何谓堆栈?
为什么要设置堆栈?
栈区是怎样确定的?
数据进栈、出栈按照何种规律?
进栈用什么指令?
进栈、出栈时栈针将怎样变化?
通常栈底所指是什么内容?
栈顶所指又是什么内容?
答:
①堆栈是读写存储器RAM中的一个特殊区域,是一组按照“先进后出”的方式工作的、用于暂存信息的存储单元。
②设置堆栈是为了保证断点地址和现场信息。
③栈区是通过堆栈指针SP在RAM中建立堆栈后确定的,建立堆栈可用一条传送指令来实现,例如MOVSP,#60H。
④数据进栈出栈按照“先进后出”的规律。
⑤进栈指令:
PUSHX。
⑥出栈指令:
POPX。
⑦建立堆栈后,当执行进栈指令时,栈针SP的内容自动加1,即(SP)←(SP)+1,当执行出栈指令时,栈针SP的内容自动减1,即(SP)←(SP)—1。
⑧栈底所指的是堆栈指针SP所指的起始位置。
⑨栈顶所指的是当有数据进栈后SP+1,当SP指向的地址为BEGIN+LENGTH,即栈满,此时的SP所指向的位置。
★1.1.23为什么要采用总线结构?
芯片为什么要通过缓冲器才能挂在总线上?
答:
①总线。
即在微型计算机各芯片之间或芯片内部各部件之间传输信息的一组公共通信线。
采用总线结构后,芯片之间不需单独走线,这就大大减少了连接线的数量。
②因为挂在总线上的芯片不能同时发送信息,否则多个信息同时出现在总线上将发生冲突而造成错误,这就是说,如果有几块芯片需要输出信息,就必须分时传送,为了实现这个要求,所以芯片要通过缓冲器才能挂在总线上。
★1.1.27CPU与外围设备间传送数据有哪几种方式?
试根据每一种方式的特征,分析其适用的场合。
答:
四种:
无条件传送方式、查询传送方式、中断传送方式和直接数据通道传送DMA方式。
①无条件传送方式:
CPU在输入信息以前不必询问输入设备是否准备好了数据,只要执行输入指令就可输入所需信息,同样输出数据前也不必询问输出设备是否已进入准备接收数据状态,只要执行输出指令,输出信息就会被外围设备所接收。
适用于外围设备信息变换缓慢的场合。
②查询传送方式:
CPU在传送数据前要先询问外设状态,仅当外设状态准备好了才传送,否则CPU就等待。
适用于外围设备与CPU的速度有差异且比CPU的速度慢的场合。
③中断传送方式:
采用中断方式与外设间传送数据,使CPU从反复询问外设状态中解放出来,提高了工作效率。
而且,可以为多个外设服务。
适用于对实时性要求较高的场合。
④直接数据通道传送DMA方式:
令CPU交出总线的控制权,改由DMA控制器进行控制,使外设与内存利用总线直接交换数据,不经过CPU中转,也不通过中断服务程序,既不需要保存、恢复断点和现场,所以传送数据的速度比中断方式更快。
适用于高速度的外围设备与计算机间传送大批量数据的场合。
★1.1.28讲清中断的概念、用途和优越性。
说明CPU响应中断的条件。
答:
①中断:
是指当机器正在执行程序的过程中,一旦遇到异常情况或特殊请求时,就暂时停止正在执行的程序,而转入需要的处理(称为中断处理或中断服务),并且在处理完毕后,立即回到原来被停止的程序间断处(成为断点)继续执行。
②中断的用途:
传递数据、实时控制、故障自动处理、实现人机联系等。
③中断的优越性:
提高了CPU的工作效率,并且使其可以同时为多个外设服务,实现实时控制,可以处理设置故障掉电等突发事件。
④CPU响应中断的条件:
接口电路和CPU处在允许中断状态。
★1.1.29何谓中断优先权?
它是怎样规定的?
讲清中断嵌套的概念。
答:
①一个计算机系统有多个中断源,同一个中断请求引脚也可以接有多个会提出中断请求的外围设备,遇到几个设备同时中断请求时,CPU对中断的响应顺序称为中断的优先权。
②规定的原则有三:
(1)多个中断源同时申请中断时,CPU先响应优先权高的中断请求。
(2)优先权级别低的中断正在处理时,若有级别高的中断请求,则CPU暂时中断正在进行的中断服务程序,去响应优先权级别高的中断请求,在高级别中断服务程序执行完后再返回原来低级别中断服务程序继续执行。
(3)同级别或低级别的中断源提出中断申请时,CPU要到正在处理的中断服务程序执行完毕返回主程序、并执行了主程序的一条指令后才接着响应。
③优先权级别低的中断正在处理时,若有级别高的中断请求,则CPU暂时中断正在进行的中断服务程序,去响应优先权级别高的中断请求,在高级别中断服务程序执行完后再返回原来低级别中断服务程序继续执行,称为中断嵌套。
★1.1.37下列程序存放在64K×8位的EPROM中:
7408MOVA,#08H
75F076MOVB,#76H
25E0ADDA,A
25F0ADD,A,B
022000LJMP2000H
试分析该程序并回答以下问题:
1)如该段程序自000FH单元开始存放,请在程序段中写明每条指令的首址。
2)该程序段共占用内存多少单元?
3)在执行指令ADDA,A时,程序计数器PC的内容是什么?
4)执行完指令ADDA,B后,累加器A、寄存器B及程序计数器PC的内容各是什么?
5)在CPU取回指令LJMP2000H并执行该指令时,(PC)=?
;该指令执行后,(PC)=?
答:
①000F7408MOVA,#08H
001175F076NOVB,#76H
001425E0ADDA,A
001625F0ADDA,B
0018022000LJMP2000H
上列程序段最左一列写的是每条指令存放的首址。
因指令MOVA.#08H的机器码为74H与08H,要存放两个单元,即000FH与0010H,故指令MOVB,#76H存放的首址将为0011H,后面各指令存放的首址同理一一推得。
②12个单元。
③执行时内容已更新为0016H。
④(A)=86H,(B)=76H,(PC)=0018H。
⑤CPU取回指令LJMP2000H并执行该指令时,(PC)=001BH;该指令执行后,(PC)=2000H。
★1.1.38有程序段如下,试画出堆栈图,在图上注明各有关单元的内容。
E3H
E2H
E1H
E0H
…
当前栈顶
栈底
F1H
24H
…
MOVSP,#0E0H
MOVA,#24H
MOVB,#0F1H
PUSHA
PUSHB
★1.1.39某存储器芯片有12根地址线、8根数据线,请回答:
1)该芯片有多少个存储单元?
2)每个存储单元存放多少位二进制数?
3)用十六进制数写出它的首地址和末地址。
答:
(1)4k
(2)8(3)首地址为000H,末地址为FFFH
★1.1.40某存储器芯片的存储容量为16K×8位,它应有几根地址线?
若其首址为1000H,则末址是多少?
答:
14,4FFFH
★1.2.18用8位二进制写出下列各数的原码、反码和补码、
1)+212)-213)+1204)-120
答:
(1)原码:
+21=00010101
反码:
+21=00010101
补码:
+21=00010101
(2)原码:
-21=10010101
反码:
-21=11101010
补码:
-21=11101011
(3)原码:
+120=01111000
反码:
+120=01111000
补码:
+120=01111000
(4)原码:
-120=11111000
反码:
-120=10000111
补码:
-120=10001000
★1.2.43求出下列算式的值:
1)(100100.1)2+(110110.1000)BCD+(36.8)16+(36.4)8
2)(01010010)2+(01010010)BCD+48+(48)16
3)00111100B+(10010110)BCD+24+24H
4)111011.1B—(100010.0101)BCD—19.8H+75.1Q
5)00100110B+00100110BCD+74H+74
以上1)2)3)题答案以十进制数表示,4)题答案以二进制数表示,5)题答案以十六进制数表示。
答:
(1)36.5+36.8+54.5+30.5=158.3
(2)82+52+48+72=254
(3)60+96+24+36=216
(4)
(5)38+26+116+74=254
第二章MCS一51系列单片机的硬件结构
★2.1、综述MCS-51系列单片机的大致功能。
51子系列的主要功能为:
(1)8位CPU;
(2)片内带振荡器(振荡器和时钟电路)振荡频率fsoc的范围为1.2—12MHz;可有时钟输出;(3)128字节片内RAM;(4)4K字节片内ROM(8031无);(5)ROM寻址范围64KB字节;(6)片外RAM寻址范围64KB字节。
(7)21个字节专用寄存器;(8)4个8位并行I/O接口;(9)1个全双工串行I/O接口,可多机通信;(10)2个16位定时器/计数器;(11)5个中断源,可程序设计为两个优先级;(12)111条指令,含乘法指令和除法指令;(13)有强的位寻址、位处理能力;(14)片内采用单总线结构;(15)用单一+5v电源。
★2.11、何谓时钟周期、机器周期、指令周期?
针对MCS-51系列单片机,如采用12MHz晶振,它们的频率和周期各是什么值?
(1)时钟周期是由CPU时钟定义的定长时间间隔,是CPU工作的最小时间单位,也称状态周期。
(2)机器周期:
指CPU完成一个基本操作所需要的时间,1个机器周期由12个振荡周期(即6个时钟周期)组成。
(3)指令周期:
CPU执行一条指令的时间。
(4)如采用12MHz晶振,时钟周期的频率f时=12MHz/2=6MHz,周期T时=1/6μs;机器周期的周期T机=6×1/6us=1μs,频率f机=1/T机=2MHz;指令周期的周期:
单指令T指=1μs,双指令T指=2μs,频率:
单指令f指=1MHz,双指令f指=500KHz。
★2.16、EA引脚的作用是什么?
在下列四种情况下,EA引脚各应接何种电平?
1)只有片内ROM
2)只有片外ROM
3)有片内ROM和片外ROM
4)有片内ROM和片外ROM,片外ROM所存为调试程序。
1、EA引脚的作用是:
片外程序存储器选用端。
2、1)高电平;2)低电平;3)高电平;4)21V电源。
★2.23、定时器/计数器0如用于下列定时,晶振为12MHz,试为定时器/计数器0编制初始化程序:
1)50ms2)25ms
1)机器周期TCY=12×(1/12MHz)=1μs,则定时时间T=(65536-x)TCY=50ms,解得x=15536=3CB0H,则初始化程序如下:
START:
MOVTH0,#3CH
MOVTL0,#0B0H
MOVTMOD,01H
SETBTR0
2)同理得x=40536=9E58H,则初始化程序如下:
START:
MOVTH0,#9EH
MOVTL0,#58H
MOVTMOD,01H
SETBTR0
★2.28、综述P0、Pl、P2、P3口各有哪几种功能。
1)P0口:
通用I/O接口;地址/数据分时复用总线。
2)P1口:
通用输入输出接口。
3)P2口:
地址总线;通用I/O接口。
4)P3口:
通用I/O接口;具有第二功能,输出时第二功能端保持高电平。
★2.39、在串行异步通信时,要传送8位数据3BH,另采用偶校验位1位,请写出该帧信息的二进制代码。
3BH=00111011B,有5(奇数)个1,采用偶校验则须D8位置1,凑成偶数个1,所以该帧信息的二进制代码是100111011B。
★2.41、如异步通信,每个字符由11位组成,串行口每秒传送250个字符,问波特率为多少?
11位/字符×250字符/秒=2750位/秒
★2.48、某单片机系统用于定时测试压力、温度,并用定/计0实现定时。
如压力超限和温度超限的报警信号分别由
、
输入,中断优先权排列顺序依次为压力超限→温度超限→定时检测,试确定专用寄存器IE和IP的内容。
IE1—00011187H
中断屏蔽
压力超限中断允许
定时检测中断允许
温度超限中断允许
IP——XXX10105H
压力超限中断高优先级
定时检测中断低优先级
温度超限中断高优先级
★2.49、上题如压力超限和温度超限的报警信号改由
、
分别输入,其它不作改变,问IE和IP的内容将作何种改变?
IE1—00011187H
中断屏蔽
温度超限中断允许
定时检测中断允许
压力超限中断允许
IP——XXX10004H
温度超限中断低优先级
定时检测中断低优先级
压力超限中断高优先级
第3章MCS一51系列单片机的指令系统和汇编语言程序
★3.1.3、MCS一51系列单片机的寻址方式有哪儿种?
请列表分析各种寻址方式的访问对象与寻址范围。
寻址方式
访问对象和寻址范围
立即寻址
程序存储器立即数
寄存器寻址
R0~R7,A,B,C,DPTR
寄存器间接寻址
内部RAM(@R0,@R1,SP);外部数据存储器(@R0,@R1,@ DPTR)
直接寻址
内部RAM低128字节,程序存储器;特殊功能寄存器;内部RAM位寻址区的128个位或特殊功能寄存器中可寻址的位
基址寄存器加变址寄存器间接寻址
程序存储器(@A+DPTR,@A+PC)
相对寻址
程序存储器,以PC的当前值为基地址+指令中给出的偏移量=有效转移地址。
转移范围:
PC当前值的+127~-128字节
★3.1.4、要访问片内RAM,可有哪几种寻址方式?
解:
寄存器间接寻址、直接寻址
★3.1.5、要访问片外RAM,有哪几种寻址方式?
解:
寄存器间接寻址
★3.1.6要访问ROM,又有哪几种寻址方式?
解:
立即寻址、寄存器寻址、基址寄存器加变址寄存器间接寻址、相对寻址
★3.1.13、设片内RAM30H单元的内容为40H;片内RAM40H单元的内容为l0H;片内RAMl0H单元的内容为00H;
(Pl)=0CAH。
请写出下列各指令的机器码与执行下列指令后的结果(指各有关寄存器、RAM单元与端口的
内容)。
解:
机器码执行结果
MOVR0,#30H7830R0内容为30H
MOVA,@R0E6A内容为40H
MOVR1,AF9R1内容为40H
MOVB,@Rl87F0B内容为10H
MOV@R0,PlA690RAM(30H)=0CAH
MOVP3,Pl8590B0(P3)=0CAH
MOVl0H,#20H751020RAM(10H)=20H
MOV30H,10H851030RAM(30H)=20H
依次执行上列各指令后的结果为:
R0内容为30H,R1内容为40H;
A内容为40H,B内容为10H;
P1端口内容仍为0CAH,P3端口内容也为0CAH;
片内RAM(30H)=20H,(40H)=10H,(10H)=20H。
★3.1.15、已知:
(A)=02H,(Rl)=7FH,(DPTR)=2FFCH,片内RAM(7FH)=70H,片外RAM(FFEH)=llH,ROM(FFEH)=64H,试分别写出下列指令的机器码及执行各条指令的结果。
(l)MOVA,@Rl
(2)MOVX@DPTR,A
(3)MOVCA,@A+DPTR
(4)XCHDA,@Rl
★3.1.38、经过汇编后,下列各条语句的标号将是什么数值?
ORG2000H
TABLE:
DSl0
WORD:
DSl5,20,25,30
FANG:
EQUl000H
BEGIN:
MOVA,R0
解:
TABLE标号的真实地址是2000H
WORD标号的真实地址是200AH
FANG标号的真实地址是1000H
由于EQU指令并不占用内存单位,所以BEGIN标号的真实地址将依次为200EH。
★3.2.8、某压力测试的线性处理程序如下,如A/D转换器
的输出为02H,问执行程序后(A)=?
MOVP1,#0FFH
MOVA,P1
MOVCA,@A+PC
TAB:
DB00H
DB00H
DB01H
DB02H
DBFEH
END
解:
该题程序中第一条指令在P1端口输出全1、为P1端口输入信息作准备;第二条指令在P1端口输入A/D转换器的转换结果02H;第三条是查表指令,因该指令是单字节指令,执行该指令时PC所指已是TAB标号的具体地址,再往下数2哥单元(A的内容为02H),查得执行程序后A的内容为01H。
★3.2.14、试编程:
有两双字节压缩的BCD码数相加,设该两待加数分别按先低后高原则存放在30H、31H和40H、41H单元,和要求放回30H、31H单元。
解:
MOVR0,#30H
MOVR1,#40H
MOVR2,#2
CLRC
LOOP:
MOVA,@R0
ADDCA,@R1
DAA
MOV@R0,A
INCR0
INCR1
DJNZR2,LOOP
DONE:
AJMPDONE
★3.2.16、试编程:
将片内RAM50H、51H单元两个无符号数中较小的数存于60H单元。
解:
ORG00H或ORG00H
LJMPSTARTLJMPSTART
ORG30HORG30H
START:
MOVA,50HSTART:
MOVA,50H
SUBBA,51HCJNEA,51H,STOR
JCLESSSJMPELSE
MOV60H,51HSTOR:
JCLESS
SJMPELSEMOV60H,51H
LESS:
MOV60H,50HSJMPELSE
ELSE:
SJMP$LESS:
MOV60H,A
ENDELSE:
SJMP$
END
★3.2.17、试编程:
将片内RAM60H~69H单元中的l0个数相加,和的低8位存入7EH,高8位存入7FH。
解:
ORG00H
LJMPSTART
ORG30H
START:
MOV7FH,#00H
MOVR1,#09H
MOVR0,#60H
MOVA,@R0
INCR0
LOOP:
ADDA,@R0
JNCLP1
INC7FH
LP1:
INCR0
DJNZR1,LOOP
MOV7EH,A
SJMP$
END
★3.2.18、试编程:
统计从片内RAM60H单元起所存60个数中"0"的个数,并存入工作寄
存器R7。
解:
ORG00H
LJMPSTART
ORG30H
START:
MOVR7,#00H
MOVR0,#60H
LOOP1:
CJNE@R0,#00H,LOOP2
INCR7
LOOP2:
INCR0
CJNER0,#9BH,LOOP1
SJMP$
END
★3.2.19、试编程:
将ROM中自2000H单元起的100个数,按序移至片外RAM自2080H单
元起的内存区间去。
解:
ORG00H
LJMPSTART
ORG30H
START:
MOVDPTR,#2000H
MOVR1,#64H
MOVR2,#0
LOOP:
MOVA,R2
MOVCA,@A+DPTR
MOVR3,A
MOVA,#80H
ADDA,R2
MOVDPL,A
MOVA,R3
MOVX@DPTR,A
INCR2
MOVDPL,#0
DJNZR1,LOOP
DONE:
SJMP$
END
★3.2.27、设晶振为12MHz,请详细剖析(包括计算)下列程序段的性质和用途:
0B07963DELAY:
MOVRl,#63H
0B200DLl:
NOP
0B300NOP
0B4D9FCDJNZRl,DLl
0B622RET
★3.2.30、设晶振为12MHz,请编写二段子程序,分别用指令延时法和定时器实现30ms延时。
解:
指令法:
ORG00H定时器:
ORG00H
LJMPDELAYLJMPDELAY
ORG30HORG30H
DELAY:
MOVR7,#120DELAY:
MOVTMOD,#01H
DELAY1:
MOVR6,#125MOVTHO,#8AH
DELAY2:
DJNZR6,DELAY2MOVTLO,#DOH
DJNZR7,DELAY1MOVIE,#82H
RETSETBTRO
END
★3.2.33、阅读下列程序,
(1)说明该程序的功能。
(2)填出所缺的机器码。
(3)试修改程序,使片内RAM的内容达到右下图所示的结果。
7A_0A_MOVR2,#0AH
_78_50_MOVR0,#50H
E4CLRA
E6LOOP:
MOV@R0,A
08INCR0
DA_FC_DJNZR2,LOOP
DONE:
SJMP$
解:
(1)将片内RAM自50H单元起的10个单元清零。
(3)在MOV@R0,A指令后添一条INCA指令。
第四章
★4.3、8031最小系统包含那些芯片,试根据记忆画出它的可实用的电路图。
解:
8031芯片、2716EPROM芯片、74S373芯片。
★4.9、图4-4是4片8K×8位存储器芯片的连接图,请确定每片存储器芯片的地址范围。
第
(1)片存储器芯片的地址范围:
0000H~1FFFH
第
(2)片存储器芯片的地址范围:
2000H~3FFFH
第(3)片存储器芯片的地址范围:
4000H~5FFFH
第(4)片存储器芯片的地址范围:
6000H~7FFFH
第五章
★5.1、某单片机应用系统的Pl口连如下图,问:
(1)执行下列程序的第一条指令后,哪些指示灯会亮?
(2)第二条指令的用处。
(3)执行到最后,(A)=?
程序为:
MOVPl,#0EH
ORLPl,#C0H
MOVA,Pl
ANLA,#C0H
解:
(1)L0会亮
(2)为P1.7、P1.6输入作准备(准双向口)。
(3)A