期末单片机复习题及答案(答案不保证全部正确95分)

❤️作者主页:凉开水白菜
❤️作者简介:共同学习,互相监督,热于分享,多加讨论,一起进步
❤️点赞 👍 收藏 ⭐再看,养成习惯

订阅的粉丝可通过PC端文末加我微信,可对文章的内容进行一对一答疑!


PS:出来工作一段时间了,回想最近有些小伙伴的评论指出问题所在索性重新回顾了一遍大学的题,做了一些修改,但可能还是存在一些问题(看的不仔细或者说和书本有冲突),欢迎各位继续指正,如果有更多题目也可以联系我添加,就当是一个汇总后续的小伙伴可以跟着文章进行学习或者是复习,再次感谢评论区的小伙伴做出的错误指正。

一、判断题

(×) 1.单片机C语言程序不区分大小写。

(x)2.ARR是定时器预分频寄存器。(预分频psc,arr是重装载或者说就是一个溢出值上限)

(×)3.一个IAR工程可以包含多个main()函数。

(√) 4.一个IAR工程可以包含多个C程序源文件。

(×) 5.要清零单片机I/0口的某一位, 通常用“I”运算。(&运算)

(√) 6.单片机C语言程序区分大小写。

(×)7.中断服务函数需要单独声明。(系统函数已经声明)

(√) 8.一个IAR工程只能有一个main()函数。

(×) 9.一个IAR工程只能有一个C程序源文件。

(√) 10.要置位单片机I/0口的某一位,通常用“&”运算。

(×)11中断服务函数需要单独申明。.s文件中存在中断向量表,在stm32f10x.h头文件中存中断号配置)

(√) 12.共阳极数码管的公共端通常接高电平。(共阴极接低电平)

(√) 13. STM8系列单片机通常采用SWIM接口下载程序。(且不能通过keil开发只能使用iar进行开发)

(√) 14. STM8系列单片机内部具有上电复位电路。

(√)15.IDR寄存器用于读取端口状态。(只读端口)

(√)16.中断服务函数返回类型只能为void.(中断函数不能传入形参也不能传回数值)

(×) 17.共阴极数码管的公共端通常接高电平。

(√) 18. STM8S单片机的申口是全双工的。(理论上串口通信都属于全双工通信rx和tx两根先互不影响,但如果串口需要走差分信号例如rs485就变成了半双工通信,只能单向发送和接收)

(√) 19. ODR寄存器用于控制端口输出状态。(最开始的推免模式控制端口)

(√) 20. STM8系列单片机具有内部RC时钟,在使用时可以不接外部晶振。(外接晶振可以调整精度,rc时钟抗干扰能力强)

二、选择题

1.单片机的CPU主要由__A_组成。

A、运算器、控制器

B、加法器、寄存器

C、运算器、加法器

D、运算器、译码器

2.程序是以__C__形式存放在程序存储器中的。

A、C语言源程序

B、汇编程序

C、二进制编码

D、BCD码

  1. I2C总线属于__A_通信。

A、串行

B、并行

  1. STM8S207内部高速RC振荡器的频率为__C___ MHz。

A、8

B、12

C、16

D、110592

5.数码管_A_显示方式占用l/0端口线较多,但编程较简单,适用于显示位数较少的场合。

A、静态

B、动态

C、静态和动态

D、查询

6.单片机程序中的变量一般存放在__B__中。

A、ROM // 存在掉电保存

B.、RAM // 运行完后自动销毁

C、EEPROM // 外部flash 一般为at24cxx系列

7.设计一个2位八段数据管的动态显示电路,需要__C__个 I/0。

A、4

B、8

C、10

D、16

  1. 3X3矩阵键盘和单片机直接连接时,需要__D__个I/0。

A、4

B、8

C、9

D、6

9.串口发送数据端口名称通常为_C_

A、TI

B、TXD,发送英文:transmit

C、RXD,接受英文:receive

D、SDA

  1. AD转换的分辨率由__A__决定。

A、转换位数

B、转换时间

C、转换方式

D、读取方式

11.计数器当前值寄存器为__B__。

A、ARR :定时器重装载寄存器

B、CNTR : 定时器当前值寄存器

C、CCR::控制寄存器

D、PSCR:定时器分频寄存器

12.控制端口方向的寄存器为__C__(idr只读,odr控制端口输出状态,ddr控制方向)

A、IDR

B、ODR

C、DDR

13.在单片机应用系统中,数码管显示电路通常有__C__显示方式。(目前所学就静态和动态)

A、静态

B、动态

C、静态和动态

D、查询

14.C程序总是从__A__ 开始执行的。

A、主函数(main函数)

B、主程序

C、子程序

D、主过程

15.定时器自动重装载寄存器名称为_A_

A、ARR :重装载

B、CNTR:当前值

C、CCR:控制

D、PSCR:预分频

  1. STM8系列单片机的定时器1为__B__位。

A、8位

B、16位

C、12位

D、20位

17.设计一个4位八段数据管的动态显示电路,需要__C__个 I/0。(参考M7SEG)

A、4

B、8

C、12

D、32

  1. 4X4矩阵键盘和单片机直接连接时,需要__B___个 I/0。(参考4×4键盘)

A、4

B.、8

C、12

D,16

19.源程序编译链接后生成可下载文件的扩展名通常是_A_(51里面是生成hex)

A.、hex

B、c

C、h

D、s

  1. STM8S207系列单片机内部AD转换为__B__位。

A、8

B、10

C.、12

D、16

三、简答题

STM8S单片机RST引脚是高电平复位还是低电平复位?请设计RC复位电路。

低电平复位

2.什么是拉电流?什么是灌电流?

拉电流就是输出电流;灌电流就是吸收电流

定时器的定时模式和计数模式有什么区别?

定时模式是用cpu的运行时钟进行计数,计数模式是用外部引脚上的脉冲计数。

4.什么是半双工通信模式?

①半双工数据传输允许数据在两个方向上传输,但是,在某一时刻,只允许数据在一个方向上传输,它实际上是一种切换方向的单工通讯;在同一时间只可以有一方接受或发送信息,可以实现双向通信。具体请看下面的题目

5.什么是下拉电阻?下拉电阻有什么作用? .

将不确定的信号通过一个电阻钳位在低电平:

1、提高电压准位。2、加大输出引脚的驱动能力。 3、防静电、防干扰。

4、电阻匹配,抑制反射波干扰。5、预设空间状态/缺省电位。

6、提高芯片输入信号的噪声容限。

6.请简述中断响应过程。

中断处理、中断判优、中断响应、中断处理和中断返回。

7.请列出STM8S单片机1/0口的4种输入模式

开漏输出、推挽输出、浮动输入、带上拉输入(暂时收集到输入输出共四种)

修正:悬浮输入、上拉输入、中断悬浮输入、中断上拉输入

8.什么是上拉电阻?上拉电阻有什么作用?

上拉就是将不确定的信号通过一个电阻钳位在高电平,电阻同时起限流作用。

1、提高输出高电平的值2、为增强输出引脚的驱动能力

3、防静电、防干扰。4、电阻匹配,抑制反射波干扰

9.什么是全双工通信模式

②全双工数据通信允许数据同时在两个方向上传输,因此,全双工通信是两个单工通讯方式的结合,它要求发送设备和接收设备都有独立的接收和发送能力;在同一时间可以同时接受和发送信息,实现双向通信。具体请看下面的题目

10.请画出2位八段共阳极数码管的内部组成图,标注引脚名称,不用标注引脚编号。

共阴极的话把led反过来接

11.什么是键盘抖动?如何消除?

按键按下时或按键弹起时,接触片会抖动,导致按键通断很多次,解决方法就是按键按下过后检测按键是否弹起,弹起过后再读取该值。

12.什么是中断向量?

中断向量是指早期的微机系统中将由硬件产生的中断标识码,中断源的识别标志,可用来形成相应的中断服务程序的入口地址或存放中断服务程序的首地址。

13.同步通信和异步通信各自的优缺点是什么?

同步通信:面向比特的传输,每个信息帧中包含若干个字符,要求接收时钟和发送时钟同频同相,通过特定的时钟线路协调时序,数据流发送端发送连续的比特流

异步通信:面向字符的传输,每个字符帧只包含一个字,不要求接收时钟和发送时钟完全同步,对时序的要求较低,数据流发送端发送完一个字节后,可经过任意长的时间间隔再发送。

14.单片机定时器的定时模式和计数模式有什么区别

定时器是以内部时钟作为基准来工作的,计数器是以外部脉冲输入来计数的。

定时方式实际是用cpu的运行时钟进行计数,计数方式是用外部引脚上的脉冲计数。

15.什么是半双工通信?什么是全双工通信

①半双工数据传输允许数据在两个方向上传输,但是,在某一时刻,只允许数据在一个方向上传输,它实际上是一种切换方向的单工通讯;在同一时间只可以有一方接受或发送信息,可以实现双向通信。

②全双工数据通信允许数据同时在两个方向上传输,因此,全双工通信是两个单工通讯方式的结合,它要求发送设备和接收设备都有独立的接收和发送能力;在同一时间可以同时接受和发送信息,实现双向通信。

16.什么是单片机应用系统?

就是将单片机技术应用在电子、工业控制领域的各种典型产品

17.软件定时和硬件定时的原理有什么异同?

软件定时:是利用指令执行的时间从而来达到定时的目的,一般是利用循环执行一段指令,来定时一段比较长的时间。

优点:不需占用硬件资源,编程简单。缺点:占用cpu的时间,cpu利用率低。长时间的软件定时会让系统的实时性非常的差。适用场合:微妙级的短时间延时,系统实时性要求不高和硬件资源紧张的场合。

硬件定时:利用定时器来计算时间。

优点:定时准确,不占cpu,系统响应速度快。缺点:占用硬件资源。

四、设计题

1.设计数码管显示电路和程序。

(1)设计4位共阳极数码管显示电路。l/0 分配:数码管的段选从a~dp依次接入***,位选从左到右依次接入***,**为个位。

参考后面代码(数码管复习代码)

(2)电路图应标出引脚名称、元件编号及元件参数。

(3)编写数码管动态显示函数M7SEG.
Displaynt): (每空2分,共16分)

在该函数内部执行一次完整的数码管显示驱动,会计算段码。

参考后面代码(按键复习代码)

2.设计4X4矩阵键盘接口电路和程序。

(1)画出单片机的电源电路、复位电路和矩阵键盘电路。

(2) 1/0分配:矩阵键盘行03对应**,列03对应**.

电路图应标出引脚名称、元件编号及元件参数。

(3)编写矩陈键盘扫描函数KEY4X4.
Scan (void)。

矩阵键盘扫描函数,有按键按下返回键值0~15,无按下返回0xFF.

参考后面代码(流水灯复习代码)

3.设计8位流水灯控制电路和程序。

(1)画出外部复位电路和LED驱动电路,流水灯DO~D7依次接入***。.

(2)电路图应标出引脚名称、元件编号及元件参数。

(3)编写流水灯控制任务函数,进入该函数后,执行流水灯任务。例: D7到D4点亮15,然后从D7到DO依次循环点亮,首次点亮D7,每次点亮1只,每只点亮时间为0.5S。

参考后面代码

五、代码段

数码管复习程序:

//端口定义

#define M7SEG_PORT      GPIOB->ODR

#define M7SEG_PORT_INIT
GPIOB

#define M7SEG_BIT1
GPIOA->ODRR.bit4

#define M7SEG_BIT2 GPIOA->ODRR.bit5

#define M7SEG_BIT3
GPIOA->ODRR.bit6

#define M7SEG_BIT4
GPIOD->ODRR.bit7

#define M7SEG_BIT1_PORT
GPIOA

#define
M7SEG_BIT1_PIN  GPIO_PIN_4

#define M7SEG_BIT2_PORT
GPIOA

#define
M7SEG_BIT2_PIN  GPIO_PIN_5

#define M7SEG_BIT3_PORT
GPIOA

#define
M7SEG_BIT3_PIN  GPIO_PIN_6

#define M7SEG_BIT4_PORT
GPIOD

#define
M7SEG_BIT4_PIN  GPIO_PIN_7

//调用程序

unsigned char
TAB_CA[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,

                       
0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0xFF};

void M7SEG_Seg_Init(void)

{

  GPIO_Init(M7SEG_PORT_INIT, GPIO_PIN_ALL,
GPIO_MODE_OUT_PP_LOW_FAST);

}

void M7SEG_Bit_Init(void)

{

GPIO_Init(M7SEG_BIT1_PORT,
M7SEG_BIT1_PIN, GPIO_MODE_OUT_PP_HIGH_FAST);

GPIO_Init(M7SEG_BIT2_PORT,
M7SEG_BIT2_PIN, GPIO_MODE_OUT_PP_HIGH_FAST);

GPIO_Init(M7SEG_BIT3_PORT,
M7SEG_BIT3_PIN, GPIO_MODE_OUT_PP_HIGH_FAST);

GPIO_Init(M7SEG_BIT4_PORT,
M7SEG_BIT4_PIN, GPIO_MODE_OUT_PP_HIGH_FAST);

}

void M7SEG_Init (void)

{

  M7SEG_Seg_Init(); //段选初始化

  M7SEG_Bit_Init(); //位选初始化

}

void
M7SEG_DisplayInt(void)

{

 unsigned int num;

 unsigned char temp[4];

 u16 k;

 num = numInt;

 temp[0] = (unsigned char)(num%10);

 temp[1] = (unsigned char)((num/10)%10);

 temp[2] = (unsigned char)((num/100)%10);

 temp[3] = (unsigned char)((num/1000)%10);

 k = 2;

   //千位

  M7SEG_PORT = TAB_CA[temp[3]]; //送段码

  M7SEG_BIT1 = 0; //打开位选,开始显示该位数据

  delay_ms(k);//延时,控制显示时间和刷新时间

  M7SEG_BIT1 = 1; //关闭位选,结束显示该位数据

  //百位

  M7SEG_PORT = TAB_CA[temp[2]];

  M7SEG_BIT2 = 0;

  delay_ms(k);

  M7SEG_BIT2 = 1;

  //十位

  M7SEG_PORT = TAB_CA[temp[1]];

  M7SEG_BIT3 = 0;

  delay_ms(k);

  M7SEG_BIT3 = 1;

  //个位

  M7SEG_PORT = TAB_CA[temp[0]];

  M7SEG_BIT4 = 0;

  delay_ms(k) ;

  M7SEG_BIT4 = 1;   

}

//按键程序复习

//端口定义

#define
KEY4X4_H0_PORT  GPIOD

#define KEY4X4_H0_PIN   GPIO_PIN_4

#define
KEY4X4_H1_PORT  GPIOD

#define
KEY4X4_H1_PIN   GPIO_PIN_3

#define
KEY4X4_H2_PORT  GPIOD

#define
KEY4X4_H2_PIN   GPIO_PIN_2

#define
KEY4X4_H3_PORT  GPIOD

#define
KEY4X4_H3_PIN   GPIO_PIN_0

#define
KEY4X4_L0_PORT  GPIOE

#define
KEY4X4_L0_PIN   GPIO_PIN_0

#define
KEY4X4_L1_PORT  GPIOE

#define
KEY4X4_L1_PIN   GPIO_PIN_1

#define
KEY4X4_L2_PORT  GPIOE

#define
KEY4X4_L2_PIN   GPIO_PIN_2

#define
KEY4X4_L3_PORT  GPIOE

#define
KEY4X4_L3_PIN   GPIO_PIN_5

#define
KEY4X4_NOPRESS  0XFF//没有按键按下的时候返回的值(重点)

//调用程序

void KEY4X4_Init(void)

{

  //行线推挽输出

 
GPIO_Init(KEY4X4_H0_PORT,KEY4X4_H0_PIN,GPIO_MODE_OUT_PP_LOW_FAST);

 
GPIO_Init(KEY4X4_H1_PORT,KEY4X4_H1_PIN,GPIO_MODE_OUT_PP_LOW_FAST);

 
GPIO_Init(KEY4X4_H2_PORT,KEY4X4_H2_PIN,GPIO_MODE_OUT_PP_LOW_FAST);

 
GPIO_Init(KEY4X4_H3_PORT,KEY4X4_H3_PIN,GPIO_MODE_OUT_PP_LOW_FAST);

  //列线上拉输入

  GPIO_Init(KEY4X4_L0_PORT,KEY4X4_L0_PIN,
GPIO_MODE_IN_PU_NO_IT);

  GPIO_Init(KEY4X4_L1_PORT,KEY4X4_L1_PIN,
GPIO_MODE_IN_PU_NO_IT);

  GPIO_Init(KEY4X4_L2_PORT,KEY4X4_L2_PIN,
GPIO_MODE_IN_PU_NO_IT);

  GPIO_Init(KEY4X4_L3_PORT,KEY4X4_L3_PIN,
GPIO_MODE_IN_PU_NO_IT);

}

u8 KEY4X4_Scan(void)

{

  u8 i, key;

  key = KEY4X4_NOPRESS;

  for(i=0;i<4;i++)

  {

    //行线输出低电平

    KEY4X4_H0 = 1;

    KEY4X4_H1 = 1;

    KEY4X4_H2 = 1;

    KEY4X4_H3 = 1;

  switch(i)

  {

    case 0: KEY4X4_H0 = 0; break; //第0行输出低电平

    case 1: KEY4X4_H1 = 0; break; //第1行输出低电平

    case 2: KEY4X4_H2 = 0; break; //第2行输出低电平

    case 3: KEY4X4_H3 = 0; break; //第3行输出低电平

    default: break;

  }

  //读取列线状态

  if(KEY4X4_L0 == 0)            //第0列按下,读回低电平

    key = (i<<2) + 0;

  else if (KEY4X4_L1 == 0)      //第1列按下,读回低电平

    key = (i<<2) + 1;

  else if (KEY4X4_L2 == 0)      //第2列按下,读回低电平

    key = (i<<2) + 2;

  else if (KEY4X4_L3 == 0)      //第3列按下,读回低电平

    key = (i<<2) + 3;

   }

  return key; //返回键值

}

流水灯复习程序:

//端口定义

#define LED_PORT    GPIOB

#define LED_ODR     GPIOB->ODR

//实现库函数中操作单个输出端口

#define LED0            GPIOB->ODRR.bit0

#define LED1            GPIOB->ODRR.bit1

#define LED2            GPIOB->ODRR.bit2

#define LED3            GPIOB->ODRR.bit3

#define LED4            GPIOB->ODRR.bit4

#define LED5            GPIOB->ODRR.bit5

#define LED6            GPIOB->ODRR.bit6

#define LED7            GPIOB->ODRR.bit7

//调用程序(流水灯)

void LED_Task_D7toD0_S1_m1(void)

{

    u8 i,k;

    LED_Init();

    while(1)

{

//这个地方的0x80二进制为10000000依次位移一位就产生了一个个亮延时500ms一次

      k=0x80;

      for(i=0;i<8;i++)

      {

        LED_ODR =~ k;

        delay_ms(500) ;

        k = k>>1;

      }

     }

}

//延时程序:这个没什么好记得记住2286就对了。

void delay_ms (unsigned
int num)

{

  unsigned int i;

  while(num>0)

  {

   
for(i=2286;i>0;i–);

    num–;

  }

}

结尾

我是凉开水白菜,我们下文见~

  • 54
    点赞
  • 481
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
很好很详细的资料,看了考试应该没问题的,大家快来下吧!单片机原理复习资料(一)  填空题: 1.MCS—51单片机引脚信号中,信号名称带上划线的表示该信号 或 有效。 2.通过堆栈操作实现子程序调用,首先要把 的内容入栈,以进行断点保护。调用返回时再进行出栈操作,把保护的断点送回 。 3.某程序初始化时使(SP)=40H,则此堆栈地址范围为 ,若使(SP)=50H,则此堆栈深度为 。 4.在相对寻址方式中,“相对”两字是指相对于 ,寻址得到的结果是 。在寄存器寻址方式中,指令中指定寄存器的内容就是 。在变址寻址方式中,以 作变址寄存器,以 或 作基址寄存器。 5.假定累加器(A)=49H,执行指令: 201AH: MOVC A,@A+PC 后,送入A的是程序存储器 单元的内容。 6.若(DPTR)=5306H,(A)=49H,执行下列指令: MOVC A,@A+DPTR 后,送入A的是程序存储器 单元的内容。 7.假定(SP)=45H,(ACC)=46H,(B)=47H,执行下列指令: PUSH ACC PUSH B 后,(SP)= ,(46H)= ,(47H)= 。 8.假定(SP)=47H,(46H)=46H,(47H)=47H。执行下列指令: POP DPH POP DPL 后,(DPTR)= ,(SP)= 。 9.若(A)=56H,(R0)=56H,(56H)=56H。执行指令: ADD A,@R0 后,(A)= ,(CY)= ,(AC)= ,(OV)= 。 10.若(A)=0FFH,(R0)=46H,(46H)=0FFH,(CY)=1。 执行指令: ADDC A,@R0 后,(A)= ,(CY)= ,(AC)= ,(OV)= 。 11.假定(A)=45H,(B)=67H。执行指令: MUL AB 后,寄存器(B)= ,累加器(A)= ,(CY)= ,(OV)= 。 12.假定(A)=0FCH,(B)=35H。执行指令: DIV AB 后,累加器(A)= ,寄存器(B)= ,(CY)= ,(OV)= 。 13.执行如下指令序列: MOV C,P1.0 ANL C,P1.1 OR C,/P1.2 MOV P1.3,C 后,所实现的逻辑运算式为 。 14.假定addr11=00100011001B,标号MN的地址为2099H。执行指令: MN:AJMP addr11 后,程序转移到地址 去执行。 15.假定标号MN的地址为2000H,标号XY值为2022H。应执行指令: MN:SJMP XY 该指令的相对偏移量为 。 16.累加器A中存放着一个其值小于63的8位无符号数,CY清“0”后执行指令: RLC A RLC A 则A中数变为原来的 倍。 17.在MCS—51单片机系统中,采用的编址方式是 。MCS—51可提供 和 两种存储器,其编址方式为 ,扩展后其最大存储空间别为 和 。对80C51而言,片内ROM和片外ROM的编址方式为 ,片外ROM的地址从 开始;片内RAM和片外RAM的编址方式为 ,片外RAM的地址从 开始。 18.为实现内外程序存储器的衔接,应使用 信号进行控制,对8031, EA= ,CPU对 进行寻址;对80C51, EA=1,CPU对 寻址。 19.访问内部RAM使用 指令,访问外部RAM使用 指令,访问内部ROM使用 指令,访问外部ROM使用 指令。 20.当计数器产生记数溢出时,定时器/记数器的TF0(TF1)位= 。对记数溢出的处理,在中断方式时,该位作为 位使用;在查询方式时,该位作为 位使用。 21.在定时器工作方式0下,计数器的宽度为 位,其记数范围为 ,如果系统晶振频率为6MHZ,则最大定时时间为 。 22.利用定时器/计数器产生中断时,应把定时器/计数器设置成 工作状态,当计数器设置成方式0时,记数初值应为 ;设置成方式1时,记数初值应为 ;设置成方式2或方式3时,记数初值应为 。 23.对单片机而言,连接到数据总线上的输出口应具有 功能,连接到数据总线上的输入口应具有 功能。 24.在多位LED显示器接口电路的控制信号中,必不可少的是 控信号和 控信号。 25.与8255比较,8155的功能有所增强,主要表现在8155具有 单元的 和一个 位的 。 26.单片机实现数据通讯时,其数据传送方式有 和 两种。串行数据传送方式为 和 两种。 27.专用寄存器“串行发送数据缓冲寄存器”,实际上是 寄存器和 寄存器的总称。 28.在串行通讯中,若发送方的波特率为1200bps,则接收方的波特率为 。 29.D/A转换电路之前必须设置数据锁存器,这是因为 。 30.对于由8031构成的单片机应用系统,EA脚应接 ,中断响应并自动生成长调用指令LCALL后,应转向 去执行中断服务程序。 单选题: 1.80C51与8031的区别在于 内部ROM的容量不同 内部RAM的容量不同 内部ROM的类型不同 80C51使用EEPROM,而8031使用EPROM 2.PC的值是 A.当前指令前一条指令的地址 B.当前正在执行指令的地址 C.下一条指令的地址 D.控制器中指令寄存器的地址 3.假定(SP)=37H,在进行子程序调用时把累加器A和断点地址进栈保护后,SP的值为 A.3AH B.38H C.39H D.40H 4.在80C51中,可使用的堆栈最大深度为 A.80个单元 B.32个单元 C.128个单元 D.8个单元 5.在相对寻址方式中,寻址的结果体现在 A.PC中 B.累加器A中 C.DPTR中 D.某个存储单元中 6.在寄存器间接寻址方式中,指定寄存器中存放的是 A.操作数 B.操作数地址 C.转移地址 D.地址偏移量 7.执行返回指令时,返回的断点是 A.调用指令的首地址 B.调用指令的末地址 C.返回指令的末地址 D.调用指令下一条指令的首地址 8.可以为访问程序存储器提供或构成地址的有 A.只有程序计数器PC B.只有PC和累加器A C.只有PC、A和数据指针DPTR D.PC、A、DPTR和堆栈指针SP 9.若原来工作寄存器0组为当前寄存器组,现要改2组为当前寄存器组,不能使用指令 A.SETB PSW.3 B.SETB D0H.4 C.MOV D0H,#10H D.CPL PSW.4 10.执行以下程序段 MOV SP,#40H MOV B,#30H MOV A,#20H PUSH B PUSH ACC POP B POP ACC 后,B和A的内容别为 A.20H,30H B.30H,20H C.40H,30H D.40H,20H 11.执行以下程序段 MOV R0,#70H MOV A,R0 RL A MOV R1,A RL A RL A ADD A,R1 MOV @R0,A 后,实现的功能是 A.把立即数70H循环左移3次 B.把立即数70H×10 C.把70H单元的内容循环左移3次 D.把70H单元的内容×10 12.下列叙述中,不属于单片机存储器系统特点的是 A.扩展程序存储器与片内程序存储器存储空间重叠 B.扩展数据存储器与片内数据存储器存储空间重叠 C.程序和数据两种类型的存储器同时存在 D.芯片内外存储器同时存在 13.如在系统中只扩展两片Intel2764,其地址范围别为0000H~1FFFH、8000H~9FFFH,除应使用P0口的8条口线外,至少还应使用P2口的口线 A.6条 B.7条 C.5条 D.8条 14.下列有关MCS—51中断优先级控制的叙述中,错误的是 A.低优先级不能中断高优先级,但高优先级能中断低优先级 B.同级中断不能嵌套 C.同级中断请求按时间的先后顺序响应 D.同级中断按CPU查询次序响应中断请求 15.执行中断返回指令,要从堆栈弹出断点地址,以便去执行被中断了的主程序。从堆栈弹出的断点地址送给 A.A B.CY C.PC D.DPTR 16.中断查询确认后,在下列各种单片机运行情况中,能立即进行响应的是 A.当前指令是ORL A,Rn指令 B.当前正在执行RETI指令 C.当前指令是MUL指令,且正处于取指令机器周期 D.当前正在进行1优先级中断处理 下列功能中不是由I/O接口实现的是 A.数据缓冲和锁存 B.数据暂存 C.速度协调 D.数据转换 18.为给扫描法工作的键盘提供接口电路,在接口电路中需要 A.一个输入口 B.一个输出口 C.一个输入口和一个输出口 D.两个输入口 19.下列理由中,能说明MCS—51的I/O编址是统一编址方式而非独立编址方式的理由是 用存储器指令进行I/O操作 有专用的I/O指令 有区存储器和I/O的控制信号 I/O和存储器的地址可以重叠 20.把8155的A2、A1、A0别与80C51的P0.2、P0.1、P0.0连接,则8155的PA、PB、PC口的地址可能是 A.××00H~××03H B.00××H~03××H C.××01H~××03H D.××00H~××02H 21.调制解调器(MODEM)的功能是 A.串行数据与并行数据的转换 B.数字信号与模拟信号的转换 C.电平信号与频率信号的转换 D.基带传送方式与频带传送方式的转换 22.通过串行口发送数据时,在程序中应使用 A.MOVX SBUF,A B.MOVC SUBF,A C.MOV SUBF,A D.MOV A,SUBF 23.通过串行口接收数据时,在程序中应使用 A.MOVX A,SBUF B.MOVC A,SUBF C.MOV SUBF,A D.MOV A,SUBF 24.在多机通讯中,有关第9数据位的说明中,正确的是 A.接收到的第9数据位送SCON寄存器的TB8中保存 B.帧发送时使用指令把TB8位的状态送入移位寄存器的第9位 C.发送的第9数据位内容在SCON寄存器的RB8中预先准备好 D.帧发送时使用指令把TB8位的状态送入发送SBUF中 25.在使用多片DAC0832进行D/A转换,并时输入数据的应用中,它的两级数据锁存结构可以 A.提高D/A转换速度 B.保证各模拟电压能同时输出 C.提高D/A转换精度 D.增加可靠性 26.8279芯片与80C51接口电路时,其内部时钟信号是由外部输入的时钟信号经过频产生的。如80C51的fosc=6MHz,8279为取得100KHz的内部时钟信号,则其定时值为 A.20D B.10D C.20H D.10H 析程序后,回答问题。 若(A)=80H,R0=17H,(17H)=34H,执行下段程序后,(A)=? ANL A,#17H ORL 17H,A XRL A,@R0 CPL A 写出程序执行后有关寄存器和RAM中有关单元的内容: MOV 30H,#A4H MOV A,#0D6H MOV R0,#30H MOV R2,#47H ANL A,R2 ORL A,R0 SWAP A CPL A XRL A,#0FFH ORL 30H,A 下列程序执行后,(SP)=? (A)=? (B)=? ORG 2000H MOV SP,#40H MOV A,#30H LCALL 2500H ADD A,#10H MOV B,A SJMP $ ORG 2500H MOV DPTR,#200AH PUSH DPL PUSH DPH RET 在程序存储器中,数据表格为: 1010H:02H 1011H:04H 1012H:06H 1013H:08H 执行程序 1000H:MOV A,#0DH 1002H:MOVC A,@A+PC 1003H:MOV R0,A 问结果:(A)=? (R0)=? (PC)=? 在程序存储器中,数据表格为: 7010H:02H 7011H:04H 7012H:06H 7013H:08H 执行程序 1004H:MOV A,#10H 1006H:MOV DPTR,#7000H 1009H:MOVC A,@A+DPTR 问结果:(A)=? (PC)=? 程序如下: CLR RS1 CLR RS0 MOV A,#38H MOV R0,A MOV 29H,R0 SETB RS0 MOV C,RS0 MOV R1,A MOV 26H,A MOV 28H,C ADDC A,26H 试问:(1)区哪些是位操作指令?哪些是字节操作指令? (2)写出程序执行后有关寄存器和RAM中有关单元的内容。 设单片机采用6MHz晶振,计算如下一段程序的执行时间,并说明这段程序的作用。 MOV R0,#20H MOV R3,#05H MOV A,@ R0 CPL A ADD A,#01H MOV @ R0,A NEXT: INC R0, MOV A,@ R0 CPL A ADDC A,#00H MOV @ R0,A DJNZ R3,NEXT SJMP $ 用80C51单片机的P1端口作输出,经驱动电路接8只发光二极管,如图,输出位是“1”时,发光二极管点亮,输出“0”时为暗。试析下述程序执行过程及发光二极管点亮的工作规律。 LP:MOV P1,#81H LCALL DELAY MOV P1,#42H LCALL DELAY MOV P1,#24H LCALL DELAY MOV P1,#18H LCALL DELAY MOV P1,#24H LCALL DELAY MOV P1,#42H LCALL DELAY SJMP LP 子程序: DELAY:MOV R2,#0FAH L1:MOV R3,#0FAH L2:DJNZ R3,L2 DJNZ R2,L1 RET 改错题: 把在R4和R5中的两字节数取补(高位在R4中): CLR C MOV A,R5 CPL A INC A MOV R5,A MOV A,R4 CPL A ADDC A,#00H MOV R4,A SJMP $ 问答题 单片机MCS—51系列产品80C51/87C51/80C31三种单片机的区别是什么?如何选用? 试说明MCS—51单片机内部程序存储器中6个特殊功能单元(5个中断源和1个复位)的作用及在程序编制中如何使用? 内部RAM低128单元划为哪3个主要部?说明各部的使用特点。 堆栈有哪些功能?堆栈指示器(SP)的作用是什么?在程序设计时,为什么还要对SP重新赋值?如果CPU在操作中要使用两组工作寄存器,你认为SP的初值应为多大? 开机复位后,CPU使用的是哪组工作寄存器?它们的地址是什么?CPU如何确定和改变当前工作寄存器组? MCS—51单片机运行出错或程序进入死循环,如何摆脱困境? 在MCS—51单片机系统中,外接程序存储器和数据存储器共用16位地址线和8位数据线,为什么不会发生冲突? 一个定时器的定时时间有限,如何实现两个定时器的串行定时,以满足较长定时时间的要求? 使用一个定时器,如何通过软硬件结合的方法,实现较长时间的定时? 10.MCS—51单片机属哪一种I/O编址方式?有哪些特点可以证明。 11.多片D/A转换器为什么必须采用双缓冲接口方式? 12.说明利用MCS-51单片机的串行口进行多机通信的原理,应特别指出第9数据位在串行通信中的作用及在多机通信时必须采用主从式的原因。 单片机的fosc=12MHZ,要求用T0定时150μs,别计算采用定时方式0、定时方式1和定时方式2时的定时初值。 单片机的fosc=6MHZ,问定时器处于不同工作方式时,最大定时范围别是多少? 编程题: 程序实现c=a2+b2。设a、b均小于10,a存在31H单元,b存在32H单元,把c存入33H单元。 软件延时方法实现变调振荡报警:用P1.0端口输出1KHz和2KHz的变调音频,每隔1s交替变换一次。 使用定时器中断方法设计一个秒闪电路,让LED显示器每秒钟有400ms点亮。假定晶振频率为6MHz,画接口图并编写程序。 以80C51串行口按工作方式1进行串行数据通信。假定波特率为1200bps,以中断方式传送数据,请编写全双工通信程序。 以80C51串行口按工作方式3进行串行数据通信。假定波特率为1200bps,以中断方式传送数据,请编写全双工通信程序。 甲乙两台单片机利用串行口方式1通讯,并用RS—232C电平传送,时钟为6MHz,波特率为1.2K,编制两机各自的程序,实现把甲机内部RAM50H~5FH的内容传送到乙机的相应片内RAM单元。 设计一个80C51单片机的双机通信系统,并编写程序将甲机片外RAM3400H~3500H的数据块通过串行口传送到乙机的片外RAM4400H~4500H单元中去。 求8个数的平均值,这8个数以表格形式存放在从table开始的单元中。 在外部RAM首地址为table的数据表中,有10个字节的数据。编程将每个字节的最高位无条件地置“1”。 单片机用内部定时方法产生频率为100KHz等宽矩形波,假定单片机的晶振频率为12MHz,请编写程序。 假定单片机晶振频率为6MHz,要求每隔100ms,从外部RAM以data开始的数据区传送一个数据到P1口输出,共传送100个数据。要求以两个定时器串行定时方法实现。 用定时器T1定时,使P1.2端电平每隔1min变反一次,晶振为12MHz。 设定时器/计数器T0为定时工作方式,并工作在方式1,通过P1.0引脚输出一周期为2ms的方波,已知晶振频率为6MHZ,试编制程序。 若80C51单片机的fosc=6MHZ,请利用定时器T0定时中断的方法,使P1.0输出如图所示的矩形脉冲。 80C51单片机P1端口上,经驱动器接有8只发光二极管,若晶振频率为6MHZ,试编写程序,使这8只发光管每隔2s由P1.0~P1.7输出高电平循环发光。 从片外RAM2000H地址单元开始,连续存有200D个补码数。编写程序,将各数取出处理,若为负数则求补,若为正数则不予处理,结果存入原数据单元。 80C51单片机接口DAC0832D/A变换器,试设计电路并编制程序,使输出如图所示的波形。 PC/XT的D/A接口使用DAC0832。其有关信号接线如图所示,其输出电压V0和输入数字量DI7-DI0之间呈线性且如表所示。现要求V0从零开始按图示波形周期变化(周期可自定)。试用汇编语言编写其控制部程序。 七、画接口电路图: 1.以两片Intel2716给80C51单片机扩展一个4KB的外部程序存储器,要求地址空间与80C51的内部ROM相衔接,请画出接口图。 2.微型机PC的RS-232接口与MCS-51单片机程序通信接口的电路原理图。 3.MCS-51单片机系统中外部扩展程序存储器和数据存储器共用16位地址线和8位数据线,如何处理不会发生冲突?试画出MCS-51单片机外扩展ROM(2732EPROM)和RAM(6116)的系统接线原理图,并说明其工作过程。 一片6116芯片(2K×8)和一片27128芯片(16K×8)构成存储器系统,要求存储器的起始地址为0000H,且两存储器芯片的地址号连续,试画出连线原理图,并说明每一芯片的地址范围。 用74LS138设计一个译码电路,利用80C51单片机的P0口和P2口译出地址为2000H ~ 3FFFH的片选信号CS 。 用一片74LS138译出两片存储器的片选信号,地址空间别为1000H~1FFFH,3000H~3FFFH。试画出译码器的接线图。 80C31单片机要扩展4K字节外部RAM,要求地址范围为1000H~1FFFH,请画出完整的电路图。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

凉开水白菜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值