单片机

更新时间:2023-03-09 18:57:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

一、填空题

1、把长度为20的有符号整形数组array定义在片内RAM数据区域(不限制在低128字节区域),其定义为:int idata array[20]; 2、单片机对外访问时,(p0)口分时提供低8位地址和数据信号 3、89c51点偏激外部中断请求信号有电平方式和脉冲方式,在电平方式下,当采集到INT0、INT1的有效信号为(低电平)时,激活外部中断。 4、89c52单片机定时器2的8位低字节特殊功能寄存器TL2,他的地址是0xcc,定义该特殊功能寄存器TL2的方法是:sfr TL2=0xcc;

5、定时器/计时器T0、T1以模式2工作时的原理结构可以分为(信号源,包括内部时钟信号和外部计时脉冲信号)、(运行控制,包括内部控制和外部信号控制来年两个部分)、(计数器,包括8位计数器TLx和8位初值寄存器THx两个部分)、(计数溢出标志)4个部分。 6、定时器/计时器T0、T1的控制寄存器TCOM的格式如下,TR0是T0de运行控制位,为(1)时可以使T0运行。 TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 7、用(助记符)、(符号)、(数字)等表示指令的程序语言,叫汇编语言。

8、定时器/计时器T0、T1以模式2工作时的最大计数值为(256) 9、某8位模数转换器与单片机并行链接,使用总线方式进行访问,已知转换器的地址为0x7ff0,欲通过指针变量pdac访问转换器,则指针变量pdac的定义方法为:unsigned char xdata *pdac=0x7ff0;或者 unsigned char xdata *pdac; pdac=0x7ff0;

10、c51与汇编语言混合编程的两种方法是(编程中只有C语言文件,个别C语言函数中嵌入汇编语言)和(程序中包含C语言和汇编语言两种文件);

11、使用定时器/计时器T0以中断方式计数,需要对中断控制寄存器IE中的(EA、ET0)位置1;

12、MCS-51单片机的存储空间,从使用者的角度看可分为(片内RAM)(片外RAM)(ROM)三种 13、根据信息的传送方向,串行通信通常有三种,(单工)、半双工和(双工);

14、89c52单片机中,在IP=0x00时,优先级最低的中断是(定时器T2) 15、指出下列指令是何种寻址方式:(立即数寻址) MOV A,#2CH;

二、选择题

1、PSW中的半进位标志指的是(B) A、CY B、AC C、OV D、P

2、串行异步通信的一帧数据是由一下几个部分组成:1.起始位2.数据位3.奇偶校验位4.停止位,选择下列正确说法:(A)

A、1.2.3.4都是 B、1.2.3.4都不是 C、1.2.4不是 D、1.4不是 3、单片机串行口的工作方式(B)是10位异步方式 A、0 B、1 C、2 D、3 4、c51中整形数据的存放方式是:(A)

A、高字节在前,低字节在后 B、低字节在前,高字节在后 C、低字节在低地址,高字节在高地址

5、在下列寄存器中,与定时/计时控制无关的是:(C)

A、TCON(定时控制寄存器)B、TMOD(工作方式控制寄存器) C、SCON(串行控制寄存器)D、IE(中断允许控制寄存器)

6、工中断源发出的中断请求信号,都会标记在MCS-51系统中 (D)

A、TMOD B、TCON/SCON C、IE D、IP

7、定时器/计数器T0、T1以模式0工作时,是1个(C)位的定时器或计数器

A、8 B、12 C、13 D、16 8、下一个指令哪一个是错误的(A)

A、MOV @ R0,R3 B、MOV 34H,@R0 C、ADD A,34H D、MOV B,34H

9、中断查询确认后,在下列各种89c51单片机运行情况中,能力及进行响应的是(D)

A、当前正在进行高优先级中断处理 B、当前正在执行RETI指令 C、当前指令是DIV指令,且正处于指令的机器周期 D、当前指令是MOV A,R3

10、MCS-51增强型单片机的3个定时器/计数器的位数是下面的(B) A、T0是8位的,T1和T2是16位的 B、T0、T1和T2都是16位的

C、T0是8位的,T1是16位的,T2是24位 的 D、T0和T1是16位的,T2是24为的

11、下列说法正确的是(C D )

A、同一级别的中断请求按时间的先后顺序响应

B、同一时间同一级别的多中断请求,将形成阻塞,系统无响应 C、低优先级中断请求不能中断高优先级中断,但是高优先级中断请求能中断低优先级请求 D、同级中断不能嵌套 12、下列说法正确的是(D)

A、各中断源发出的中断请求信号,都会标记在MCS-51系统的IE寄存器中 B、各中断源发出的中断请求信号,都会标记在MCS-51系统的TMOD寄存器中

C、各中断源发出的中断请求信号,都会标记在MCS-51系统的IP寄存器中

D、各中断源发出的中断请求信号,都会标记在MCS-51系统的TCON和SCON寄存器中

13、使用Printf、putchar、puts函数输出数据,必须先对串行口初始化,初始化内容之一是写SCON设置串行口工作方式。设置串行通信传输格式为8个数据位、1个停止位、不校验,则设置SCON的数值为下面的(D)

A、0xe0 B、0xb0 C、0xa0 D、0x50 14、执行返回指令时,返回的断点是(C)

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

C、调用指令下一条指令的首地址 D、返回指令的末地址 三、判断题

1、定时器/计数器T0的计数输入引脚为P3.2 (错误) 2、在子程序中,要明确指出“入口参数”和“出口参数”,入口参数就是在调用前面需要给子程序准备的数据,出口参数就是子程序的返回值 (对)

3、TTL电平使用OV表示数字0 (正确)

4、编写外中断0服务函数int_ex0(),则函数的说明部分应该是:void int_ex0() Interrupt 0 (正确)

5、在片外数据区0xdfff地址处定义一无符号字符型变量da_port,便于通过da_port输出实现D/A转换。其定义为:unsigned char xdata da_port _at_ 0xdfff; (正确)

6、定时器/计数器T2外部触发信号的作用仅是捕获计数值 (错误)

7、程序计数器PC是可以寻址的 (错误)

8、MCS-51单片机内部有一个16位的CPU (错误) 9、存储空闲位不是串行异步通信的特征之一 (错误)

10、通常CPU和外设之间的信息传送方式有程序控制方式、中断方式和DMA三种方式 (正确) 四、简答题

1、中断服务程序与普通子程序有什么根本的区别?

中断服务程序是随即发生的,结束后要返回断点。普通子程序是安排好的,没有断点

2、MCS-51单片机内部RAM包含哪些可以位寻址的单元。位地址7CH和子字节地址7CH如何区别?位地址7CH具体在片内RAM的什么位置?

MCS-51单片机内部RAM包含位寻址地区和SFR中字节地址能够被8整除的SFR。位地址和字节地址的区别在于使用不同的寻址方式:位地址使用位寻址,字节地址使用直接寻址或间接寻址。位地址7CH在片内RAM中字节地址为2FH的第四位。

3、为什么定时器T1用作串行口波特率发生器时,常选工作模式2?若已知系统时钟频率和通信用波特率,如何计算其初值?

定时器的模式2是8位自动重装初值的方式,可以产生非常精确的定时时间,所以被用作串行口波特率发生器。

定时器初值计算公式:X=256-fosc*(SMOD+1)/(384*波特率)

4、简述按键扫描的过程?

(1)判断键盘中是否有键按下;(2)进行行扫描,判断是哪一个键按下,若有键按下,则调用延时子程序去抖动;(3)读取按键的位置码;(4)将按键的位置码转换为键值 5、常见的开关器件有哪些?

继电器、光电耦合器、光电耦合驱动晶闸管等 五、程序阅读

1、写出单片机C语言程序中语句“TMOD=0x95”的功能

设置T1以模式1定时、外部门控制运行、设置T0以模式1计数 2、阅读下面C语言函数,对各句做注释,并指出函数的功能: void move_idata() {

Unsigned char i;

Unsigned char idata *pi;

Unsigned char xdata *px; Pi=0x80,px=0; For(i=0;i<30;i++) *(pi+i)=*(px+i); }

函数功能:吧片外数据寄存器地址从0x0000开始的30个字节数据,传送到片内RAM地址从0x80开始的区域 六、编程 1、使用89c52串行口以工作方式3进行串行通信,假定波特率为4800b/s,单片机晶振频率为11.0592MHz。请编写全双工通信程序,以中断方式接收和发送数据,并对数据进行奇偶校验。设发送的50个数据在片外数据区,地址从0x0010开始的区域,接收的数据保存0x80开始的的区域,接收到‘S’后表示结束 #include

Unsigned char xdata *SendBuffer=0x0010; Unsigned char xdata *RecvBuffer=0x0080; Unsigned char i,j;

Bit SendOver, RecvOver; Void main() {

TMOD=0x20; TH1=0xfa; TL1=0xfa; TR1=1;

SCON=0xc0; ES=1; EA=1;

ACC=SendBuffer[i++]; TB8=p;

SBUF=ACC; While(1); }

Void Serial() interrupt 4 {

If(TI ) {

TI=0;

ACC=SendBuffer[i++]; TB8=p;

本文来源:https://www.bwwdw.com/article/om8a.html

Top