1、单片机原理及应用第 1 页 共 10 页一、判断题1在 MCS51 单片机内部结构中,TMOD 为模式控制寄存器,主要用来控制定时器的启动与停止。F2在 MCS51 单片机内部结构中,TCON 为控制寄存器,主要用来控制定时器的启动与停止。T3MCS51 单片机的两个定时器的均有两种工作方式,即定时和计数工作方式。T48051 单片机 5 个中断源相应地在芯片上都有中断请求输入引脚。F5可使用 SETB TRi 启动定时器工作。T6中断初始化时,对中断控制器的状态设置,只可使用位操作指令,而不能使用字节操作指令。F7MCS51 单片机的中断允许寄存器的 IE 的作用是用来对各中断源进行开放或屏
2、蔽的控制。T8编写中断服务程序时,应在中断入口矢量地址处放一条无条件转移指令,以防止中断服务程序容纳不下。T9对串行口中断,CPU 响应中断后,必须在中断服务程序中用软件清除相应的中断标志位,以撤消中断请求。T10串行口数据缓冲器 SBUF 是可以直接寻址的专用寄存器。T11如设外部中断 0 中断,应置中断允许寄存器 IE 的 EA 位和 EX0 位为 1。T12当 8031 的定时器 T0 计满数变为 0 后,溢出标志位(TCON 的 TF0)也变为 0。F13工作寄存器区不允许做普通的 RAM 单元来使用。F14工作寄存器组是通过置位 PSW 中的 RS0 和 RS1 来切换的。T15特殊
3、功能寄存器可以当作普通的 RAM 单元来使用。F168051 单片机复位后,PC 指针初始化为 0000H,使单片机从该地址单元开始执行程序。T1751 单片机响应中断后,所有中断请求标志位都由硬件自动清零。F18在 51 系列单片机中,中断服务程序从矢量地址开始执行,一直到返回指令 RETI 为止。T19在执行子程序调用或执行中断服务程序时都将产生压栈的动作。T20定时/计数器在工作时需要消耗 CPU 的时间。F21在 51 系列单片机的指令中,既有带借位的减法指令,又有不带借位的减法指令。F22串行通信的优点是只需一对传送线,成本低,适于远距离通信,缺点是传送速度较低。T23在异步通信的帧
4、格式中,数据位是低位在前高位在后的排列方式。T24异步通信中,波特率是指每秒传送二进制代码的位数,单位是 b/s。T25在 8051 的串行通信中,串行口的发送和接收都是对特殊功能寄存器 SBUF 进行读/写而实现的。T26在单片机 8051 中,发送 SBUF 和接收 SBUF 在物理上是独立的,但地址是相同的。T单片机原理及应用第 2 页 共 10 页27要进行多机通信,MCS-51 串行接口的工作方式应为方式 1。F28.中断服务程序的最后一条指令是 RET。F29.P2 口既可以作为 I/O 使用,又可以作地址/数据复用口使用。F30.在中断响应阶段 CPU 一定要做如下两件工作:保护
5、断点和给出中断服务程序入口地址。T31.MOV A,30H 的源操作数为立即寻址方式。F32.AJMP 跳转空间最大可达到 64KB。F33.定时器与计数器的工作原理均是对输入脉冲进行计数。T34.由于 MCS-51 的串行口的数据发送和接收缓冲器都是 SBUF,所以其串行口不能同时发送和接收数据,即不是全双工的串行口。F35.TMOD 中 GATE=1 时,表示由两个信号控制定时器的启停。T36.当 MCS-51 上电复位时,堆栈指针 SP=00H。F37.MCS-51 的特殊功能寄存器分布在 60H80H 地址范围内。F38.执行返回指令时,返回的断点是调用指令的首地址。F39.MOV A
6、,R0 这是寄存器寻址方式。T40.8051 单片机的 P0 口既可以做数据口线又可以做地址口线 。 T41.8051 单片机的 P2 口只能用作通用 I/O 口。F42.程序存储器和数据存储器的作用不同,程序存储器一般用来存放数据表格和程序,而数据存储器一般用来存放数据。F43.要进行多机通信,MCS-51 串行接口的工作方式应为方式 2 或方式 3。T44.MCS-51 外扩 I/O 口与外扩 RAM 是统一编址的。T-二、选择题1.8031 单片机的定时器 T0 用作计数方式时是_C_ 。 A由内部时钟频率定时,一个时钟周期加 1 B由内部时钟频率定时,一个机器周期加 1C由外部计数脉冲
7、计数,下降沿加 1 D由外部计数脉冲计数,一个机器周期加 12.8031 单片机的定时器 T0 用作定时方式时是_D_ 。 A由内部时钟频率定时,一个时钟周期加 1 B由外部计数脉冲计数,一个机器周期加 1 C外部定时脉冲由 T0(P3.4)输入定时 D由内部时钟频率计数,一个机器周期加 13.用 8031 的定时器 T1 作定时方式,用模式 1,则初始化编程为_C_ 。AMOV TOMD,#01H BMOV TOMD,#50H CMOV TOMD,#10H DMOV TCON,#02H 单片机原理及应用第 3 页 共 10 页4.启动定时器 1 开始定时的指令是_D_ 。ACLR TR0 B
8、CLR TR1 CSETB TR0 DSETB TR15.使 8031 的定时器 T0 停止计数的指令是_A_ 。ACLR TR0 BCLR TR1 CSETB TR0 DSETB TR16.下列指令判断若定时器 T0 计满数就转 LP 的是_D_ 。AJB T0,LP BJNB TF0,LP CJNB TR0,LP DJB TF0,LP 7.下列指令判断若定时器 T0 未计满数就原地等待的是_B_ 。AJB T0,$ BJNB TF0,$ CJNB TR0,$ DJB TF0,$ 8.用 8031 的定时器 T0 定时,用模式 2,则应_D_ 。A启动 T0 前向 TH0 置入计数初值,TL
9、0 置 0,以后每次重新计数前要重新置入计数初值。 B启动 T0 前向 TH0、TL0 置入计数初值,以后每次重新计数前要重新置入计数初值。C启动 T0 前向 TH0、TL0 置入计数初值,以后不再置入。D启动 T0 前向 TH0、TL0 置入相同的计数初值,以后不再置入。9.8031 单片机晶振频率 fosc=12MHz,则一个机器周期为_B_ S。A12 B1 C2 D6 10.MCS51 单片机定时器溢出标志是_D_ 。ATR1 和 TR0 BIE1 和 IE0 CIT1 和 IT0 DTF1 和 TF011.用定时器 T1 方式 2 计数,要求每计满 100 次,向 CPU 发出中断请
10、求,TH1、TL1 的初始值是_A_ 。A9CH B20H C64H DA0H12.MCS51 单片机外部中断 1 和外部中断 0 的触发方式选择位是_C_ 。ATR1 和 TR0 BIE1 和 IE0 CIT1 和 IT0 DTF1 和 TF013.MCS51 单片机定时器 T1 的溢出标志 TF1,计满数产生溢出时不用中断方式而用查询方式,则应_B_ 。A由硬件清零 B由软件清零 C由软件置于 D可不处理14.MCS51 单片机定时器 T0 的溢出标志 TF0,若计满数产生溢出时,其值为是_C_ 。A00H BFFH C1 D计数值15.MCS51 单片机定时器 T0 的溢出标志 TF0,
11、若计满数在 CPU 响应中断后_A_ 。A由硬件清零 B由软件清零 CA 和 B 都可以 D随机状态 16.8031 响应中断后,中断的一般处理过程是_A_ 。A关中断,保护现场,开中断,中断服务,关中断,恢复现场,开中断,中断返回B关中断,保护现场,保护断点,开中断,中断服务,恢复现场,中断返回C关中断,保护现场,保护中断,中断服务,恢复断点,开中断,中断返回D关中断,保护断点,保护现场,中断服务,关中断,恢复现场,开中断,中断返回17.MCS51 单片机串行口发送/接收中断源的工作过程是:当串行口接收或发送完一帧数据时,将 SCON 中的_A_ ,向 CPU 申请中断。ARI 或 TI 置
12、 1 BRI 或 TI 置 0 CRI 置 1 或 TI 置 0 DRI 置 0 或 TI 置 118.MCS51 单片机响应中断的过程是_D_ 。A对应中断矢量地址装入 PC 单片机原理及应用第 4 页 共 10 页B关中断,程序转到中断服务程序C断点压栈,PC 指向中断服务程序地址D断点 PC 自动压栈,对应中断矢量地址装入 PC,程序转到该矢量地址,再转至中断服务程序首地址19执行中断处理程序最后一句指令 RETI 后,_D_ 。A程序返回到 ACALL 的下一句 B程序返回到 LCALL 的下一句C程序返回到主程序开始处 D程序返回到响应中断时一句的下一句20.MCS51 的串行口工作
13、方式中适合多机通信的是_ B _ 。A方式 0 B方式 3 C方式 1 21.MCS51 单片机响应中断矢量地址是_ C _ 。A中断服务程序的首句地址 B中断服务程序的出口地址C中断服务程序的入口地址 D主程序等待中断指令的地址22.MCS51 单片机外部有 40 个引脚,其中,地址锁存允许控制信号引脚是_A_。A. ALE B. C. D. RSTPSENA23.MCS51 单片机串行口接收数据的次序是下述_B_的顺序 。(1)接收完一帧数据后,硬件自动将 SCON 的 R1 置 1 (2)用软件将 RI 清零(3)接收到的数据由 SBUF 读出(4)置 SCON 的 REN 为 1,外部
14、数据由 RXD 输入A (1) (2) (3) (4) B (4) (1) (2) (3) C (4) (3) (1) (2) D (3) (4) (1) (2)24.MCS51 单片机串行口发送数据的次序是下述_A_的顺序 。(1)待发送数据送 SBUF(2)硬件自动将 SCON 的 TI 置 1(3)经 TXD 串行发送一帧数据完毕(4)用软件将 TI 清 0A (1) (3) (2) (4) B (1) (2) (3) (4) C (4) (3) (1) (2) D (3) (4) (1) (2)25.一主程序中有一句 LP:SJMP LP,功能指令为等待中断,当发生中断且中断返回后,_
15、D_ 。A返回到主程序开始处 B返回到该句的下一条指令处C返回到该句的上一条指令处 D返回到该句26.8031 单片机的_D_口的引脚,还具有外中断、串行通信等第二功能。A. P0 B. P1 C. P2 D. P327.单片机应用程序一般存放在_B_。 A. RAM B. ROM C. 寄存器 D. CPU28.INTEL8051CPU 是_C_位的单片机。 A. 16 B. 4 C. 8 D. 准 1629.当需要从 MCS-51 单片机程序存储器取数据时,采用的指令为_B_。A. MOV A, R1 B. MOVC A,A + DPTR单片机原理及应用第 5 页 共 10 页C. MOV
16、X A, R0 D. MOVX A, DPTR30.8031 单片机中既可位寻址又可字节寻址的单元是_A_ 。A. 20H B. 30H C. 00H D. 70H31.MCS-51 单片机复位操作的主要功能是把 PC 初始化为_C_。A.0100H B.2080H C.0000H D.8000H32.若单片机的振荡频率为 6MHz,设定时器工作在方式 1 需要定时 1ms,则定时器初值应为_C_ 。A.500 B.1000 C.216-500 D.216-100033.当外部中断请求的信号方式为脉冲方式时,要求中断请求信号的高电平状态和低电平状态都应至少维持_A_。A.1 个机器周期 B.2
17、 个机器周期 C.4 个机器周期 D.10 个晶振周期34.8031 单片机中,将累加器 A 中的数送入外 RAM 的 40H 单元,可执行的指令_D_。A.MOV R1 ,40H B. MOV R1 ,#40H C. MOVX 40H , A D. MOV R1, #40HMOVX R1 , A MOVX R1 , A MOVX R1 , A35.在中断服务程序中至少应有一条_D_。A. 传送指令 B. 转移指令 C. 加法指令 D. 中断返回指令36要用传送指令访问 MCS-51 片外 RAM,它的指令操作码助记符是_B _。A. MOV B. MOVX C. MOVC D. 以上都行37
18、.执行 LACLL 4000H 指令时, MCS-51 所完成的操作是_D_ 。A. 保护 PC B. 4000H PC C. 保护现场 D. PC+3 入栈, 4000H PC38.若某存储器芯片地址线为 12 根,那么它的存储容量为_C_ 。A. 1KB B. 2KB C.4KB D.8KB39.PC 中存放的是_A_ 。A. 下一条指令的地址 B. 当前正在执行的指令 C. 当前正在执行指令的地址 D. 下一条要执行的指令40.关于 MCS-51 的堆栈操作,正确的说法是_C_ 。A. 先入栈,再修改栈指针 B. 先修改栈指针,再出栈 C. 先修改栈指针,在入栈 D. 以上都不对41.某
19、种存储器芯片是 8KB*4/片,那么它的地址线根数是_C_ 。A. 11 根 B. 12 根 C. 13 根 D. 14 根42.用 MCS-51 用串行扩展并行 I/O 口时,串行接口工作方式选择_A_。A. 方式 0 B. 方式 1 C. 方式 2 D. 方式 343.MCS-51 外扩 ROM,RAM 和 I/O 口时,它的数据总线是_A_。A. P0 B. P1 C. P2 D. P344.对程序存储器的读操作,只能使用_D_。A. MOV 指令 B. PUSH 指令 C. MOVX 指令 D. MOVC 指令-三、简答题18031 的扩展储存器系统中,为什么 P0 口要接一个 8 位
20、锁存器,而 P2 口却不接。因为 P0 口是扩展存储器系统的低 8 位地址线和数据总线,在访问外部存储器时,P0 口分时用作输出外部存储器低 8 位地址和传送数据。为了使整个访问外部存储器期间低 8 位地址信号始终有效,P0 口需要外接一个地址锁存器。ALE 信号就是用来把 P0 口输出的地址字节锁存在这个外接的锁存器中,再从锁存器输出外部存储单片机原理及应用第 6 页 共 10 页器的低 8 位地址。而 P2 口只用作扩展存储器系统的高 8 位地址线,并在整个访问外部存储器期间不变,所以不必外接地址锁存器。2简述 51 单片机中断的概念。当 CPU 正在处理某件事情的时候,外部发生的某一事件
21、请求 CPU 迅速去处理,于是,CPU 暂时中止当前的工作,转去处理所发生的事件。中断服务处理完该事件以后,再回到原来被中止的地方,继续原来的工作,这样的过程成为中断。3什么是保护现场,什么是恢复现场。保护现场:当 CPU 响应中断程序时,硬件会自动把断点地址(16 位程序计数器的值)压入堆栈,但用户还须注意保护有关工作寄存器、累加器、标志位等信息。恢复现场:在完成中断服务程序后,恢复原工作寄存器、累加器、标志位等的内容。451 系列单片机具有几个中断源,分别是如何定义的。51 系列单片机具有 5 个中断源,分别是外部中断 INT0 和外部中断 INT1、定时器溢出中断 0 和定时器溢出中断
22、1 以及串行中断。5各中断源对应的中断服务程序的入口地址是否能任意设定。 各中断源的入口地址已经在中断地址区中被定义了,不能任意设定。6在 51 系列单片机执行中断服务程序时,为什么一般都要在矢量地址开始的地方放一条跳转指令。因为 51 系列单片机的两个相邻中断源中断服务程序入口地址相距只有 8 个单元,一般的中断服务程序是容纳不下的,因此一般都要在相应的中断服务程序入口地址处放一条跳转指令,转到实际存放中断服务程序的位置。7为什么一般都把主程序的起始地址放在 0030H 之后。因为 0000H0030H 中有中断的矢量地址,为了避免冲突,一般都把主程序的起始地址放在 0030H 之后。8如果
23、想将中断服务程序放置在程序存储区的任意区域,在程序中应该作何种设置。 要将中断服务程序放置在程序存储区的任意区域,只要在对应的中断矢量入口处填写相应的跳转指令即可。951 系列单片机扩展外部程序存储器时,实际上还有多少条 I/O 线可以使用。外接程序存储器时 P0 和 P2 口要用作数据和地址总线,所以只有 P1 和 P3 口可用作 I/O 口,共 16 条 I/O 线。在使用外部存储器时,除了占用 P0 和 P2 口外,还需要用 P3 口 RD(P3.7)和 WR(P3.6)两条控制线,所以这种情况下就只剩下 14 条 I/O 线可用了。10数据指针 DPTR 和程序计数器 PC 都是 16
24、 位寄存器,它们有什么不同之处?数据指针 DPTR 是一个 16 位的寄存器,由 2 个 8 位特殊功能寄存器 DPH 和 DPL 拼装而成。DPH 作 DPTR 的高8 位,DPL 作 DPTR 的低 8 位。因此,DPTR 既可作为一个 16 位寄存器来使用,也可以作为二个独立的 8 位寄存器 DPH 和 DPL 使用。DPTR 用作地址指针用来存放片内、片外 ROM 和片外 RAM 的地址,可寻址范围为 64K 地址空间寻址。程序计数器 PC 是一个 16 位加 1 计数器,用来存放将要执行的指令地址,编码范围为 0000HFFFFH 共64K。-四、简单编程题1把累加器 A 中的低 4
25、 位送到外部 RAM 的 2000H 单元中,试编程序。ANL A,#OFHMOV DPTR,#2000HMOVX DPTR,A2利用乘法指令编写 15H33H 的程序,将乘积的高 8 位存入 31H 单元,低 8 位存入 30H 单元MOV A,#15HMOV B,#33HMUL A,BMOV 31H,BMOV 30H,A3编写子程序,将片内 35H55H 单元中的内容送入到以 3000H 为首的存储区中。MOV R0,#35H单片机原理及应用第 7 页 共 10 页MOV R1,#21HMOV DPTR,#3000HLOOP:MOV A,R0MOVX DPTR, AINC R0INC DP
26、TRDJNZ R1,LOOPRET4请将片外 RAM 20H25H 单元清零 MOV R0,#20H MOV R7,#06H CLR A LOOP:MOVX R0,A INC R0 DJNZ R7,LOOP 5请将 ROM 3000H 单元内容送 R7 MOV DPTR,#3000H CLR A MOVC A,A+DPTR MOV R7,A 6已知在累加器 A 中存放一个 BCD 数(9),请编程实现一个查平方表的子程序。SQR:INC AMOVC A,A+PCRETTAB:DB 0,1,4,9,16,25,36,49,64,817一个十六进制数存放在内部 RAM 的 HEX 单元的低 4 位
27、中, 将其转换成 ASCII 码并送回 HEX 单元。 HEXASC: MOV A, HEXANL A, 0FHADD A, 3 ; 修改指针MOVC A, A+PCMOV HEX, A ; 2 字节指令RETASCTAB: DB 30H,31H,32H,33H,34H,35H,36H,37H,38H,39H,41H,42H,43H,44H,45H,46H8.有两个无符号数 x、y 分别存放在内部存储器 50H、51H 单元中,试编写一个程序实现 x*10+y,结果存入52H、53H 单元中。MOV R0,#50H单片机原理及应用第 8 页 共 10 页MOV R1,#53HMOV A,R0M
28、OV B,#0AHMUL AB INC R0ADD A,R0MOV R1,ADEC R1XCH A,BADDC A,#00HMOV R1,AEND-五、应用题1.某一 8051 单片机系统,晶振频率为 6MHz,现要从单片机的 P1.7 引脚输出一个连续的 5Hz 方波信号,请编写程序。解:5Hz 的方波周期为 200 毫秒,高低电平各持续 100 毫秒,若晶振频率为 6MHz,则机器周期为 2 微秒,故其计数值应为:N=100ms/2s=50000采用方式 1,计数初值=65536-50000=15536D=3CB0HORG 0000H AJMP MAIN ;主程序ORG 000BHAJMP
29、 T0INT ;T0 中断入口ORG 0100HMAIN: MOV SP, 60H MOV TMOD, #01HMOV TH0,#3CH MOV TL0,#0B0HCLR P1.7SETB EASETB ET0SETB TR0SJMP $单片机原理及应用第 9 页 共 10 页T0INT: MOV TH0,#3CHMOV TL0,#0B0HCLP P1.7RETIEND2.试设计一个 8051 单片机的双机通信系统,编程将 A 机片内 RAM 中 60H6FH 的数据块通过串行口传送至 B 机片内 RAM 的 60H6FH 单元中。甲机发送(采用查询方式):MOV SCON, 80H ; 设置
30、工作方式 2MOV PCON, 00H ; 置 SMOD=0,波特率不加倍MOV R0, 60H ; 数据区地址指针MOV R2, 10H ; 数据长度LOOP: MOV A, R0 ; 取发送数据MOV C, P ; 奇偶位送 TB8MOV TB8, CMOV SBUF, A ; 送串口并开始发送数据WAIT: JBC TI, NEXT ; 检测是否发送结束并清 TISJMP WAITNEXT: INC R0 ; 修改发送数据地址指针DJNZ R2, LOOPEND乙机接收(查询方式):MOV SCON, 90H ; 模作模式 2, 并允许接收MOV PCON, 00H ; 置 SMOD=0
31、MOV RO, 60H ; 置数据区地址指针MOV R2, 10H ; 等待接收数据长度LOOP: JBC RI, READ ; 等待接收数据并清 RISJMP LOOPREAD: MOV A, SBUF ; 读一帧数据MOV C, PJNC LP0 ; C 不为 1 转 LP0JNB RB8, ERR ; RB8=0, 即 RB8 不为 P 转 ERRAJMP LP1LP0: JB RB8, ERR ; RB8=1,即 RB8 不为 P 转 ERRLP1: MOV R0, A ; RB8=P,接收一帧数据INC R0DJNZ R2, LOOPERR: ; 出错处理程序END3.8255A 的
32、 PA 口接一组开关,PB 口接一组指示灯。编写子程序将 R2 的内容送指示灯显示,开关状态读入 A 中。MOV DPTR,#7FFFH单片机原理及应用第 10 页 共 10 页MOV A,#98H MOVX DPTR,AMOV DPTR, #7FFDHMOV A, R2MOVX DPTR, AMOV DPTR, #7FFCHMOVX A, DPTRRET4.从 8155 的 A 口输入数据, 并进行判断: 若不为 0,则将该数据存入 8155 的 RAM 中(从起始单元开始, 数据总数不超过 256 个), 同时从 B 口输出,并将 PC0置“1”;若为 0,则停止输入数据,同时将 PC0清
33、“0”。命令字为 00001110B=0EH,命令口地址 0200H,A 口地址 0201H,B 口地址 0202H,C 口地址 0203HMOV DPTR, 0200H ; 指向命令口MOV A, 0EH ; 设置命令字MOVX DPTR, A ; 写入命令字MOV R0, 00H ; 指向 8155 的 RAM 区首址MOV R1, 00H ; 数据总数为 256 个LP1: MOV DPTR, 0201H ; 指向 A 口MOVX A, DPTR ; 从 A 口读入数据JZ LP3 ; 为 0 则转 MOVX R0, A ; 存入 RAM 单元INC R0 ; 指向下一单元INC DPTR ; 指向 B 口MOVX DPTR, A ; B 口输出INC DPTR ; 指向 C 口MOVX A, DPTR ; C 口读入SETB ACC.0 ; 使 PC0 =1MOVX DPTR, A ; 回送DJNZ R1, LP1 ; 未完则反复LP2: SJMP $ ; 暂停LP3: MOV DPTR, 0203H ; 指向 C 口MOVX DPTR, A ; 回送SJMP LP2