单片机试题(含答案)

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

试卷中可能会遇到的特殊功能寄存器
1、TMOD :
2、IE :
3、TCON :
一、填空题(每空1分,共20分。


1.微型计算机由 CPU 、 存储器 和 IO 端口 组成。

2.除SFR 外,8051单片机的片内包含有 128 字节RAM 作为数据存储器使用, 字节 4K ROM 作为程序存储器使用。

3.PSW 是8051的程序状态字寄存器,其中CY 位是: 字节进/借位 ,P 位是:
奇偶标志位,标示ACC 中1个数的奇偶性 。

4.DIV AB
指令执行两个字节的无符号除法,该指令执行完成后,商存放在 A 、余数存放在___B_____中。

5.当8051的复位脚(RESET )为高电平时,CPU 处于 复位 状态,这时I/O 口P1
的值为 FF H , 堆栈指针(SP)的值为 07 H 。

6.8051单片机包括 2 个 16 位的定时/计数器,共有 4 种工作模式。

7.T0或T1作为定时器使用时,其工作时钟信号依赖于晶体振荡器的频率(f osc ),当
f osc =12MHz 时,定时器T1的工作时钟频率为 1 MHz 。

8.标准8051单片机有 5 个中断请求源,具有 2 个中断优先级。

9.8051单片机的串行口具有多种工作方式,其中方式3的有效数据位数是____9___位(不
含起始位和停止位)。

10.异步串行通讯的波特率是指单位时间传输的数据位数 。

二、单项选择题 (每小题1分,共10分。

)
1.下列第 B 个语句可以实现外部16位地址的读操作。

(A)MOVX A,@R0 (B)MOVX A,@DPTR
(C)MOVX @R0,A (D)MOVX @DPTR,A
2.当累加器A的初始值为 D 时,且Cy = 0,执行“RRC A”指令后,累加器A 的结果为23H,并且Cy = 1。

(A)23H (B)BDH
(C)47H (D)C3H
3.当需要启动定时器T1时,下面哪一项是必须的? D
(A)SETB IT0 (B)SETB IT1
(C)SETB TR0 (D)SETB TR1
4.下面 B 的陈述是正确的?
(A)8051单片机有6个中断向量,分2个优先级别
(B)8051单片机有5个中断向量,分2个优先级别
(C)8051单片机可以扩展最大容量为128K字节的程序存储器
(D)8051单片机可以扩展最大容量为32K字节的外部数据存储器
5.下面 A 源操作数不是来自程序存储器。

(A)MOV A, #20H (B)MOVC A,@A+PC
(C)MOVC A,@A+DPTR (D)MOV A,@R0
6.下面的关于ADC和DAC的描述 C 是正确的?
(A)AD574是数模转换器件
(B)ADC0809有32个信号输入通道,同时可以进行32个通道的信号转换
(C)DAC0832是数模转换器件
(D)DAC0832可以同时进行多个通道的信号转换
7.8051支持位操作,其专用的可位寻址的存储器区域位于 B 。

(A)所有SFR区域(B)片内RAM的20~2FH之间
(C)片外0000~00FFH之间(D)程序存储器区域
8.下面操作执行后堆栈指针SP一定变小的是 A 。

(A)PUSH ACC (B)LCALL SUB
(C)AJMP LOP (D)RETI
9.下面哪种半导体存储器适宜作为8051单片机系统的数据存储器使用? D (A)EEPROM (B)EPROM (C)OTPROM (D)SRAM
10.下面关于MCS-51单片机系统外部扩展能力的描述正确的是 C (A)扩展的外部程序存储器和数据存储器统一编址
(B)扩展的外部数据存储器和I/O接口不能统一编址
(C)扩展的并行数据存储器最大容量通常不超过64K字节
(D)P1端口可以“分时复用”作为数据总线和低8位地址总线使用
三、简答题 (每小题10分,共20分。

)
1.简单画出MCS-51单片机上电及手动复位的RC复位电路。

并简述其工作原理。

答:
2.
up监控电路能够从根本上提高51单片机系统的可靠性吗?原因是?
答:不能。

up监控电路只能是防止程序跑飞或者死机唤醒,并不能从根本上提高系统的可靠性。

系统的稳定性取决于软件的编写与硬件的设计是否合理,而不是依靠监控电路。

四、阅读下列程序,并填写运行结果 (每空1分,共20分。

)
1.MOV R2,#64H
MOV R1,#02H
MOV A,R1
ORL A,R2
MOV R1,A
MOV A,#0FH
ANL A,R2
MOV R3,A
MOV A,R2
CPL A
SW AP A
CLR C
RLC A ;
MOV R2,A ;
执行完上面的程序之后,
(A)= 72H ;标志位(C)= 1 ;(R1)= 66H ;(R2)= 72H ;(R3)= 04H
2.MOV DPTR,#8006H
MOV R1,#22H
MOV A,#0F8H
MOV R2,#9
ANL A,R1 ; 取余
MOVX @DPTR,A ; 间接寻址
INC DPTR
MOV A,R1
RL A ; 不带进位左移
MOVX @DPTR,A
BB:INC A ; 自加1
DJNZ R2,BB ; 自减1不为0跳转
INC DPTR
MOVX @DPTR,A
RET ; 返回
当上面程序执行到“RET”处,填写下面的寄存器或地址中的值:(A):
4DH ;(R1)22H ;(R2)0 ;(DPTR)8008H ;(8006H)20H ;(8007H)44H ;(8008H)4DH 。

五、采用C语言,按照要求编写程序 (共30分。

)
1.假设系统的晶体振荡器频率为11.0592MHz,初始化I/O口,使得P1.0 、P1.4 、P1.5、P1.6、P1.7 置高电平,采用任意定时器设计如下循环任务:(a)P1.1、P1.2输出低电平,P1.3置高电平;(b)2分钟后,将P1.1 、P1.2置高电平,同时将P1.3输出低电平;(c)再1分钟后,将P1.3置高电平;(d)接着等待30秒后,执行步骤(a),进而实现(a)、(b)、(c)、(d)循环。

参考程序:
#include"io51.h"
unsigned int Def_Timestart_Flag=0;
unsigned int Def_Time_Flag=0;
unsigned int Water_Time_Flag=0;
unsigned char Def_Falg=0;
void Init_8051(void)
{
EA=0;
TCON=0X00;
TMOD=0X00;
IE=0X0A;
IP=0XFF;
TL0=0X00;
TH0=0XE0;
P1=0X00;
EA=1;
TR0=1;
}
void mian(void)
{
Init_8051();
while(1)
{
P2.3=1;
}
}
interrupt [0x0B] void T0_ISR(void)
{
Def_Timestart_Flag++;
Water_Time_Flag++;
if((Def_Timestart_Flag<=24000)&&(Def_Falg==0)) {P1.1=0;
P1.2=0;
P1.3=1;
}
if((Def_Timestart_Flag>24000)&&(Def_Falg==0)) {
Def_Time_Flag++;
P1.1=1;
P1.2=1;
P1.3=0;
if(Def_Time_Flag>=12000)
{
P1.3=1;
Def_Falg=1;
Def_Timestart_Flag=0;
Water_Time_Flag=0;
}
}
if((Water_Time_Flag>= 6000) &&(Def_Falg==1)) {
Def_Timestart_Flag=0;
Water_Time_Flag=0;
Def_Falg=0;
Def_Time_Flag=0;
}
TL0=0X00;
TH0=0XE0;}。

相关文档
最新文档