单片机及嵌入式系统练习题
填空题
1、计算机的系统总线有地址总线、数据总线和控制总线。
2、P0如果不用作地址/数据总线使用,P0口可作为普通I/O口使用,此时,需要外接上拉电阻。
3、在执行调用子程序指令或响应中断时,单片机自动将子程序的入口地址或中断向量地址送入PC,程序流向发生变化,执行子程序或中断子程序。
4、8051单片机复位后,程序计数器PC的内容为0000H,故系统从0000H单元开始取指令,执行程序。
5、中断的处理过程主要包括:中断请求、中断响应、中断处理和中断返回4个过程。
6、当MCS-51引脚ALE信号有效时,表示从P0口稳定地送出了低8位地址。
7、要想测理INT0引脚上的一个正脉冲宽度,那么特殊功能寄存器TMOD的内容应为87H。
8、哈佛体系结构数据空间和地址空间分开,ARM7TDMI采用冯诺依曼体系的内核架构。
9、ARM处理器采用冯﹒诺依曼结构,指令和数据共用一条32位数据总线,只有加载、存储和交换指令可访问存储器中的数据。
10、RTX51使用8051硬件定时器产生中断的定时程序,产生周期性的中断用于驱动RTX51的时钟。
11、.MCS-51有4个并行I\O口,其中P0~P3是准双向口,所以由输出转输入时必须先写入1。
12、当使用慢速外设时,最佳的传输方式是中断。
13、当定时器T0工作在方式3时,要占定时器T1的TR1和TF1_两个控制位。
14、MCS-51有5个中断源,有2个中断优先级,优先级由软件填写特殊功能寄存器IP加以选择。
15、MCS-51有4组工作寄存器,它们的地址范围是00H~1FH。
16、当MCS-51引脚ALE信号有效时,表示从P0口稳定地送出了低8位地址。
17、MCS-51有4组工作寄存器,它们的地址范围是00H~1FH。
18、实时操作系统又分为强实时操作系统和弱实时操作系统两种。
19、如果操作系统按管理的任务数把CPU分成若干个时间片,将每个时间片分配给一个任务,CPU按时间片轮流执行这些任务,那么这种操作系统就叫做分时操作系统。
20、当指令读取PC时,它得到的指令地址比它自身地址落后了两条地址:对于ARM指令,得到的地址是它自身地址+8;对于Thumb指令,得到的地址是它自身地址+4。
21、p0口为双向8位三态I/O口,此口为地址总线(低8位)及数据总线分时复用,可驱动8个LSTTL负载。
22、ALE当访问外部存贮器时,ALE的输出用于锁存地址的低位字节。
23、MCS-51指令执行顺序:取指→译码→执行。
24执行有条件或无条件转移指令时,程序计数器PC将被置入新的数值,从而使程序的流向发生变化
25、8051单片机存储器采用的是哈佛结构,即程序存储器空间和数据存储器空间截然分开26、地址为20H-2FH的16个单元可进行共128位的位寻址。
27、8051型单片机提供了5个中断源:2个外部中断源和3个内部中断源。
28、RTX-51FULL支持任务之间的信息交换,可以使用isr_recv_message、isr_send_message、os_send_message 和os_wait函数来实现。
29、ARM7TDMI采用3级流水线结构,ARM920TDMI采用5级流水线。
30、操作系统是联接硬件与应用程序的系统程序,其基本功能有进程管理、任务间通信与同步、内存管理、I/O资源管理。
31、PC存放下一条要执行的指令的地址,具有自动加1_特性。
32、8051内部有4个并行口,P0口直接作输出口时,必须外接上拉电阻;并行口作输入口时,必须先将口锁存器置,才能读入外设的状态。
33、MCS-51的堆栈只可设置在内RAM低128B区其最大容量为128B,存取数据的原则是先进后出。
34、中断处理的全过程分为以下4个段:中断请求、中断响应、中断服务及中断返回。
35、定时和计数都是对脉冲进行计数,定时与计数的区别是
定时器是对周期已知的脉冲计数,计数器是对周期未知的脉冲计数。
37、P3常需复用串行通信、读写控制信号、外部中断和外部计数脉冲。
38、如果操作系统能使计算机系统及时响应外部事件的请求,并能及时控制所有实时设备与实时任务协调运行,且能在一个规定的时间内完成对事件的处理,那么这种操作系统就是一个实时操作系统。
39、RTX51可以实现多任务的轮转调度并允许“准并行”地执行多个循环或任务任务不是同时执行,而是以不同的时间片轮转调度执行。
40、ARM7处理器共有37个32位寄存器,31个通用寄存器,6个状态寄存器。
41、MCS-51单片机的P0-P4口均是并行I/O口,其中的P0口和P2口除了可以进行数据的输入、输出外,通常还用来构建系统的数据总线和地址总线,P0口的8位I/O线分时复用8位数据线和低8位地址线用,P2口作高8位地址线使用,P3口部分第二功能作控制线使用。
42、MCS—51单片机外部中断请求信号有电平方式和脉冲方式,在电平方式下,当采集到INT0、INT1的有效信号为低电平时,激活外部中断。
43、定时器/计数器的工作方式3是指的将T0拆成两个独立的8位计数器。而另一个定时器/计数器此时通常只可作为波特率发生器使用。
45、在单片机中,为实现数据的I/O传送,可使用三种控制方式,即无条件传送方式、查询方式和中断方式。
46、MCS—51指令共有六种寻址方式,分别是立即数寻址、直接寻址、寄存器寻址、寄存器间接寻址、变址寻址、相对寻址。
47、增强型MCS-51单片机有5个中断源,2__个中断优先级别。
48、实时操作系统有硬实时和软实时之分,硬实时要求在规定的时间内必须完成操作,这是在操作系统设计时保证的。
49、每个任务都是一个无限的循环,都可能处在以下5种状态之一—休眠态、就绪态、
挂起态(等待某一事件发生)运行态及被中断态。
50、哈佛体系结构数据空间和地址空间分开,ARM7TDMI采用冯诺依曼体系的内核架构。
51、MCS-8051系列单片机字长是8,有40根引脚。
52、8051单片机的存储器的最大特点是数据存储器与分开编址。
53、8051最多可以有4个并行输入输出口,最少也可以有1个并行口,即P1。
54、ALE信号的作用是锁存地址的低位字节。
55、8051复位后,PC=0000H。若希望从片内存储器开始执行,EA脚应接高电平,PC值超过0FFFH时,8051会自动转向片外存储器继续取指令执行。
56、8051的中断向量表在0003H、000BH和0013H、001BH、23H。
57、指令JB0A7H,ABC的作用是若P2口的第7位为1则跳转到ABC。(0A7H是P2.7的地址)
58、ARM7处理器的寄存器R13常作为堆栈指针(SP),寄存器R14为链接寄存器(LR),
寄存器R15为程序计数器(PC)。
ARM处理器采用冯﹒诺依曼结构,指令和数据共用一条32位地址总线,只有加载、存储和
交换指令可访问存储器中的数据。
60、对实时系统有两个基本要求:第一实时系统的计算必须产生正确的结果称为逻辑与功能正确;第二实时系统的计算必须在预定的周期内完成,称为时间正确。
61、单片机有4个8位I/O口,对应32根I/O线,它们与单片机对外的地址线,数据线和控制线关系为:P0口的8位I/O线分时复用,作为8位数据线和低8位地址线,P2口作高8位地址线使用,P3部分第二功能作控制线使用。
62、如果存储单元的数据位为8位,当它存放无符号数时,则该数的范围为0-255。
63、8051单片机,当CPU响应某中断请求时,将会自动转向相应规定地址(即中断入口地址)
去执行,外部中断0入口地址为:0003H,T1入口地址为;001BH。
64、由于嵌入式系统只有一个CPU,因此在一个具体时刻只能允许多个任务中的一个任务使用CPU65、实时操作系统(RTOS)的主要特点是提供及时响应和高可靠性。
66、若有中断源请求中断,允许中断时,进入中断响应,先置位优先级触发器,把断点压入堆栈,再把中断源对应的中断服务程序的入口地址送入程序计数器,同时清除中断请求标志,然后执行中断服务程序。
67、数据指针DPTR有16位,程序计数器PC有16位。
68、74LS138是具有3个输入的译码器芯片,用其输出作片选信号,最多可在两块芯片中选中其中任一块。
69、当使用慢速外设时,最佳的传输方式是中断。
70、RTX51Tiny版本使用了8051的定时器T0和定时器T0的中断信号。
71、8051系列单片机内部有2个16位定时器/计数器T0和T1,有四种工作方式。
72、8051单片机内部共有4个输入输出口,一般称为并行I/O口,即P0,P1,P2,P3口,每个口都是8位。
对于8052单片机,P1.0作为定时器T2的外部计数输入,P1.1是定时器/计数器T2
捕捉/重装操作的控制信号。
74、寄存器间接寻址是将要处理数据的地址放在寄存器中。
75、中断的处理过程主要包括:中断请求、中断响应、中断服务和中断返回4个过程。
76、计数/定时器初值是通过程序预置的,溢出后计数器的值为0x0000,需要再重新填充一次。
77、CPU与外设通信方式:程序直接控制方式、中断控制方式、直接存储器存取(DMA)。
78、ARM处理器有以下两种操作状态:ARM状态和Thumb状态两种状态。
79、ARM7处理器正常操作时,从R15读取的值是处理器正在取指的地址。即当前正在执行指令的地址加上8个字节(两条ARM指令的长度)。
80、实时操作系统不仅要及时响应实时事件中断,同时也要及时调度运行实时任务。
二、选择题(共20分,每题2分)
1、单片机能直接运行的程序叫C。
A.源程序B.汇编程序C.目标程序D.编译程序
2、8051的P0口,当使用外部存储器时它是一个D。
A.传输高8位地址口B.传输低8位地址口
C.传输高8位数据口D.传输低8位地址/数据口
3、单片机的P0、P1口作输入用途之前必须A。
A.在相应端口先置1B.在相应端口先置0C.外接高电平D.外接上拉电阻
4、MCS-51寻址方式中,立即寻址的寻址空间是C。
A.工作寄存器R0~R7B.专用寄存器SFRC.程序存储器ROM
D.片内RAM的20H~2FH安节中的所有位和部分专用寄存器SFR的位
5、执行指令MOVXA,@DPTR时,、脚的电平为C。
A.高电平,高电平B.低电平,高电平
C.高电平,低电平D.低电平,低电平
6、下列指令判断若P1口最低位为高电平就转LP,否则就执行下一句的是B。
A.JNBP1.0,LPB.JBP1.0,LPC.JCP1.0,LPD.JNZP1.0,LP
7、已知A=87H,(30H)=76H,执行XRLA,30H后,其结果为:C。
A.A=F1H(30H)=76HP=0B.A=87H(30H)=76HP=1
C.A=F1H(30H)=76HP=1D.A=76H(30H)=87HP=1
8、MCS-51复位后,下列指令能使R0低4位不变,高4位置F的是D。
A.ANLR0,#0F0HB.ANLR0,#0FHC.ORL0,#0F0HD.ORL00H,#0FH
9、MCS-51指令系统中,指令DAA应跟在B。
A.加法指令后B.BCD码的加法指令后
C.减法指令后D.BCD码的减法指令后
10、8051单片机的定时器T1用作定时方式时是B。
A.由内部时钟频率定时,一个时钟周期加1
B.由内部时钟频率定时,一个机器周期加1
C.由外部时钟频率定时,一个时钟周期加1
D.由外部时钟频率定时,一个机器周期加1
11、访问外部存储器或其它接口芯片时,作数据线和低8位地址线的是A。
A.P0口B.P1口C.P2口D.P0口和P2口
12、对于8051单片机,其内部RAM20H-2FH单元C。
A.只能位寻址B.只能字节寻址C.既可位寻址又可字节寻址D.少部分只能位寻址
13、8051单片机中,输入/输出引脚中有专门的第二功能的引脚是D。
A.P0B.P1C.P2D.P3
14、当程序状态字寄存器PSW状态字中RS1和RS0分别为0和1时,系统使用的工作寄存器组为B。
A.组0B.组1C.组2D.组3
15、MCS-51寻址方式中,操作数Ri加前缀“@”号的寻址方式是A。
A.寄存器间接寻址B.寄存器寻址C.基址加变址寻址D.立即寻址
16、单片机中使用MOVXA,@R1指令,C寻址数据存储器1050H单元。
A.能直接B.不能C.与P2口配合能D.与P1口配合能
17、指令MOVR0,#20H17.177执行前(R0)=30H,(20H)=38H,执行后(R0)=B。
A.00HB.20HC.30HD.38H
18、执行如下三条指令后,30H单元的内容是B。
MOVR1,#30H
MOV40H,#0EH
MOV@R1,40H
A.40HB.0EHC.30HD.FFH
19、下列指令能使累加器A高4位不变,低4位置F的是C。
A.ANLA,#0FHB.ANLA,#0F0HC.ORLA,#0FHD.ORLA,#0F0H
20、下列指令能使P1口的最低位置1的是B。
A.ANLP1,#80HB.SETB90HC.ORLP1,#0FFHD.ORLP1,#80H
21、MCS-51单片机CPU的主要组成部分为A。
A.运算器、控制器B.加法器、寄存器C.运算器、加法器D.运算器、译码器
22、单片机上电复位后,PC的内容和SP的内容为B。
A.0000H,00HB.0000H,07HC.0003H,07HD.0800H,08H
23、访问外部存储器或其它接口芯片时,作数据线和低8位地址线的是A。
A.P0口B.P1口C.P2口D.P0口和P2口
24、8051单片机若晶振频率为fosc=12MHz,则一个机器周期等于CS。
A.1/12B.1/2C.1D.2
25、MCS-51的片内外的ROM是统一编址的,如果端保持高电平,8051的程序计数器PC在B地址范围内。
A.1000H—FFFFHB.0000H—FFFFHC.0001H—0FFFHD.0000H—0FFFH
26、下列指令判断若P1口最低位为高电平就转LP,否则就执行下一句的是B。
A.JNBP1.0,LPB.JBP1.0,LPC.JCP1.0,LPD.JNZP1.0,LP
27、执行如下三条指令后,30H单元的内容是B。
MOVR1,#30H
MOV40H,#0EH
MOV@R1,40H
A.40HB.0EHC.30HD.FFH
28、已知:A=DBHR4=73HCY=1,指令:SUBBA,R4执行后的结果是C。
A.A=73HB.A=DBHC.A=67HD.以上都不对
29、已知A=87H,(30H)=76H,执行XRLA,30H后,其结果为:C。
A.A=F1H(30H)=76HP=0B.A=87H(30H)=76HP=1
C.A=F1H(30H)=76HP=1D.A=76H(30H)=87HP=1
30、在存储器扩展电路中74LS373的主要功能是D。
A.存储数据B.存储地址C.锁存数据D.锁存地址
38、面程序运行后结果为B。
MOV????2FH,#30H
MOV????30H,#40H
MOV????R0,#30H
MOV????A,#20H
SETB???C
???ADDC???A,@R0
DEC????R0
???MOV????@R0,A
???A、(2FH)=30H(30H)=40HB、(2FH)=61H(30H)=40H
C、(2FH)=60H(30H)=60HD、(2FH)=30H(30H)=60H
40、R0=28H?(28H)=46
???MOV?A,#32H
MOV?A,45H
???MOV?A,@R0执行结果A的内容为A。
A、46H???B、28H???C、45H???D、32H
41、存储器的地址范围是0000H~0FFFH,它的容量为(D)。
(A)1KB(B)2KB(C)3KB(D)4KB
42、MOVXA,@R0指令中,源操作数采用(D)寻址方式,指令作用在()区间。
(A)寄存器,外部数据存储器(B)直接,程序存储器
(C)寄存器间接,内部数据存储器(D)寄存器间接,外部数据存储器
43、A7H和5BH两个立即数相加后,和为(C),(CY)是()。
(A)1CH,0(B)C1H,0(C)02H,1(D)C1H,1
44、若(A)=86H,(PSW)=80H,则执行RRCA指令后(A)
(A)C3H(B)B3H(C)0DH(D)56H
45、如果(P0)=65H,则当CPLP0.2
SETBC
MOVP0.4,C执行后(P0)=(C)
(A)61H(B)75H(C)71H(D)17H
46、(D)指令是MCS-51指令系统中执行时间最长且长达4个机器周期。
(A)比较转移(B)循环转移(C)增减量(D)乘除法
47、8031单片机中,将累加器A中的数送入外RAM的40H单元,可执行的指令(D)。
(A)MOVR1,40H(B)MOVR1,#40H
MOVX@R1,AMOVXR1,A
(C)MOVX40H,A(D)MOVR1,#40H
MOVX@R1,A
48、已知累加器A的数值为98H,它与0FAH相加,相加后会影响标志位CY、AC和OV位。各个位的值是(D)。
(A)0、0、0(B)1、0、1(C)1、1、1(D)1、1、0
49、不属于单片机与输入输出设备进行信息交换的方式是(D)。
(A)无条件传送方式(B)查询方式(C)中断方式(D)存储器直接存取方式
50、8051单片机内有(B)个16位的定时/计数器,每个定时/计数器都有()种工作方式。
(A)4,5(B)2,4(C)5,2(D)2,3
51、设置MCS-52使用寄存器第一组,地址范围是B。
A、00H-10HB、00H-07HC、10H-1FHD、08H-0FH
52、访问片外数据存储器的寻址方式是C。
A、立即寻址B、寄存器寻址C、寄存器间接寻址D、直接寻址
53、要设计一个32键的行列式键盘,至少需要占用A根引脚线。
A、12根B、32根C、18根D、无法确定
54、控制串口工作模式的寄存器是C。
A、TCONB、PCONC、SCOND、TMOD
55、下面哪种方式适合用于处理外部突发事件C。
A、DMAB、无条件传送C、中断D、条件查询传送
56、关于定时器,若振荡频率为12MHz,在方式0下最大定时时间为A。
A、8.192msB、65.536msC、0.256msD、16.384ms
57、当8031外扩程序存储器32KB时,需使用EPROM2764B。
A、2片B、3片C、4片D、5片
58、定时器/计数器工作于模式0时,其计数器为几位?D
A、8位B、16位C、14位D、13位
59、已知:R0=28H(28H)=46H
???????MOV?A,#32H
MOV?A,45H
???????MOV?A,@R0执行结果A的内容为A。
???A、46H???B、28H???C、45H???D、32H
60、下面程序运行后结果为B。
MOV????2FH,#30H
MOV????30H,#40H
MOV????R0,#30H
MOV????A,#20H
SETB???C
???ADDC???A,@R0
DEC????R0
???MOV????@R0,A
???A、(2FH)=30H(30H)=40HB、(2FH)=61H(30H)=40H
C、(2FH)=60H(30H)=60HD、(2FH)=30H(30H)=60H
61、8051与8052的区别是D。
(A)有无内部程序存储器 (B)内部数据存储器的类型不同
(C)内部程序存储器的类型不同 (D)内部数据存储单元数目的不同
62、在CPU内部,反映程序运行状态或反映运算结果的特征寄存器是A。
(A)PSW (B)PC (C)A (D)SP
63、访问外部数据存储器时,不起作用的信号是C。
(A) (B) (C) (D)ALE
64、AJMP指令的跳转范围是A。
(A)2KB (B)1KB (C)256 (D)64KB
65、下列指令中正确的是A。
(A)MOVP2.1,A(B)JBCTF0,L1(C)MOVXB,@DPTR (D)MOVA,@R3
66、MCS-51单片机扩展外部程序存储器和数据存储器B。
(A)分别独立编址 (B)统一编址
(C)分别独立编址或统一编址 (D)动态变址
67、在MCS-51中,需要外加电路实现中断撤除的是:A
(A)电平方式的外部中断 (B)脉冲方式的外部中断
(C)外部串行中断 (D)定时中断
68、通过串行口发送或接收数据时,在程序中应使用:C指令。
(A)MOVC (B)MOVX (C)MOV (D)XCHD
69、MCS-51的并行I/O口信息有两种读取方法:一种是读引脚,还有一种是A。
(A)读锁存器具(B)读数据库(C)读A累加器具(D)读CPU
70、ORG0000H
AJMP0040H
ORG0040H
MOVSP,#00H当执行完左边的程序后,PC的值是C。
0040H(B)0041H(C)0042H(D)0043H
71、单片机中的程序计数器PC用来B。
A.存放指令B.存放正在执行的指令地址C.存放下一条指令地址D.存放上一条指令地址
72、8.PSW中的RS1和RS0用来A。
A.选择工作寄存器组号B.指示复位C.选择定时器D.选择工作方式
73、8051单片机上电复位后,堆栈区的最大允许范围是内部RAM的D。
A.00H-FFHB.00H-07HC.07H-7FHD.08H-7FH
74、16.寻址方式就是C的方式。
A.查找指令操作码B.查找指令C.查找指令操作数D.查找指令操作码和操作数
75、MCS-51单片机的数据指针DPTR是一个16位的专用地址指针寄存器,主要用来B。
A.存放指令B.存放16位地址,作间址寄存器使用C.存放下一条指令地址D.存放上一条指令地址
76、单片机8051的XTAL1和XTAL2引脚是D引脚。
A.外接定时器B.外接串行口C.外接中断D.外接晶振
77、单片机的堆栈指针SP始终是指示B。
A.堆栈底B.堆栈顶C.堆栈地址D.堆栈中间位置
78、MCS-51汇编语言指令格式中,唯一不可缺少的部分是B。
A.标号B.操作码C.操作数D.注释
79、MCS-51的源操作数为立即寻址的指令中,立即数就是B。
A.放在寄存器R0中的内容B.放在程序中的常数
C.放在A中的内容D.放在B中的内容
80、84.MCS-51指令系统中,格式为:ORG16位地址的指令功能是C。
A.用于定义字节B.用于定义字C.用来定义汇编程序的起始地址D.用于定义某特定位的标识符
81、上电复位后,PSW的值为D。
A.1B.07HC.0FFHD.0
82、复位后,堆栈指针SP在内部RAM中的直接地址是C。
A.00HB.07HC.81HD.FFH
83、8051单片机若晶振频率为fosc=12MHz,则一个机器周期等于CS。
A.1/12B.1/2C.1D.2
84、单片机上电后或复位后,工作寄存器R0是在A。
A.0区00H单元B.0区01H单元C.0区09H单元D.SFR
85、MCS-51指令系统中,指令ADDA,R0执行前(A)=86H,(R0)=7AH,(C)=0执行后,其结果为A。
A.(A)=00H(C)=1B.(A)=00H(C)=0
C.(A)=7AH(C)=1D.(A)=7AH(C)=0
86、下列指令能能使累加器A的最高位置1的是D。
A.ANLA,#7FHB.ANLA,#80HC.ORLA,#7FHD.ORLA,#80H
87、MCS-51指令系统中,指令DAA是D。
A.除法指令B.加1指令C.加法指令D.十进制调整指令
88、MCS-51指令系统中,执行下列指令后,其结果为D。
MOVA,#68
ADDA,#53
DAA
A.A=21CY=1OV=0B.A=21CY=1OV=1
C.A=21CY=0OV=0D.以上都不对
89、将A与立即数按位逻辑异或的指令是C。
A.ANLA,#dataB.ORLA,#dataC.XRLA,#dataD.XRLA,direct
90、在用接口传信息时,如果用一帧来表示一个字符,且每一帧中有一个起始位、一个结束位和若干个数据位,该传送属于A。
A.串行传送B.并行传送C.同步传送D.异步传送
三、简答题
1、8051的定时/计数器T0的有几种工作模式,对各工作模式作简单的叙述。(135页)
答:定时/计数器T0的模式:
0:13位计数器;
1:16位计数器;
2:8位循环计数器;
3:2个独立的8位计数器串行通信模式
CPU响应中断的条件有哪些?(129页)
答:1、CPU没有处在一个同级或高级的中断服务中
2、查询中断请求的机器周期是当前指令的最后一个机器周期
3、当前指令不是返回指令(RET,RETI)或访问IE、IP的指令。
对访问内部RAM和外部RAM,各应采用哪些寻址方式?
答:对内部RAM的寻址方式有直接寻址、寄存器间接寻址和可对位寻址的位寻址。
对外部RAM的寻址方式只能用寄存器R0/R1(8位地址)或DPTR(16位地址)间接寻址。
4、8031的扩展储存器系统中,为什么P0口要接一个8位锁存器,而P2口却不接?
答:这是因为P0口是扩展储存器系统的多路低8位地址和数据总线,在访问外部存储器时,P0口分时用作输出外部储存器低8位地址和传送数据,为了在整个访问外部存储器期间对外部存储器存在着有效的低8位地址信号,所以P0口需要外接一个地址锁存器。ALE信号就是用来把P0口输出的地址字节锁存在这个外接的锁存器中,再从锁存器输出外部存储器的低8位地址。而P2口只用作扩展存储器系统的高8位地址线,并在整个访问外部存储器期间不変,所以不必外接地址锁存器。
简述堆栈的功能。(不确定)
(1)在程序中断或子程序调用时,为了保护返回地址(断点)和保护现场而设立的RAM区。
(2)用MOVSP,#STK指令建立堆栈。
(3)存放数据按“后进先出”原则进行。
(4)利用PUSH、POP指令即可进行进栈、出栈操作。
MCS-51单片机系统中,外接程序存储器和数据存储器公用16位地址线和8位数据线,为什么不会发生冲突?
答:因为MCS-51单片机访问外部程序存储器用的指令是MOVC,控制线为,而访问外部数据存储器时,使用的指令是MOVX,有效的控制信号是,。所以不会发生冲突。
请用位操作指令实现X,Y的异或运算。
编程将片内RAM30H单元开始的30B的数据传送到片外RAM6000H开始的单元中去。
将字节地址30H~3FH单元的内容逐一取出减1,然后再放回原处,如果取出的内容为00H,则不要减1,仍将0放回原处。MOVR7,#10HMOV?R1,#30HLOOP:CJNE@R1,#00H,NEXTMOV?@R1,#00HSJMP?NEXT1?NEXT:DEC@R1?NEXT1:INCR1?DJNZ?R7,LOOPSJMP?$?END
将8个单字节数放片内30H~37H,它们求和结果放在片内40H,41H单元。
类似
11、80C51单片机的片内RAM低128单元分哪3个主要部分?各部分的主要功能是什么?
答:80C51单片机的片内RAM低128单元分为:
寄存器区(00H-1FH),共有四个寄存器组,主要为寄存器访问方式,常用数据存储。
位寻址区(20H-2FH),主要用于位数据存放,也可用于存放字节数据。
普通用户RAM区(30H-7FH),只用于存放字节数据。
A/D转换器转换数据的传送有几种方式?
(1)定时传送方式:A/D启动后,调用延时时间大于转换时间的延时程序后即可读取。
(2)查询方式:A/D启动后,查询EOC(转换结束信号),转换一完成即可读取转换数据。
(3)中断方式:将EOC作为外中断请求信号,转换一结束,即引起中断,读取转换数据。
已知一单片机系统的外接晶体振荡器的振荡频率为11.059MHz,请计算该单片机系统的拍节P、状态S、机器周期所对应的时间是多少?指令周期中的单字节双周期指令的执行时间是多少?(36页)
13.例:已知一单片机系统的外接晶体振荡器的振荡频率为6MHz,请计算该单片机系统的拍节P、状态S、机器周期所对应的时间是多少?指令周期中的单字节双周期指令的执行时间是多少?
答:已知fosc=6MHZ
则:系统的拍节P=1/fosc=1/(6106)s=1/6μs=0.167μs
系统的状态S=2P=21/6μs=0.33μs
机器周期T=6S=12P=121/6μs=2μs
单字节双周期指令的执行时间为2T=22μs=4μs
14、简述中断响应的主要内容。
由硬件自动生成一条调用指令LCALL转去中断服务,具体操作为:
(1)将程序计数器PC的内容(断点)压栈
(2)将中断入口地址装入PC,转去执行中断服务程序
简述操作系统实时调度机制包含哪两个方面?(236页)
一是在调度策略和算法上保证优先调度实时任务;
二是建立更多“安全切换”时间点,保证及时调度实时任务。
16、简述子程序调用和执行中断服务程序的异同点。
相同点:均能中断主程序执行本程序,然后再返回断点地址继续执行主程序。
不同点:1)中断服务程序入口地址是固定的,子程序调用入口地址是用户自己设定的。
2)中断服务子程序返回指令除具有子程序返回指令所具有的全部功能之外,还有清除中断响应时被置位的优先级状态、开放较低级中断和恢复中断逻辑等功能。
3)中断服务子程序是在满足中断申请的条件下,随机发生的;而子程序调用是用户主程序事先安排好的。
17、各中断源对应的中断服务程序的入口地址是否能任意设定?如果想将中断服务程序放置在程序存储区的任意区域,在程序中应该作何种设置?请举例加以说明。
答:各中断源的入口地址已经在中断地址区中被定义了,不能任意设定。
如果要将中断服务程序放置在程序存储区的任意区域,在程序中要通过在中断地址区的对应地址上设置跳转指令才可实现对中断服务程序的执行。
例如:外部中断0的中断服务程序INT0P放置在程序存储区的任意区域,此时,通过以下方式,可实现对中断服务程序的执行:
ORG0003H
LJMPINTOP
列举其他中断跳转的例子也可,但叙述的中断源要与中断地址相对应才可得分,如外中断0对应0003H地址。
MCS-51指令系统有哪几种寻址方式?
答:MCS-51指令系统有7种寻址方式,分别为:寄存器寻址,直接寻址,寄存器间接寻址,
立即寻址,相对寻址,基址寄存器加变址寄存器间接寻址(变址寻址),位寻址等方式。
简述变址寻址方式并举例说明。
(1)变址寻址是以DPTR或PC作基址寄存器,累加器A作变址寄存器以两者内容相加形式的16位地址作为操作数地址。
(2)变址寻址只能对移定存储器寻址,其指令只有三条:
MOVCA,@A+DPTR
MOVCA,@A+PC
JMP@A+DPTR
前二条为查表指令,后一条为无条件转移指令
MCS-51单片机系统I/O端口编址方式有哪几种?分别对其进行简要描述。(191页)
答:I/O端口编址两种方式:独立编址与统一编址。
1)独立编址方式:I/O寄存器地址空间和存储器地址空间分开编址,但需一套专门的读写I/O的指令和控制信号。
2)统一编址方式:I/O寄存器与数据存储器单元同等对待,统一编址。不需要专门的I/O指令,直接使用访问数据存储器的指令进行I/O操作,简单、方便且功能强。MCS-51使用统一编址的方式,每一接口芯片中的一个功能寄存器(端口)的地址就相当于一个RAM单元。
四、综合程序设计题:
1、在8051单片机的INTO引脚外接脉冲信号,要求每送来一个脉冲,把30H单元值加1,若30H单元记满则进位31H单元。试利用中断结构,编制一个脉冲计数程序。
ORG?0000H
?AJMP?MAIN
ORG?0003H
?AJMP?SUBG?
MAIN:MOV??A,#OOH?
???MOV??30H,A
???MOV???31H,A
MOV???SP,#70H?
SETB??INT0
SETB?EA
SETB??EX0
AJMP??$
ORG?0200H
SUBG:PUSH??ACC
INC???30H?
MOV??A,30H
JNZ??BACK
INC??31H
BACK:POP?
??RET1
2、片内RAM40H开始的单元内有10B二进制数,编程找出其中最大值并存于50H单元中。
MOVR7,#09H??????
MOV?A,@R0???????
LOOP:INC?????R0?
MOV30H,@R0?????????????????????????
CJNE?A,30H,NEHT??
NEXT:JNC?????BIE1?????????
MOV?A,30H???????
BIE1:?DJNZ????R7,LOOP?????
MOV?50H,A??
RET?????
3、片内RAM30H开始的单元中有10B的二进制数,请编程求它们之和(和<256)
ADDIO:MOVR0,30HMOV30H,A
MOVR7,#9RET
MOVA,@R0
LOOP:INCR0
ADDA,@R0
DJNZR7,LOOP
编制一个循环闪烁灯的程序。有8个发光二极管,每次其中某个灯闪烁点亮10次后,转到下一个闪烁10次,循环不止,编写出亮灯子程序。(注8个LED灯连接到P1口,低电平灯亮.)
MOVA,#10H灯亮初值
SHIFT:LCAILFLASH调闪亮10次子程序
RRA;右移一位
SJMPSHIFT;循环
FLASH:MOVR2,#0AH闪烁10次计数
FLASH1MOVP1,A;点亮
LCALLDELAY;延时
MOVP1,#00H;熄灭
LCALLDELAY;延时
DJNZR2,FLASH1;循环
RET
下图有4个LED灯,D1灯每1s状态改变一次,D2灯0.7s状态改变一次,D3灯每0.5s状态改变一次,D4灯每0.2s状态改变一次,KEY0按下时,D4灯灭。根据下图在操作系统RTXTiny基础上编写出LED灯控制功能程序,要求程序开始运行时,所有灯都关闭。单片机晶振为12MHz,RTX51的采用系统默认配置。
6、下图为D/A变换双缓冲两路同步输出电路图,请完成同步输出程序。
MOV?DPTR,#0DFFFHMOVA,#DATA1MOVX?@DPTR,#0BFFFHMOV?A,#DATA2MOVX?@DPTR,AMOV?DPTR,#7FFFHMOVX?@DPTR,APPT,CH9-151
7、请完成控制3个任务循环执行的RTX-51Tiny程序,每项任务程序中执行的是增量计数的功能。
#include
#include
longcounter0;
longcounter1;
longcounter2;
job(0)_task_0{
os_creat_task(1);
while(1){
counter0++;}
}
job(1)_task_1{
while(1){
counter1++;}
}
job(2)_task_2{
while(1){
counter2++;}
}
8、已知内部RAM30H单元开始存放20H个数据,将其传送到外部RAM的0000H单元开始的存储区,请编程实现。
MOVR0,#30H
MOVR1,#00H
MOVR2,#20H
LOOP:MOVA,@R0;取数
MOVX@R1,A;存数
1NCR0
1NCR1
DJNZR2,LOOP
RET
9、编写一段子程序,将二位压缩的BCD码转换为二进制数,入口、出口均是A。若是非法的BCD码,则A返回值为255。
MOV??R7,#10H??????????
?MOV??R1,#30H?
?LOOP:?CJNE?@R1,#00H,NEXT
?MOV??@R1,#00H???????????
SJMP???NEXT1???
?NEXT:??DEC?@R1????
NEXT1:?INC???R1
DJNZ???R7,LOOP??????????
SJMP???$??????????
?END
10、3、共有3个LED灯,分别为LED0,LED1,LED2,LED0每2s改变一次状态,LED1每1s改变一次状态,LED2每0.5秒改变一次状态。LED2可以由外部按键控制,当按下按键时,LED2熄灭。
设计其硬件接口电路(用文字描述即可,不需要画出具体电路。)
根据设计的电路,在操作系统RTXTiny基础上编写完整LED灯控制功能程序。单片机晶振为12MHz,RTX51的采用系统默认配置。
11、设计一个3×4行列式键盘电路并编写键盘扫描子程序,要求具有去抖动及禁止自动重复功能。
设计出硬件接线图。
根据硬件接线图,键盘扫描子程序。
接上:
设计两个变量counter0,counter1。变量counter0每隔500ms增加1,变量counter1每隔300ms增加1,晶振12MHz,RTX51的采用系统默认配置,请完成任务0和任务1程序。
13、下图借助两片74HC595“串入并出”芯片即可将8XC5X芯片的3根I/O引脚通过串行方式扩展为16根输出引脚。
假设扩展的输出引脚ED7~ED0输出的信息在内存中的映像地址为EDATA1,ED15~ED8输出的信息在内存中的映像地址为EDATA1+1,则可通过如下程序段将数据串行输出到ED15~ED0引脚。试编写出其驱动程序。
EDATA1DATA38H ;假设输出数据存放在38H、39H单元中SDI BITP1.0 ;串行数据输入接P1.0引脚SRCLK BIT P1.1 ;串行移位脉冲接P1.1引脚RCLK BIT P1.2 ;并行输出锁存脉冲接P1.2引脚;----------串行数据输出程序段---------CLRRCLK ;并行锁存脉冲置为低电平MOVR0,#EDATA1MOVR2,#2 ;共需要串行输出两个字节
LOOP1:MOVA,@R0 ;取输出数据MOVR3,#8 ;右移8次LOOP2:CLRSRCLK ;串行移位脉冲置为低电平RRCA ;带进位Cy循环右移MOVSDI,C;串行数据送SDINOP ;插入NOP指令适当延迟(是否延迟由CPU指令周期决定)SETBSRCLK ;串行移位脉冲置为高电平,形成上升沿DJNZR3,LOOP2INCR0 ;R0加1,指向高8位DJNZR2,LOOP1 ;循环,输出高8位SETBRCLK ;并行输出锁存脉冲置为高电平,形成上升沿
利用定时/计数器T1门控信号GATE功能,测量引脚上正脉冲信号的宽度(单位为机器周期),试编写出测量程序。
ORG0000H????????LJMP?MAIN????????ORG?100H????????MAIN:?MOV?SP,?#4FH;??????? ?MOV?A,?TMOD;??????? ?ANL?A,?#0FH;??????? ? ORL?A,#10010000B;???????? MOVTMOD,A;???????? MOV?TLI,00H;???????WAITL:?JB?P3.3,WAITL;??????? SETB?TR1;???????WAITH:JNBP3.3,WAITH;???????WAITHL:JBP3.3,WAITHL;????????CLRTR1;
15、将字节地址30H~3FH单元的内容逐一取出减1,然后再放回原处,如果取出的内容为00H,则不要减1,仍将0放回原处。
MOVR7,#10H
MOVR1,#30H
LOOP:CJNE@R1,#00H,NEXT
MOV@R1,#00H
SJMPNEXT1
NEXT:DEC@R1
NEXT1:INCR1
DJNZR7
SJMP$
END
将8个单字节数放片内30H~37H,它们求和结果放在片内40H,41H单元。(类似
使用定时/计数器0以工作方式2实现定时,在P1.0输出周期为200μs的连续方波。已知晶振频率fosc=6MH。求计数初值,方式控制字,编制相应程序。(中断方式)(14分)
初值X=256-50=206=0CEH,TMOD=02H
MOVIE,#00H
MOVTMOD,#02H
MOVTH0#0CEH
MOVTL0,#0CEH
SETTR0
LOOP:JBCTF0,LOOP1
AJMPLOOP
LOOP1:CPLP1,0
AJMPLOOP
17、设计一个2×2行列式键盘电路并编写键盘扫描子程序,要求具有去抖动及禁止自动重复功能。设计出硬件接线图。根据硬件接线图,设计出键盘扫描子程序。
键盘相关ppt:第九章ch9.ppt104~112页p_09_1.ppt120~164页
18、下面程序的两个任务是简单的计数器循环,试完成这两个任务轮转调度功能的RTX51应用程序。
#include
#include
intcounter0;
intcounter1;
voidjob0(void)_task_0{
os_creat_task(1);
while(1){
counter0++;}
}
voidjob1(void)_task_1{
while(1){
counter1++;}
}
19、在外RAM2000H单元开始建立0~99(BCD码)的一百个数,试编制此程序。
MOVDPTR,#2000H;
MOVR0,#100;#64
MOVA,#00
LOOP:MOVX@DPTR,A
INCDPTR
ADDA,#01H
DAA
DJNZR0,LOOP
RET
20.设晶振为12MHz,选用T1的工作方式1产生1mS定时,在P1.1口输出周期为2mS的方波(用中断法)。
ORG0000H
SJMPMAIN
ORG001BH
SJMPITT1
ORG0030H
MAIN:MOVTMOD,#10H
MOVTH1,#0FCH
MOVTL1,#18H
SETBTR1
SETBET1
SETBEA
21、有一低频信号从单片机8XC5X的P3.2引脚输入,如右图所示。请编写出测量该低频信号频率和脉冲宽度的程序。
ORG0000HLJMPMAIN ;跳到主程序入口ORG100H
MAIN:MOVSP,#5FH ;初始化堆栈指针SP;初始化定时器T0(工作在方式0)MOVTL0,#00H;计数器初值为0MOVTH0,#00HMOVTMOD,#00000001B;定时器T0在定时方式,C/T=0,M1M0为01,即方式1;由TR0控制计数器开和关,GATE位为0;初始化INT0中断
SETBIT0;外中断INT0定义为下降触发方式JNBIE0,$;等待P3.2引脚出现下降沿SETBTR0CLRIE0 ;清除INT0中断标志位JNBIE0,$ ;再次等待INT0中断CLRTR0 ;停止TR0计数;至此已经测出了被测信号的周期MOVR2,TL0 ;保存结果MOVR3,TH0
;测信号脉冲宽度MOVTL0,#00H ;计数器初值为0MOVTH0,#00HANLTMOD,#0F0H ;与0F0H相与,使低4位清零,高4位保持不变ORLTMOD,#00001001B ;由INT0和TR0共同控制计数器开和关,GATE位为1 ;定时方式,即C/T位为0,M1M0为01,即方式1
SETBIT0;外中断INT0定义为下降触发方式JNBIE0,$ ;等待P3.2引脚出现下降沿SETBTR0CLRIE0 ;清除INT0中断标志位JNBIE0,$ ;再次等待INT0中断CLRTR0 ;停止TR0计数;至此已经测出了被测信号的周期MOVR2,TL0 ;保存结果MOVR3,TH0
;测信号脉冲宽度MOVTL0,#00H ;计数器初值为0MOVTH0,#00HANLTMOD,#0F0H ;与0F0H相与,使低4位清零,高4位保持不变ORLTMOD,#00001001B ;由INT0和TR0共同控制计数器开和关,GATE位为1 ;定时方式,即C/T位为0,M1M0为01,即方式1
WAITL:JBP3.2,WAITL;等P3.2引脚为低电平,即等待下降沿SETBTR0;在下降沿开启计数器WAITH:JNBP3.2,WAITH;等待P3.2引脚变高电平WAITHL:JBP3.2,WAITHL;等待P3.2引脚正脉冲下降沿CLRTR0;在第二个下降沿关闭计数器T0;至此测出了信号的脉冲宽度
已知片内RAM中ONE和TWO两个单元中存有两个无符号数,将两个数中的小者存入30H单元。请完成以下程序实现上述功能。
MOVA,ONE
CJNEA,TWO,BIG
SJMPSTO
BIG:JCSTO
MOVA,TWO
STO:MOV30H,A
RET
23、编写一个程序,把片内RAM从30H开始存放的16个数据传送到片外RAM从0000H开始的单元中。
MOVR0,#30H
MOVDPTR,#0000H
MOVR1,#16H
LOOP:MOVA,@R0
MOVX@DPTR,A
INVR0
INCDPTR
DJNZR1,LOOP
SJMP$
24、如果要在P1.0产生周期为3ms、占空比为2/3的脉冲波,应该如何编写程序。(fosc=12MHz)
画出占空比为2/3的方波,并标明维持时间;
给出编程思路及所采用的定时器及定时器的工作方式;
编写出程序。
用定时器T0来控制频率,定时器T1来控制占空比。
编程思路:
1、T0定时器中断是让一个I0口输出低电平,在这个定时器T0的中断当中起动定时器T1;
2、T1是让IO口输出高电平。
改变定时器T0的初值就可以改变频率,改变定时器T1的初值就可以改变占空比。
#include//包含51单片机寄存器定义的头文件
#defineucharunsignedchar
#defineuintunsignedint
sbitout=P1^4;
voidmain()
{
EA=1;
ET0=1;
ET1=1;
TMOD=0X11;//定时器0和定时器1都工作在方式1,16位计数器;
TH0=(65536-3000)/256; //T0定时3毫秒,高八位
TL0=(65536-3000)%256;//低八位
TH1=(65536-1000)/256; //T1定时1毫秒
TL1=(65536-1000)%256;
TR0=1;TR1=1;
while(1);//相当于汇编:SJMP$,虚拟主程序
}
voidt0()interrupt1
{//重装初值
TH0=(65536-3000)/256;
TL0=(65536-3000)%256;
TR1=1;//启动TR1
out=0;
}
voidt1()interrupt3
{//重装初值
TH1=(65536-1000)/256;
TL1=(65536-1000)%256;
TR1=0;//关闭TR1
out=1;
}
HERE:SLMPHERE
ITT1:MOVTH1,#0FCH
MOVTL1,#18H
CPLP1.1
RETI
END
|
|