程序设计题

  • 请写出延时函数void delay(unsigned char),要求:在晶体振荡器为12Hz时,延时x毫秒

解析:

假设晶振是 11.0592M

时钟周期为:

111059200\frac{1}{11059200}

机器周期为(因为一个机器周期等于 12*时钟周期):

1211059200\frac{12}{11059200}

时钟频率为(时钟频率是设备或系统每秒运行的时钟周期数。 它通常以赫兹 (Hz) 为单位进行测量):

1时钟周期=11211059200=1105920012\frac{1}{\text{时钟周期}}=\frac{1}{\frac{12}{11059200}}=\frac{11059200}{12}

定时器 0 的计数器最大值为 65536,意味着当计数器的值从 0 加到 65536 时,计数器就会溢出,并自动清零。因此, 当计数器的值加到 65536 时,就相当于它加了 1

宏定义末尾的 L 告诉编译器将其视为长整数而不是其他类型的整数(可省略,编译器将根据其值自动确定常量的适当类型)

计算每次加1的式子里除以1000是因为要转换为毫秒,它原本单位默认是秒

还有就是TH0,TL0的计算是最后计算结果再类型转换

# define FOSC 12000000L  // 晶体振荡器频率视情况而定


void delay(unsigned char x) {
    // 计算计数器每次加 1 所需要的时间,单位为毫秒
    float timer_interval = 1000.0 / (FOSC / 12 / 65536);

    // 计算计数器加载值
    unsigned int timer_load = (unsigned int)(x / timer_interval);

    // 设置定时器 0 的工作模式为模式 1
    TMOD &= 0xF0;
    TMOD |= 0x01;

    // 该值可以在 TH0 和 TL0 的计数值溢出时更新 TF0 标志位
    TH0 = (unsigned char)(timer_load / 256);
    TL0 = (unsigned char)(timer_load % 256);

    // 启动定时器 0
    TR0 = 1;

    // 等待定时器 0 计数值溢出
    while (!TF0);

    // 关闭定时器 0
    TR0 = 0;

    // 清除定时器 0 计数值溢出标志位
    TF0 = 0;
}
  • 请将下列程序补充完整,根据下图设计一个数码管从0到9的顺序显示(共阳数码管)

# include  <reg51.h>

# define  uchar  unsigned  char
# define  uint  unsigned  int

uchar code LedCode[ ]={0Xc0,0Xf9,0XA4,0xB0,0x99,0x92,0x82,0Xf8,0x80,0x90}; 

/*****根据程序定义变量*****/
uchar i;
/*********结束*********/
                                   

void  delay(uchar  x)     
{  uchar k;
   while(x--)         
   for(k=0;k<125;k++){}
}

void  main(void)
{ 
   P0= LedCode[0];
   while(1)
        {  
/***填写开始***/                                 
    		for(i=0;i<10;i++)
            {
                P0 = Ledcode[i];
                delay(250);
                delay(250);
            }
/***填写结束***/                                    
        }
}
  • 请写出一段完整的跑马灯程序,要求:依次第4,5灯;3,6灯;2,7灯;1,8灯亮

# include  <reg51.h>

# define LED_PORT P0	//宏定义P0端口

//简单毫秒延时(参数范围0~255)
void  delay(uchar  x)     
{  uchar k;
   while(x--)         
   for(k=0;k<125;k++){}
}

void main()
{
    while(1)
    {
		LED_PORT = 0xE7;
        delay(250);
        delay(250);
        LED_PORT = 0xDB;
        delay(250);
        delay(250);
        LED_PORT = 0xBD;
        delay(250);
        delay(250);
        LED_PORT = 0x7E;
        delay(250);
        delay(250);        
    }
}
  • 实现流水灯模块右边四个LED灯闪烁的功能,时间间隔为1秒
# include  <reg51.h>

# define LED_PORT P0	//宏定义P0端口组
sbit ADDR0 = P1^0;    //A0
sbit ADDR1 = P1^1;    //A1
sbit ADDR2 = P1^2;    //A2
sbit ADDR3 = P1^3;    //E3
sbit ENLED = P1^4;

bit flag1s = 0;	//1s中断标志位
bit mode = 0;	//亮灭标志位

void main()
{
    ENLED = 0;
    ADDR0 = 0;
    ADDR1 = 1;
    ADDR2 = 1;
    ADDR3 = 1;
    EA = 1;	//开启总中断
    TMOD &= 0xF0;
    TMOD |= 0x01;
    TH0 = 0xFC;	//定时1ms
    TL0 = 0x67;
    ET0 = 1;	//使能中断
    TR0 = 1;	//启动
    LED_PORT = 0xFF;	//初始化LED全灭状态
    while(1)
    {
        if(flag1s)
        {
            flag1s = 0;
            if(1 == mode)
            {
            	LED_PORT = 0xF0;	//右边4个亮                
            }
            else if(0 == mode)
            {
                LED_PORT = 0xFF;	//全灭
            }

        }  
    }
}

void InterruptTimer0() interrupt 1
{
    static unsigned int count = 0;
    
    TH0 = 0xFC;  //重新加载初值
    TL0 = 0x67;
    if(count >= 1000)	//1s
    {
        count = 0;
        flag1s = 1;
        mode = ~mode;	//取反
    }
}

填空题

  1. AT89S51单片机是( 8 )位的单片机

解析:

AT89S51 是 Atmel(现为 Microchip Technology)生产的 8 位微控制器(MCU)。它有一个 8 位中央处理器 (CPU),旨在执行嵌入式系统中的各种任务。AT89S51 是 8051 微控制器系列的一部分,该系列以其多功能性和在各种应用中的广泛使用而闻名。

  1. AT89S51单片机有( 5 )个中断源,( 2 )级优先级中断
  2. 串行口方式3发送的第9位数据要事先写入( SCON )寄存器的( TB8 )位
  3. 串行口的方式0的波特率为 ( fOSC/12 )
  4. 利用81C55可以扩展( 3 )个并行口,( 256 )个RAM单元
  5. 当单片机复位时PSW= ( 00 )H,SP=( 07H ),P0~P3口均为( )电平

解析:

在单片机复位后,PSW寄存器(程序状态寄存器)通常会被设置为0x00。这意味着所有的位都被清零,即所有的标志位都被清零。SP寄存器(堆栈指针)通常也会被设置为0x07。这意味着堆栈将从地址0x07开始使用。P0~P3被拉高

  1. 若A中的内容为88H,那么,P标志位为( 0

解析:

P 标志位是指在处理器中用于表示奇偶性的一位标志。当 P 标志位被设置为 0 时,表示当前数字为偶数;当 P 标志位被设置为 1 时,表示当前数字为奇数,这里88H转换成10进制数就是136是偶数

  1. AT89S51访问片外存储器时,利用( ALE )信号锁存来自( P0口 )发出的低8位地址信号

解析:

ALE 信号是一个由单片机控制的外部脉冲,在单片机发出地址时产生。它可以用来将地址信号转发到外部存储器或其他外部设备。在访问外部存储器时, CPU 首先发出一个地址, 然后通过 ALE 信号将这个地址锁存下来. 然后 CPU 就可以通过这个地址来访问外部存储器了。

  1. 已知fosc=12MHz, T0作为定时器使用时,其定时时间间隔为( 1us

解析:

时钟周期=112000000\text{时钟周期}=\frac{1}{12000000}

机器周期=1212000000=0.000001s=1us\text{机器周期}=\frac{12}{12000000}=0.000001s=1us

  1. 串行口方式2接收到的第9位数据送( SCON )寄存器的( RB8)位中保存

解析:

在串口模式2下,串口通信是异步的,即数据的发送和接收不需要时钟信号。数据的第 9 位用作奇偶校验位,它是与数据一起传输的额外位,用于帮助检测传输中的错误。奇偶校验位可以设置为偶数、奇数或无

SCON的8个bit
SM0串行端口模式位0,在串口模式 2 下,该位应设置为 1
SM1串行端口模式位 1,在串口模式 2 下,该位应设置为 0
SM2串行端口模式位 2,该位启用多处理器通信模式,允许微控制器使用串行端口与其他微控制器通信。在串口模式 2 下,该位不用,应设置为 0
REN接收启用位,当设置为 1 时,串口接收器使能,单片机可以通过串口接收数据。设置为 0 时,串行接收器被禁用,微控制器无法接收数据
TB8该位是串口传输数据的第9位。它用作奇偶校验位以帮助检测传输中的错误
RB8该位是串口接收数据的第9位。它用作奇偶校验位以帮助检测传输中的错误
TI发送标志位,当通过串行端口的数据传输完成时,该位设置为 1。它必须由软件使用命令“CLR TI”清除,以允许进一步传输
RI接收标志位,当通过串行端口接收到数据时,该位设置为 1。它必须由软件使用命令“CLR RI”清除,以允许进一步接收
  1. 当单片机复位时PSW=( 00 )H,这时当前的工作寄存器区是( 0 )区,R6所对应的存储单元地址为( 06 )H

解析:

微控制器具有三个工作寄存器区域(0、1 和 2),可使用 PSW 寄存器中的 RS0 和 RS1 位来选择,0区其他寄存器的存储单元地址分别为00H(R0)、01H(R1)、02H(R2)、03H(R3)、04H(R4)、05H(R5)、06H(R6)

  1. 利用82C55可以扩展( 3 )个并行口,其中( 8 )条口线具有位操作功能
  2. 若AT89S51外扩32KB 数据存储器的首地址若为4000H,则末地址为( BFFF )H

解析:

在 AT89S51 微控制器中,数据存储器分为两个 16KB 的块(Block 0 和 Block 1),数据存储器的首地址 (4000H) 对应于块 0 中的第一个存储器位置。数据存储器的末地址 (BFFFH) 对应于块 1 中的最后一个存储器位置

  1. 当AT89S51执行MOVC A,@A+PC指令时,伴随着( PSEN* )控制信号有效

解析:

当执行 MOVC A,@A+PC指令时,单片机将累加器的内容与PC中的值相加,并使用结果地址访问外部程序存储器中的数据。 PSEN*(程序存储启用)控制信号是一个 低电平有效信号 ,微控制器使用它来访问外部程序存储器。 当微控制器需要从外部程序存储器中获取指令时,它会将 PSEN* 信号置为低电平,并在地址总线上提供指令的地址。 外部程序存储器将指令放在数据总线上作出响应,微控制器将指令读入指令寄存器

  1. 若A中的内容为67H,那么,P标志位为( 1

解析:

67H十进制数是103是奇数,所以P标志位为1,偶数才为0

  1. AT89S51单片机的通讯接口有( 串行 )和( 并行 )两种形式。在串行通讯中,发送时要把( 并行 )数据转换成( 串行 )数据。接收时又需把( 串行 )数据转换成( 并行 )数据。

解析:

在串行通信中,数据通过单线或通信通道一次一位地传输和接收。 这与并行通信相反,在并行通信中,数据通过多条线路或通信通道一次传输和接收多个位

  1. AT89S51单片机指令系统的寻址方式有( 寄存器寻址方式 )、( 直接寻址方式 )、( 立即寻址方式 )、( 寄存器间接寻址方式 )、( 位寻址方式 )、( 基址寄存器加变址寄存器寻址方式 )、( 相对寻址方式 )。
  2. AT89S51内部提供( 2 )个可编程的( 16 )位定时/计数器,定时器有( 4 )种工作方式
  3. AT89S51单片机芯片共有 ( 40 ) 个引脚,MCS-51系列单片机为( 8 )位单片机
  4. AT89S51的异步通信口为( 全双工 )(单工/半双工/全双工),若传送速率为每秒120帧,每帧10位,则波特率为( 1200 bit/s
  5. 单片机也可称为( 微控制器) 或 ( 嵌入式控制器
  6. 当单片机复位时PSW= ( 00 ) H,这时当前的工作寄存器区是( 0 )区,R4所对应的存储单元地址为 ( 04 ) H
  7. 51系列单片机的典型芯片分别为 ( AT89S51) 、( 8031) 、( AT89C51
  8. AT89S51的( P3 )口为双功能口
  9. 由AT89S51组成的单片机系统在工作时,EA*引脚应该接( 地(或0));
  10. AT89S51的中断源有 ( 外部中断0, T0 ,外部中断1, T1,串行口中断 ),有 (2) 个中断优先级
  11. AT89S51唯一的一条16位数据传送指令为 ( MOV DPTR,data16
  12. 当MCS-51执行MOVX A,@R1指令时,伴随着 (RD) 控制信号有效
  13. AT89S51的( P0 )口为高8位地址总线口
  14. 单片机外部三大总线分别为 ( 数据总线、地址总线和控制总线)。
  15. 74LS138是具有3个输入的译码器芯片,用其输出作片选信号,最多可在 ( 8 ) 块芯片中选中其中任一块
  16. 特殊功能寄存器中,单元地址低位为 (0或8 ) 的特殊功能寄存器,可以位寻址
  17. 关于定时器,若振荡频率为12MHz,在方式0下最大定时时间为(8.192ms

解析:

方式0的计数值最大是8192,先算出机器周期为

1212000000=0.000001s=1us\frac{12}{12000000}=0.000001s=1us

定时最大为

0.000001×8192=0.008192s=8.192ms0.000001\times8192=0.008192s=8.192ms

  1. 当AT89S51单片机响应中断后,必须用软件清除的中断请求标志是(串行中断 )。
  2. TMOD中的GATEx=1时,表示由两个信号TRx和(INTx)控制定时器的启停。
  3. 在AT89S51单片机的RESET端出现(大于2个机器周期)的高电平后,便可以可靠复位,复位后的PC中的内容为(0000)H
  4. 当AT89S51单片机与慢速外设进行数据传输时,最佳的传输方式是(串行数据传输
  5. DA转换器的两个最重要的技术指标为(分辨率)和(建立时间
  6. 在存储器扩展中,无论是线选法还是译码法,最终都是为扩展芯片的(CE)端提供(片选)信号、
  7. 波特率定义为 (每秒发送或接收的位数)。串行通信对波特率的基本要求是互相通信的甲乙双方必须具有 (相同) 的波特率
  8. 若串行通信按方式1传送,每分钟传送3000个字符(8位/每字符),其波特率是(400bit/s

解析:

波特率=传输速率*每个字符的位数

8bit/s×3000=24000bit/min=400bit/s8bit/s\times3000=24000bit/min=400bit/s

  1. AT89S51片内(20H~2FH)地址范围内的数据存储器,既可以字节寻址又可以位寻址
  2. 8KB RAM存储器的首地址若为1000H,则末地址为(2FFF)H
  3. AT89S51单片机控制TPµP-40A/16A微型打印机打印英文或数字时,要把打印字符的(ASCII)码送给微型打印机
  4. 已知8段共阴极LED显示器显示字符“H”的段码为76H,则8段共阳极LED显示器显示字符“H”的段码为(89H
  5. 当键盘的按键数目少于8个时,应采用(独立)式键盘。当键盘的按键数目为64个时,应采用(矩阵)式键盘
  6. 当BCD码拨盘的A端接地时,当BCD码拨盘拨到 “6” 时,此时拨盘的8、4、2、1接点的输出为(0、1、1、0
  7. 使用双缓冲方式的D/A转换器,可实现多路模拟信号的(同步)输出。
  8. AT89S51单片机扩展并行I/O口时,对扩展的I/O口芯片的基本要求是:输出应具有(数据锁存)功能;输入应具有(数据三态缓冲/锁存选通)功能;
  9. 请写出五种中断类型(外部中断0,定时/计数器0,外部中断1,定时/计数器1,串行口中断
  10. 如图1所示,单片机AT89C52的P0口上接了8个LED灯,若要第一、三个灯亮,请写出P0的值(采用十六进制方式) (0xFA

  1. 请用KEILC语言对引脚P1.0、P1.1、P1.2、P1.3定义成LED0、LED1、LED2、LED3,提示:采用特殊位进行定义。
sbit LED0 = P1^0;
sbit LED1 = P1^1;
sbit LED2 = P1^2;
sbit LED3 = P1^3;
  1. 在中断函数中,请将外部中断1函数格式补充完整:void external1(interrupt 2
  2. 若A=0XFE,请写出A循环左移的特殊函数表达式:A=((A << 1) | (A >> 7)

解析:

算术左移是左移1位,最低位填0。循环左移是左移一位,最高位移到最低位

  1. 十进制数14对应的二进制数表示为( 1110B ),十六进制数表示为( 0EB )。十进制数-100的补码为( 10011100 ),+100的补码为( 01100100
  2. 通过堆栈操作实现子程序调用,首先要把(PC)的内容入栈,以进行断点保护。调用返回时再进行出栈操作,把保护的断点送回(PC
  3. 80C51单片机的时钟电路包括两部分内容,即芯片内的(高增益反相放大器)和芯片外的(石英晶体振荡器)与(两个微调电容)。若提高单片机的晶振频率,则单片机的机器周期会变(
  4. 通常单片机有两种复位操作,即( 上电复位)和( 手动复位 )。复位后,PC值为( 0000H ),SP值为( 07H ),通用寄存器的当前寄存器组为( 0 )组,该组寄存器的地址范围是从( 00H )到( 07H
  5. 80C51单片机中,一个机器周期包含( 6 )个状态周期,一个状态周期又可划分( 2 )个拍节,一个拍节为( 1 )个振荡脉冲周期。因此,一个机器周期应包含( 12 )个振荡脉冲周期
  6. 80C51中唯一可供用户使用的16位寄存器是( DPTR ),它可拆分为两个8位寄存器使用,名称分别为( DPH )和( DPL
  7. 单片机程序存储器的寻址范围由PC的位数决定。80C51的PC为16位,因此程序存储器地址空间是(64KB
  8. 累加器A中存放着一个其值小于或等于127的8位无符号数,CY清0后执行指令“RLC A”,则A中的数变为原来的( 2 )倍
  9. 上电复位后,各中断优先级从高到低次序为( INT0 )、( T0 )、( INT1 )、( T1 )和( 串行口
  10. 响应中断后,产生长调用指令LCALL,执行该指令的过程包括:首先把( PC )的内容压入堆栈,以进行断点保护,然后把长调用指令的16位地址送( PC ),使程序执行转向( 中断向量 )中的中断地址区
  11. 当计数器产生计数溢出时,把定时器控制寄存器的TF0( TF1 )位置1。对计数溢出的处理,在中断方式时,该位作为( 中断请求标志位 )使用;在查询方式时,该位作(查询状态位)使用
  12. 定时器0工作于方式2的计数方式,预置的计数初值为156,若通过引脚T0输入周期为1ms的脉冲,则定时器0的定时时间为(100ms

解析:

计数值=28初值=256156=100\text{计数值} =2^8 -\text{初值} =256 -156 =100

定时时间=计数值×输入脉冲周期=100×1ms=100ms\text{定时时间} =\text{计数值}\times\text{输入脉冲周期} =100\times1ms =100ms

  1. 定时测试压力和温度的单片机应用系统,以定时器0实现定时。压力超限的报警信号分别由 和 输入,中断优先顺序为:压力超限→温度超限→定时检测。为此,中断允许控制寄存器IE最低3位的状态应是(111),中断优先级控制寄存器IP最低3位的状态应是(101
  2. 使用8KB×8的RAM芯片,用译码法扩展64KB×8的外部,需要( 8 )片存储芯片,共需使用( 16 )条地址线。其中( 13 )条用于存储单元选择,( 3 )条用于芯片选择
  3. 三态缓冲器的三态分别是(高电平)、(低电平)和(高阻态)
  4. 80C51单片机系统整个存储空间由4部分组成,分别为( 256 )个地址单元的内部( 数据 )存储器,( 4KB )个地址单元的内部( 程序 )存储器,( 60KB )个地址单元的外部( 程序 )存储器,( 64KB )个地址单元的外部( 数据 )存储器
  5. 在80C51单片机系统中,为外扩展存储器准备了( 16 )条地址线,其中低位地址线由( P0口 )提供,高位地址线由( P2口 )提供
  6. 起止地址为0000H~3FFFH的外扩展存储器芯片的容量是( 16 )KB。若外扩展存储器芯片的容量为2 KB,起始地址为3000H,则终止地址应为( 37FFH )
  7. 在存储器扩展中,无论是线选法还是译码法,最终都是为扩展芯片的(片选)引脚端提供信号。
  8. 向8255写入的工作方式命令为0A5H,所定义的工作方式为:A口为(输出),B口为(输出),C口高位部分为(输出),C口低位部分为(输入)
  9. 通过8255口B输入8个按键的状态,然后通过口A输出送LED显示器,按键状态输入由PC2位控制。则8255的工作方式命令为( A7H )
  10. 若某异步通信接口每帧信息格式为10位,接口每秒传送1000个字符,则波特率为( 100bit/s )
  11. 串行通信有(单工) 、(全双工)化和(半双工)化3种数据通路形式
  12. 常用的A/D转换原理有( 逐次逼近 )式、( 双积分 )式和( 固频变换)式

判断题

1.8031与8751的区别在于内部是否有程序存储器。(

解析:

如果要在 8751 单片机上运行程序,则必须将程序存储在外部存储器中,然后通过串行端口将程序下载到 8751 单片机的内部 RAM 中执行

3.当向堆栈压入一个字节的数据后,SP中的内容减1。(×

解析:

对于51单片机数据进栈和出栈,遵循“先加后压,先弹后减”操作原则,先进后出(FIFO)的数据结构

4.程序计数器PC中装的内容是当前正在执行指令的地址。(×

解析:

PC是CPU中的一个寄存器,用于存储下一条要执行的指令的地址。当CPU执行一条指令时,会从PC中读取指令的地址,将指令从存储器(如内存)中取出,并执行该指令。执行完毕后,CPU会将PC的值加1,以指向下一条要执行的指令

5.某特殊功能寄存器的字节地址为80H,它既能字节寻址,也能位寻址。(

6.AT89S51单片机中的PC是不可寻址的。(

解析:

PC本身是一个寄存器,不能直接寻址。可以使用指令来操作PC的值,但不能直接将PC当成一个普通的寄存器来进行读写操作,在汇编中可以使用LJMP指令来跳转到指定的地址执行指令,但是不能直接将PC的值赋值为指定的地址

8.AT89S51的定时器/计数器对外部脉冲进行计数时,要求输入的计数脉冲的高电平或低电平的持续时间不小于1个机器周期。(×

9.区分外部程序存储器和数据存储器的最可靠的方法是看其是被 WR*还是被 PSEN*信号连接。(

解析:

WR*信号通常用于外部存储器,表示将数据写入存储器。 PSEN*信号通常用于数据存储器,表示启用存储器

10.各中断源发出的中断请求信号,都会标记在AT89S51的TCON寄存器中。(×

解析:

在 AT89S51 芯片中,各中断源发出的中断请求信号都会标记在 INTCON 寄存器中

  1. 定时器T0中断可以被外部中断0中断。(

解析:

中断优先级(高->低排序)
INT0
T0
INT1
T1
串口中断
  1. 指令中直接给出的操作数称为直接寻址。(×

解析:

直接寻址是指令中直接给出操作数的单元地址,该单元地址中的内容就是操作数

  1. 内部RAM的位寻址区,既能位寻址,又可字节寻址。(
  2. 特殊功能寄存器SCON与定时器/计数器的控制无关。(

解析:

SCON是串口控制寄存器,TCON寄存器才是定时器相关的

  1. 当AT89S51执行MOVX A,@R1指令时,伴随着WR*信号有效。(×

  2. 串行口工作方式1的波特率是固定的,为fosc/32。(×

解析:

不是固定的,是可变的

  1. 区分外部程序存储器和数据存储器的最可靠的方法是看其是被 RD* 还是被 PSEN* 信号连接。(×

解析:

区分外部程序存储器和数据存储器的最可靠的方法是看其是被 WR*还是被 PSEN*信号连接

  1. 逐次比较型A/D转换器与双积分A/D转换器比较,转换速度比较慢。(×
  2. 当EA脚接高电平时,对ROM的读操作只访问片外程序存储器。(×

解析:

EA脚接高电平时,在进行ROM的读操作时,单片机将从内部的ROM中读取数据。如果EA脚接低电平,则单片机将从外部存储器中读取数据

  1. 必须有中断源发出中断请求,并且CPU开中断,CPU才可能响应中断。(×

解析:

●有中断源发出中断请求;

●中断总允许位EA=1,即CPU开中断;

●申请中断的中断源的中断允许位为1,即中断没有屏蔽;

●无同级或更高级中断正在被服务;

●当前的指令周期已经结束;

●若现在指令为RETI 或者是访问IE或IP 指令,则该指令以及紧接着的另一条指令已执行完

  1. 8155是一种8位单片机。(×

解析:

8155不是单片机,是一种与单片机配套使用的接口芯片

  1. 51单片机只能做控制用,不能完成算术运算。(×
  2. 单片机内部RAM和外部RAM是统一编址的,它们的访问指令相同。(×
  3. 指令AJMP的跳转范围是2KB。(
  4. 扩展I/O口占用片外数据存储器的地址资源。(
  5. 8051单片机,程序存储器数和数据存储器扩展的最大范围都是一样的。(
  6. 单片机系统扩展时使用的锁存器,是用于锁存低8位地址。(
  7. 在A/D变换时,转换频率越高越好。(×
  8. 如果AT89S51单片机的某一高优先级中断请求正在被响应,此时不会再发生中断嵌套。(
  9. 当EA’=1时,AT89S51单片机片外可扩展的程序存储器空间和数据存储器空间是一样的(×
  10. 指令字节数越多,执行时间越长(×
  11. 访问单片机内部RAM或外部扩展的RAM的低128字节,指令是不同的(
  12. 并行接口芯片82C55的方式0是无条件的输入输出方式(
  13. 逐次比较型ADC的转换速度要比双积分型ADC的转换速度快(
  14. 串行口方式0的波特率仅与单片机的晶体振荡器有关,与定时器无关(
  15. 扩展的I/O接口芯片中的寄存器,要占用片外程序存储器的地址单元(
  16. AT89S51单片机进行串行通信时,要占用一个定时器作为波特率发生器(
  17. AT89S51单片机访问片外I/O设备中的寄存器,要使用MOVX类指令(
  18. “转换速度”仅适用于A/D转换器,D/A转换器不用考虑“转换速度”这一问题。(×
  19. 对于周期性的干扰电压,可使用双积分的A/D转换器,并选择合适的积分元件,可以将该周期性的干扰电压带来的转换误差消除(
  20. 串行口的发送缓冲器和接收缓冲器只有1个单元地址(
  21. AT89S51的定时器/计数器对外部脉冲进行计数时,要求输入的计数脉冲的高电平和低电平的持续时间均不小于1个机器周期(×

简答题

  • AT89S51采用6MHz的晶振,定时2ms,如用定时器方式1时的初值(16进制数)应为多少?(写出计算过程)

  • 说明AT89S51的外部引脚 EA* 的作用?

EA*为高电平时,AT89S51访问 内部程序存储器,但当地址大于0FFF时,自动转到外部程序存储器;当 EA*为低电平时,AT89S51 只读取外部程序存储器,读取的地址范围为0000H~FFFFH,片内的4 KB Flash程序存储器不起作用

  • 写出AT89S51的所有中断源,并说明说明哪些中断源在响应中断时,由硬件自动清除,哪些中断源必须用软件清除,为什么?
外部中断INT0
外部中断INT1
定时器/计数器中断T0
定时器/计数器中断T1
串行口中断

其中,串行口中断才 TIRI 需要软件清0,其他的硬件自动清0,因为串口中断的输出中断为TI,输入中断为RI,故用软件清0

  • AT89S51采用12MHz的晶振,定时1ms,如用定时器方式1时的初值(16进制数)应为多少?(写出计算过程)

  • 中断服务子程序返回指令RETI和普通子程序返回指令RET有什么区别?

RETI除了将压栈的内容出栈外(即现场恢复),还清除在中断响应时被置1的AT89S51内部中断优先级寄存器的优先级状态。

  • AT89S51外扩的程序存储器和数据存储器可以有相同的地址空间,但不会发生数据冲突,为什么?

AT89S51外扩的程序存储器和数据存储器可以有相同的地址空间,但不会发生数据冲突。这是因为它们的控制信号不同:

(1) 外扩程序存储器是 PSEN*信号为其控制信号;外扩数据存储器是 RD*WR* 信号为其控制信号

(2) 指令不同,程序存储器用MOVC读取,数据存储器用MOVX存取

  • LED的静态显示方式与动态显示方式有何区别?各有什么优缺点?

LED的静态显示方式与动态显示方式有何区别?各有什么优缺点?

静态:显示期间,锁存器输出的段码不变;亮度大,各位LED的段选分别控制;位数多硬件电路复杂

动态:所有位段码线并连一起,各位的亮灭靠片选控制端控制,亮度较低,多位控制电路简单

  • 简述行列式扫描键盘的工作原理

①首先判断有无键按下:

将列线全部置0,读行线状态,若P1.0~P1.3全为1,则表明无键按下,若出现低电平即0,则有键按下,记录下行号 i ;

②其次,如有键按下,判断具体键号

方法如下:逐列为低,其它为高,再读行线状态,如出现哪一行为低,记录此时的列号j , 则证明第i行第j列的按键被按下,至此完成键盘的行列式扫描。

  • 图为8段共阴数码管,请写出如下数值的段码

字符 段码
0 3FH
1 06H
2 5BH
3 4FH
4 66H
5 6DH
6 7DH
7 07H
8 7FH
9 6FH
A 77H
B 7CH
C 39H
D 5EH
E 79H
F 71H
无显示 00H
  • 采用6MHz的晶振,定时5ms,用定时器方式1时的初值应为多少?(请给出计算过程)

  • 请用语言表述AT89C52单片机P3引脚的第二功能

  • 在内部中断0中,T0采用工作方式1,晶振频率为12MHz,要求定时时间为10毫秒,请写出T0的初值(要求有计算公式和最后的十六进制值)

  • 请画出单片机时钟电路,并连接至单片机引脚上

  • 在8051的存储器结构中,内部数据存储器可分为几个区域?各有什么特点?

    片内数据存储器按功能可以分成以下几个部分:工作寄存器组区、位寻址区、
    一般RAM区和特殊功能寄存器区,其中还包含堆栈区。工作寄存器组区, 00H~ 1FH单元,可用 R0~R7等8个寄存器访问;位寻址区, 20H~2FH 单元,可按位
    方式访问;一般RAM 区, 30H~7FH 单元;堆栈区,可从 08~7F单元;特殊功
    能寄存器区位于 80H~FFH 单元。

  • 80C51单片机存储器的基本结构是什么? 其存储器的地址空间如何划分?

  • 80C51单片机外RAM和ROM使用相同的地址,是否会在总线上出现竞争?为什么?

  • 什么叫外部中断?有几个外部中断源?请求信号由什么引脚引入?

  • 中断优先级的顺序?5个中断源的入口地址?

  • 什么叫中断?中断的作用是什么?

  • 80C51单片机执行指令所用的时间与机器周期之间的关系是什么?

  • 什么叫通信?有几种通信方式?其方式特点是什么?

  • 什么是串行通信,什么是并行通信,各有何特点?

  • 微处理器、微计算机、微处理机、CPU、单片机它们之间有何区别?

微处理器、微处理机和CPU都是中央处理器的不同称谓;而微计算机、单片机都是一个完整的计算机系统,单片机特指集成在一个芯片上的用于测控目的的单片微计算机。

  • 为什么不应当把51系列单片机称为MCS-51系列单片机?

因为MCS-51系列单片机中的“MCS”是Intel公司生产的单片机的系列符号,而51系列单片机是指世界各个厂家生产的所有与8051的内核结构、指令系统兼容的单片机

  • 64KB程序存储器空间有5个单元地址对应AT89C51单片机5个中断源的中断入口地址,请写出这些单元的入口地址及对应的中断源

64KB程序存储器空间中有5个特殊单元分别对应于5个中断源的中断服务程序的入口地址:

入口地址 中断源
0003H 外部中断0
000BH 定时器0
0013H 外部中断1
001BH 定时器1
0023H 串行口
  • 解释手工汇编、机器汇编、交叉汇编、反汇编术语概念

(1)手工汇编:手工编程,首先把程序用助记符指令写出,然后通过查指令的机器代码表,逐个把助记符指令“翻译”成机器代码,这种人工查表“翻译”指令的方法称为手工汇编。

(2)机器汇编:是借助于微型计算机上的软件(汇编程序)来代替手工汇编,完成把助记符指令“翻译”成机器代码的工作。

(3)交叉汇编:使用微型计算机来完成汇编,而汇编后得到的机器代码却是在另一台计算机(这里是单片机)上运行,称这种机器汇编为交叉汇编。

(4)反汇编:将二进制的机器代码语言程序翻译成汇编语言源程序的过程

  • 设计子程序时应注意哪些问题?

(1)子程序的第一条指令前必须有标号。(2)使用子程序调用指令时,有两条调用指令可供使用。

①使用绝对调用指令(ACALL addr11)要注意,被调用的子程序的首地址与本绝对调用指令的下一条指令的高5位地址相同,即只能在同一2KB程序存储区内。

②使用长调用指令(LCALL addr16)时,addr16为直接调用的子程序的目标地址,也就是说,被调用的子程序可放置在64KB程序存储器区的任意位置。

(3)子程序结构中必须用到堆栈,堆栈通常用来保护断点和现场保护。

(4)子程序返回主程序时,最后一条指令必须是RET指令。

(5)子程序可以嵌套,即主程序可以调用子程序,子程序又可以调用另外的子程序

  • 中断服务子程序与普通子程序有哪些相同和不同之处?

RETI指令在返回时,同时清除中断系统中相应的优先级触发器,以允许下次中断,而RET指令则没有这个操作。除了这一点两条指令不同外,其他操作都相同

  • 中断响应的条件是什么?

总中断允许开关接通EA=1;该中断源发出中断请求;该中断源的中断允许位=1;无同级或更高级中断正在被服务

  • AT89C51单片机响应外部中断的典型时间是多少?在哪些情况下,CPU将推迟对外部中断请求的响应?

最短为是3个周期,最长为8个周期,当遇到才开始执行RETI或访问IE或IP的指令则需把当前指令执行完再继续执行一条指令后才能响应中断

  • 定时器/计数器用作定时器模式时,其计数脉冲由谁提供?定时时间与哪些因素有关?

定时器/计数器用作定时器时,其计数脉冲由系统振荡器产生的内部时钟信号12分频后提供。定时时间与时钟频率和定时初值有关

  • 定时器/计数器用作计数器模式时,对外界计数频率有何限制?

由于确认1次负跳变要花2个机器周期,即24个振荡周期,因此外部输入的计数脉冲的最高频率为系统振荡器频率的1/24

  • 定时器/计数器的工作方式2有什么特点?适用于哪些应用场合?

定时器/计数器的工作方式2具有自动恢复初值的特点,适用于精确定时,如波特率的产生

  • 一个定时器的定时时间有限,如何用两个定时器的串行定时来实现较长时间的定时?

方法1,在第一个定时器的中断程序里关闭本定时器的中断程序,设置和打开另一个定时器;在另一个定时器的中断程序中关闭本定时中断,设置和打开另一个定时器。这种方式的定时时间为两个定时器定时时间的和

  • THx与TLx(x = 0,1)是普通寄存器还是计数器?其内容可以随时用指令更改吗?更改后的新值是立即刷新还是等当前计数器计满后才能刷新?

THx与TLx(x=0,1)是由特殊功能寄存器构成的计数器,其内容可以随时用指令更改,更改后的新值立即刷新。但在读THx、TLx值时,应该先读THx值,后读TLx,再读THx值。若两次读得THx值相同,则可确定读得的内容正确。若前后两次读得的THx值有变化,再重复上述过程

  • 在异步串行通信中,接收方是如何知道发送方开始发送数据的?

当接收方检测到RXD引脚上的有效的负跳变时,即可知道发送方开始发送数据

  • 串行口有几种工作方式?有几种帧格式?各种工作方式的波特率如何确定?

串行口有4种工作方式:方式0、方式1、方式2、方式3。有3种帧格式,方式2和3具有相同的帧格式。

方式0的发送和接收都以fosc12为固定波特率\text{方式0的发送和接收都以}\frac{fosc}{12}\text{为固定波特率}

方式1的波特率=2SMOD32×定时器T1的溢出率\text{方式1的波特率}=\frac{2SMOD}{32}\times \text{定时器T1的溢出率}

方式2的波特率=2SMOD64×fosc\text{方式2的波特率}=\frac{2SMOD}{64}\times fosc

方式3的波特率=2SMOD32×定时器T1的溢出率\text{方式3的波特率}=\frac{2SMOD}{32}\times \text{定时器T1的溢出率}

  • 为什么定时器/计数器T1用作串行口波特率发生器时,常采用方式2?若已知时钟频率、通信波特率,如何计算其初值?

因为定时器/计数器在方式2下,初值可以自动重装,这样在进行串口波特率发生器设置时,就避免了重装参数的操作,且减少了重装参数的误差。

已知时钟频率,通信波特率,根据公式:

波特率=2SMOD32×fosc12×(256x)\text{波特率}=\frac{2SMOD}{32}\times \frac{fosc}{12\times(256-x)}

  • 简述利用串行口进行多机通信的原理

以方式1为例。发送过程:数据位由TXD端输出,发送1帧信息为10位,当CPU执行1条数据写发送缓冲器SBUF的指令,就启动发送。发送开始时,内部发送控制信号SEND变为有效,将起始位向TXD输出,此后,每经过1个TX时钟周期,便产生1个移位脉冲,并由TXD输出1个数据位。8位数据位全部输出完毕后,置1中断标志位TI,然后SEND信号失效。

接收过程:当检测到起始位的负跳变时,则开始接收。接收时,定时控制信号有2种。其中一种是位检测器采样脉冲,它的频率是RX时钟的16倍。也就是在1位数据期间,有16个采样脉冲,以波特率的16倍速率采样RXD引脚状态,当采样到RXD端从1到0的跳变时就启动检测器,接收的值是3次连续采样,取其中2次相同的值,以确认是否是真正的起始位的开始,这样能较好地消除干扰引起的影响,以保证可靠无误地开始接收数据

  • 为什么AT89C51单片机串行口的方式0帧格式没有起始位(0)和停止位(1)?

串行口的方式0为同步移位寄存器输入/输出方式,常用于外接移位寄存器,以扩展并行I/O口,一般不用于两个89C51之间的串行通信。该方式以fosc/12的固定波特率从低位到高位发送或接收数据

  • 直接以TTL电平串行传输数据的方式有什么缺点?

优点是连线简单,缺点是抗干扰性能差,传输距离短

  • 在AT89C51单片机系统中,外接程序存储器和数据存储器共16位地址线和8位数据线,为何不会发生冲突?

因为控制信号线的不同。 外扩的RAM芯片既能读出又能写入,所以通常都有读、写控制引脚,记为和,它们分别与89C51的和引脚相连。

外扩的EPROM在正常使用中只能读出,不能写入,故EPROM芯片没有写入控制引脚,只有读出引脚,记为,该引脚与89C51单片机的相连

  • I/O接口和I/O端口有什么区别?I/O接口的功能是什么?

I/O端口简称I/O口,常指I/O接口电路中具有端口地址的寄存器或缓冲器。I/O接口是指单片机与外设间的I/O接口芯片。

I/O接口的功能:(1)实现和不同外设的速度匹配;(2)输出数据缓存;(3)输入数据三态缓冲

  • 82C55的“方式控制字”和“PC口按位置位/复位控制字”都可以写入82C55的同一控制寄存器,82C55是如何来区分这两个控制字的?

82C55通过写入控制字寄存器的控制字最高位来判断,最高位为1时,为方式控制字;最高位为0时,为PC口按位置位/复位控制字

  • 为什么要消除按键的机械抖动?软件消除按键机械抖动的原理是什么?

在按键的闭合和断开过程中,由于开关的机械特性,导致了按键抖动的产生。如果不消除按键的机械抖动,按键的状态读取将有可能出现错误。消除按键抖动一般是采用软件或硬件去抖。软件去抖的原理是,在第一次检测到有键按下时,该键所对应的行线为低电平,执行一段延时10ms的子程序后,确认该行线电平是否仍然为低电平,如果仍为低电平,则确认该行确实有键按下

  • LED的静态显示方式与动态显示方式有何区别?各有什么优缺点?

静态显示时,数据是分开送到每一位LED上的。而动态显示时,则数据是同时送到每一个LED上,再根据位选线来确定是哪一位LED被显示。静态显示亮度很高,但口线占用较多。动态显示口线占用较少,适合用在显示位数较多的场合

  • 说明矩阵式键盘按键按下的识别原理

按键设置在行、列线交点上,行、列线分别连接到按键开关的两端。行线通过上拉电阻接到+5V上,无按键按下时,行线处于高电平状态,而当有按键按下时,行线电平状态将由与此行线相连的列线的电平决定。列线的电平如果为低,则行线电平为低;列线的电平如果为高,则行线的电平亦为高。将行、列线信号配合起来并做适当的处理,才能确定闭合键的位置

  • 键盘有哪3种工作方式,它们各自的工作原理及特点是什么?

(1)编程扫描方式。当单片机空闲时,才调用键盘扫描子程序,反复扫描键盘,等待用户从键盘上输入命令或数据,响应键盘的输入请求。

(2)定时扫描方式。单片机每隔一定的时间对键盘扫描一次。

(3)中断扫描方式。只有在键盘有键按下时,才执行键盘扫描程序并执行该按键功能程序,如果无键按下,单片机将不理睬键盘

  • 如图所示,STC89C52RC采用晶振频率11.0592MHz,利用P1口控制LED灯的亮灭,写一段流水灯程序, 利用T0工作方式1进行定时,采用定时器中断的方式(可参考:一次定时的时间为1ms,其定时值初始值为0xFC67),每1秒钟仅有2个灯亮,顺序依次是(D1,D8) - (D2,D7)一(D3,D6) - (D4,D5) - (D3,D6) (D2,D7),如此循环,也就是两边向中间流水、再从中间向两边流水。

# include <reg52.h>

# define LED_PORT P1	//宏定义LEDP1端口

bit flag1s = 0;	//1s中断标志位
unsigned char LEDMode = 1;	//模式12345678

void main()
{
    EA = 1;	//开启总中断
    TMOD &= 0xF0;
    TMOD |= 0x01;
    TH0 = 0xFC;	//定时1ms
    TL0 = 0x67;
    ET0 = 1;	//使能中断
    TR0 = 1;	//启动
    
    while(1)
    {
        if(flag1s)
        {
            flag1s = 0;
            switch(LEDMode)
        	{
           		case 1:LED_PORT = 0x7E;LEDMode = 2;break;	//1,8亮
            	case 2:LED_PORT = 0xBD;LEDMode = 3;break;	//2,7亮
            	case 3:LED_PORT = 0xDB;LEDMode = 4;break;	//3,6亮
            	case 4:LED_PORT = 0xE7;LEDMode = 5;break;	//4,5亮
            	case 5:LED_PORT = 0xDB;LEDMode = 6;break;	//3,6亮
            	case 6:LED_PORT = 0xBD;LEDMode = 1;break;	//2,7亮
            	default:break;
        	}
        }
    }
}

void InterruptTimer0() interrupt 1
{
    static unsigned int count = 0;
    
    TH0 = 0xFC;  //重新加载初值
    TL0 = 0x67;
    if(count >= 1000)	//1s
    {
        count = 0;
        flag1s = 1;
    }
}

选择题

  1. 在CPU内部,反映程序运行状态或反映运算结果的特征寄存器是( B

    A.PC B.PSW C.A D.SP

  2. 外中断初始化的内容不包括(A):

    A.设置中断响应方式 B.设置外中断允许 C.设置中断总允许 D.设置中断触发方式

  3. 定时器T0工作在方式3时,定时器T1有(C)种工作方式。

    A.1种 B.2种 C.3种 D.4种

    解析:

    T0可以工作在方式3,T1不可以,T1工作在方式3相当于TR1=0,停止计数

  4. 用AT89S51的串行口扩展并行I/O口时,串行接口工作方式选择(A)。

    A. 方式0 B.方式1 C. 方式2 D.方式3

  5. AT89S51的并行I/O口信息有两种读取方法:一种是读引脚,还有一种是(A)。

    A. 读锁存器 B. 读数据库 C. 读A累加器 D.读CPU

  6. 以下不是构成控制器部件的是(D):

    A. 程序计数器 B.指令寄存器 C.指令译码器 D.存储器

  7. P1口作输入用途之前必须(B

    A. 外接上拉电阻 B.相应端口先置1 C. 相应端口先置0 D.外接高电平

  8. 在家用电器中使用单片机应属于微计算机的(B

    A.辅助设计应用 B.测量、控制应用 C.数值计算应用 D.数据处理应用

  9. 执行子程序返回或中断子程序返回指令时,返回的断点是(C)

    A.调用指令的首地址 B.调用指令的末地址

    C.调用指令下一条指令的首地址 D.返回指令的末地址

  10. 下列哪种文件后缀名是可以烧结至单片机中 (A

    A . uv2 B . c C. HEX D . inc

  11. AT89C52单片机(双列直插封装)有多少引脚 (C

    A.20 B. 28 C. 40 D. 44

  12. AT89C52单片机的地址总线有多少位 (C

    A.2 B. 8 C. 16 D. 32

解析:

at89s52单片机的数据总线的宽度是8位,地址总路线宽度是16位,但地址线的低8位和数据线是分时复用的

  1. 下面哪个引脚单片机的串行接受引脚(B

    A.XTAL1 B. RXD C. REST D. ALE

  2. 若采用的时钟晶体的频率是12MHz,那么单片机的机器周期是多少(C

    A. 1/2微秒 B. 1/6微秒 C. 1微秒 D. 1-4微秒

  3. 十六进制0xe5转换成二进制应该为(C

    A. 1111 1101 B. 1110 0011 C. 1110 0101 D. 1111 1010

  4. 在下列寄存器中,与定时 / 计数控制无关的是 (C

    A . TCON (定时控制寄存器) B. TMOD (工作方式控制寄存器)

    C. SCON (串行控制寄存器) D. IE (中断允许控制寄存器)

  5. MCS-51单片机的外部中断1的中断请求标志是 (B

    A. TR1 B. IE1

    C. IT1 D. TF1

  6. 定时器/计数器工作方式1是(D

    A. 8位计数器结构 B. 2个8位计数器结构

    C. 13位计数结构 D. 16位计数结构

  7. 已知1只共阳极LED显示器,其中a笔段为字形代码的最低位,若需显示数字E,则它的字形代码应为(C

    A. 06H B. F9H C. 86H D. 79H

  8. 对程序计数器 PC 的操作 (A

    A. 是自动进行的 B. 是通过传送进行的

    C . 是通过加 1 指令进行的 D. 是通过减 1 指令进行的

  9. 下列计算机语言中,CPU能直接识别的是 (D

    A. 自然语言 B. 高级语言 C. 汇编语言 D. 机器语言

  10. T89C52单片机的数据总线有多少位 (B

    A.2 B. 8 C. 16 D. 32

  11. 面哪个引脚单片机的地址锁存引脚 (D

    A.XTAL1 B. RXD C. REST D. ALE

  12. 当外部中断请求的信号方式为脉冲方式时,要求中断请求信号的高电平状态和低电平状态都应至少维持 (A

    A. 1个机器周期 B. 2个机器周期 C. 4个机器周期 D. 8个机器周期

  13. 二进制0110 1101转换成十六进制应该为 (D

    A. 0xe5 B. 0x6E C. 0x7E D. 0x6D

  14. 已知1只共阴极LED显示器,其中a笔段为字形代码的最低位,若需显示数字E,则它的字形代码应为(D

    A. 06H B. F9H C. 86H D. 79H

  15. 8位二进制数所能表示的最大无符号数是 (B

    A.256 B.255 C.128 D.127

  16. 有一个数152,它与十六进制数6A相等,那么该数是 (B

    A.二进制数 B.八进制数 C.十进制数 D.十六进制数

  17. 十进制数向二进制数进行转换时,十进制数91相当于二进制数(A

    A.1001 0001 B.0110 1111 C.0111 0001 D.0101 1011

  18. 取值操作后,PC的值是 (C

    A.当前指令前一条指令的地址 B.当前正在执行指令的地址

    C.下一条指令的地址 D.控制器中指令寄存器的地址

  19. 80C51单片机中,设置堆栈指针SP为37H后就发生子程序调用,这时SP的值变为 (C

    A.37H B.38H C.39H D.3AH

  20. 设置堆栈指针SP=30H后,进行一系列的堆栈操作。当进栈数据全部弹出后,SP应指向(A

    A. 30H单元 B. 07H单元 C. 31H单元 D.2FH单元

  21. 程序计数器PC是(A)位的计数器,能寻址64KB的程序存储器范围。

    A.16 B.8   C.4   D.32

  22. 单片机程序存储器的寻址范围是由程序计数器PC的位数决定的,MCS-51的PC为16位,因此其寻址范围是 (C

    A.4KB B.8KB C.64KB D.128KB

  23. 80C51单片机地址总线(AB)总线宽度为 (B)位。

    A.8 B.16 C.15 D.32

  24. 8051单片机复位信号应从 (B)脚接入。

    A.P3.2   B.RST  C.8脚 D.T1

  25. 8051复位后PC和SP中的内容各为 (C

    A.PC=0000H,SP=60H B.PC=0040H,SP=07H C.PC=0000H,SP=07H D.PC=1000H,SP=07H

  26. 一个机器周期含有(D)个时钟周期

    A.1   B.2 C.6 D.12

  27. 一个机器周期含有 ① 个时钟周期,当单片机时钟频率为12MHZ时,一个机器周期为 ②μs (C

    A.①6 ②2 B.①12 ②2 C.①12 ②1 D.①6 ②1

  28. 在寄存器间接寻址方式中,指定寄存器中存放的是 (B

    A.操作数 B.操作数地址 C.转移地址 D.地址偏移量

  29. 下列指令或指令序列中,不能实现PSW内容送A的是 (C

    A. MOV A , PSW B. MOV A , 0D0H

    C. MOV R0 , # 0D0H D. PUSH PSW

    MOV A , @R0 POP ACC

  30. 在相对寻址方式中,“相对”两字是指相对于(A

    A. 地址偏移量rel B. 当前指令的首地址 C. 下一条指令的首地址 D. DPTR值

  31. 下列指令或指令序列中,能将外部数据存储器3355H单元内容传送给A的是 (B

    A. MOVX A , 3355H B. MOV DPTR , # 3355H

    MOVX A , @DPTR

    C. MOV P0 , # 33H D. MOV P2 , # 33H

    MOV R0 , # 55H MOV R2 , # 55H

    MOVX A , R0 MOVX A , @R2

  32. 对程序存储器的读操作,只能使用(D

    A.MOV指令 B.PUSH指令 C.MOVX指令 D.MOVC指令

  33. 执行返回指令后,返回的断点是 (C

    A.调用指令的首地址 B.调用指令的末地址

    C.调用指令的下一条指令的首地址 D.返回指令的末地址

  34. 以下各项中不能用来对内部数据存储器进行访问的是 (B

    A.数据指针DPTR B. 按存储器单元地址或名称

    C.堆栈指针SP D.由R0或R1作间址寄存器

  35. 指令MOV寻址空间是 (C

    A.片外ROM B.片外RAM C.片内RAM D.片内ROM

  36. 指令MOVX寻址空间是(B

    A.片外ROM B.片外RAM C.片内RAM D.片内ROM

  37. “MUL AB”指令执行后,16位乘积的高位在(D)中。

    A.A B.C C.AB D.B

  38. 8051单片机外部中断0、1在(D

    A.P0 口   B.P1 口  C.P2 口 D.P3 口

  39. 8051内部有①个定时/计数器,对外部事件脉冲计数是②;对片内机周脉冲计数是③。(A

    A.①2 ②计数器 ③定时器 B.①4 ②定时器 ③计数器

    C.①2 ②定时器 ③计数器  D.①1 ②计数器 ③定时器

  40. 下列有关80C51中断优先级控制的叙述中,错误的是(D

    A. 低优先级不能中断高优先级,但高优先级能中断低优先级

    B. 同级中断不能嵌套 C. 同级中断请求按时间的先后顺序响应

    D. 同一时刻,同级的多中断请求,将形成阻塞,系统无法响应

  41. 在工作方式0下,计数器由TH的全部8位和TL的低5位组成,因此,其计数范围是(A

    A. 1~8192 B. 0~8191 C. 0~8192 D.1~4096

  42. 下列有关单片机程序存储器的论述中,错误的是(A

    A.用户程序保存在程序存储器中 B.断电后程序存储器仍能保存程序

    C.对于程序存储器只使用MOVC一种指令

    D.执行程序需要使用MOVC指令从程序存储器中逐条读出指令

  43. 下列有关单片机数据存储器的论述中,错误的是(A

    A.数据存储器只使用MOV指令进行读/写 B.堆栈在数据存储器中开辟

    C.数据存储器只用于保存临时数据 D.专用寄存器也是数据存储器的一部分

  44. 若在系统中只扩展一片Inter2732(4K×8),除应使用P0口的8条口线外,至少还应使用P2口的口线(A

    A.4条 B.5条 C.6条 D.7条

  45. 下列叙述中,不属于单片机存储器系统特点的是(D

    A.程序和数据两种类型的存储器同时存在 B.芯片内外存储器同时存在

    C.扩展数据存储器与片内数据存储器存储空间重叠

    D.扩展程序存储器与片内程序存储器存储空间重叠

  46. 下列有关8255并行接口芯片的叙述中,错误的是 (C

    A.8255的可编程性表现在它的工作方式命令和位置位/复位命令上

    B.8255由于采用标志位状态区分命令,所以命令的写入次序不受限制

    C.在8255工作方式0下,3个口可构成16种I/O组合

    D.在8255工作方式1下,只能使用中断方法而不能使用查询方法进行I/O操作

  47. 下列有关串行通信的说明中,错误的是(A

    A.80C51串行口只有异步方式而无同步方式,因此,只能进行串行异步通信

    B.80C51串行口发送和接收使用同一个数据缓冲寄存器SBUF

    C.双机通信时要求两机的波特率相同

    D.偶校验时只给校验位写入一个0或1,以使得数据位和校验位中的1的个数为偶数

  48. 下列特点中,不是串行数据传送所具有的是(A

    A.速度快 B.成本低 C.传送线路简单 D.适用于长距离通信

  49. 在下列有关串行同步通信与异步通信的比较中错误的是 (C

    A.它们采用相同的数据传输方式,但采用不同的数据传输格式

    B.它们采用相同的数据传输格式,但采用不同的数据传输格式

    C.同步方式适用于大批量数据传输,而异步方式则适用于小批量数据传输

    D.同步方式对通信双方同步的要求高,实现难度大。而异步方式的要求则相对较低

  50. A/D转换芯片中所需要编址的是(D

    A.用于转换数据输出的三态锁存器 B. A/D转换电路

    C.模拟信号输入通道 D.地址锁存器

  51. 数据缓冲(锁存)器在 (C

    A. D/A转换器接口时需要 B. A/D转换器接口时需要

    C. D/A和A/D转换器接口时都需要 D. D/A和A/D转换器接口时都不需要

  52. 三态缓冲器在 (C

    A. D/A转换器接口时需要 B. A/D转换器接口时需要

    C. D/A和A/D转换器接口时都需要 D. D/A和A/D转换器接口时都不需要