
1、若采用6MHz的晶体振荡器,则MCS-51单片机的振荡周期为____2/12us_____,机器周期为_______2us________。
2、MCS-51单片机共有 5 个中断源,由 IE 寄存器设定中断的开放和禁止;
每个中断源有 两 个优先级,由 IP 寄存器设定。
3、单片机的内部RAM区中,可以位寻址的地址范围是_________20H~2FH_________,特殊功能寄存器中,可位寻址的地址是_______80H~FFH__________。
4、MSC-51单片机引脚信号中,信号名称带上划线的表示 可外接电路 或 低电平 时该信号有效;
5、 函数 是C语言的基本单位。
6、若由程序设定RS1、RS0=0、1,则工作寄存器R0~R7的直接地址为____08H~0FH_____。
7、串行口通信方式2接收到的第9位数据送 SCON 寄存器的 RB8 位中保存。
8、MCS-51内部提供 2 个可编程的 16 位定时/计数器,定时器有 4 种工作方式。
9、在C51中,变量的数据类型说明为bit,则其取值范围是 0或1 。
10、串行口方式3发送的第9位数据要事先写入 SCON 寄存器的 RB8 位。
11、MCS—51单片机外部中断请求信号有电平方式和脉冲方式,在电平方式下,当采集到
P3.2或P3.3引脚 的有效信号为低电平时,激活外部中断。
12、 CPU又称 MPU ,一般由 运算器 和 控制器 两部分组成。
13、使用DPTR作间址指针进行寄存器间接寻址时,其寻址能力为 所有存储器 。
14、整型变量的占用的存储空间是 两个字节 ;字符型变量占用的存储空间是 一个字节
15、ALU指的是 算术/逻辑单元 。
16、MCS-51单片机的中断源分别是 外部中断0 、 定时/计数器0 、 外部中断1 、 定时/计数器1 、
串行口接收/发送中断 。
17、KeiL C51软件中,工程文件的扩展名是____ .Uv2 ______,编译连接后生成可烧写的文件扩展名是____ _.hex______
二、选择题
1、C语言中最简单的数据类型包括( B/D )。
A、整型、实型、逻辑型 B、整型、实型、字符型
C、整型、字符型、逻辑型 D、整型、实型、逻辑型、字符型
2、下列描述中正确的是( D )。
A、程序就是软件 B、软件开发不受计算机系统的
C、软件既是逻辑实体,又是物理实体 D、软件是程序、数据与相关文档的集合
3、下列计算机语言中,CPU能直接识别的是( D )。
A、 自然语言 B、 高级语言 C、 汇编语言 D、机器语言
4、MCS-5l单片机的堆栈区是设置在( C )中。
A、片内ROM区 B、片外ROM区 C、片内RAM区 D、片外RAM区
5、以下叙述中正确的是( C )。
A、用C语言实现的算法必须要有输入和输出操作
B、用C语言实现的算法可以没有输出但必须要有输入
C、用C程序实现的算法可以没有输入但必须要有输出
D、用C程序实现的算法可以既没有输入也没有输出
6、定时器/计数器工作方式1是( D )。
A、8位计数器结构 B、2个8位计数器结构
C、13位计数结构 D、16位计数结构
8、C语言提供的合法的数据类型关键字是( D )。
A、Double B、short C、integer D、Char
9、片内RAM的20H~2FH为位寻址区,所包含的位地址是( B )。
A、00H~20H B、00H~7FH C、20H~2FH D、00H~FFH
10、以下能正确定义一维数组的选项是( B )。
A、int a[2,5]={0,1,2,3,4,5}; B、char a[ ]={0,1,2,3,4,5};
C、char a={'A','B','C'}; D、int a[5]="0123";
11、MCS-51单片机的复位信号是( A )有效。
A、高电平 B、低电平 C、脉冲 D、下降沿
12、8051的单片机的堆栈指针( D )
A、 只能位于内部RAM低128字节范围内
B、 可位于 内部RAM低256字节范围内
C、 可位于 内部ERRAM内。
D、可位于内部RAM或外部RAM内
13、在串行口工作于异步通信方式时,其接收由( C )来启动。
A、REN B、RI C、REN和RI D、TR
14、存储16×16点阵的一个汉字信息,需要的字节数为( A )
A、 32 B、 C、 128 D、 256
15、设MCS-51单片机晶振频率为12MHz,定时器作计数器使用时,其最高的输入计数频率应为( B )
A、2MHz B、1MHz C、500kHz D、250kHz
16、利用下列( D )关键字可以改变工作寄存器组
A、interrupt B、sfr
C、while D、using
17、C51中一般指针变量占用( c )字节存储。
A、一个 B、两个 C、三个 D、四个
18、使用宏来访问绝对地址时,一般需包含的库文件是( b )
A、reg51.h B、absacc.h C、intrins.h D、startup.h
19、单片机的定时器/计数器工作方式1是( D )。
A、8位计数器结构 B、2个8位计数器结构
C、13位计数结构 D、16位计数结构
20、串行口每一次传送( C )字符。
A、1个 B、1串 C、1帧 D、1波特
21、数据的存储结构是指( D )。
A、存储在外存中的数据 B、数据所占的存储空间量
C、数据在计算机中的顺序存储方式 D、数据的逻辑结构在计算机中的表示
22、下列关于栈的描述中错误的是( C )。
A、栈是先进后出的线性表 B、栈只能顺序存储
C、栈具有记忆作用 D、对栈的插入和删除操作中,不需要改变栈底指针
23、在寄存器间接寻址方式中,间址寄存器中存放的数据是( B )。
A、参与操作的数据 B、操作数的地址值
C、程序的转换地址 D、指令的操作码
24、MCS-51单片机的复位信号是( A )有效。
A、高电平 B、低电平 C、脉冲 D、下降沿
25、为了使模块尽可能,要求( A )。
A、模块的内聚程度要尽量高,且各模块间的耦合程度要尽量强
B、模块的内聚程度要尽量高,且各模块间的耦合程度要尽量弱
C、模块的内聚程度要尽量低,且各模块间的耦合程度要尽量弱
D、模块的内聚程度要尽量低,且各模块间的耦合程度要尽量强
26、若MCS-51单片机使用晶振频率为6MHz时,其复位持续时间应该超过( 4 )。
A、2μs B、4μs C、8μs D、1ms
27、以下选项中可作为C语言合法常量的是( A )
A、-80 B、-080 C、-8e1.0 D、-80.0e
28、能够用紫外光擦除ROM中程序的只读存储器称为( C )。
A、掩膜ROM B、PROM C、EPROM D、EEPROM
29、以下不能定义为用户标识符是( D )。
A、Main B、_0 C、_int D、sizeof
30、下选项中,不能作为合法常量的是( B )。
A、1.234e04 B、1.234e0.4 C、1.234e+4 D、1.234e0
31、存储16×16点阵的一个汉字信息,需要的字节数为( D )
A、 32 B、 C、 128 D、 256
32、以下选项中合法的字符常量是( D )
A、 "B" B、 ’\010’ C、 68 D、 D
33、设MCS-51单片机晶振频率为12MHz,定时器作计数器使用时,其最高的输入计数频率应为( B )
A、2MHz B、1MHz C、500kHz D、250kHz
34、下列数据字定义的数表中,( D )是错误的。
A、DW “AA” B、DW “A” C、DW “OABC” D、DW OABCH
三、判断题
( √╳ )1、在对某一函数进行多次调用时,系统会对相应的自动变量重新分配存储单元。
( √ )2、自动变量属于局部变量。
( √ )3、Continue 和break都可用来实现循环体的中止。
( ╳ )4、在MCS-51系统中,一个机器周期等于1.5μs。
( √ )5、若一个函数的返回类型为void,则表示其没有返回值。
( √ )6、所有定义在主函数之前的函数无需进行声明。
( √ )7、定时器与计数器的工作原理均是对输入脉冲进行计数。
( √ )8、END表示指令执行到此结束。
( ╳ )9、MCS-51的相对转移指令最大负跳距是127B。
( ╳ )10、MCS-51的程序存储器只是用来存放程序的。
( √ )11、TMOD中的GATE=1时,表示由两个信号控制定时器的的启停。
( ╳ )12、MCS-51的特殊功能寄存器分布在60H~80H地址范围内。
( √ )13、片内RAM与外部设备统一编址时,需要专门的输入/输出指令。
( √ )14.寄存器间接寻址可以访问数据存储器,也可以访问程序存储器。
( √ )15.在C51中,将数据的存储类型说明为data,则该数据映射的存储空间为片内位寻址空间。
( ╳ )16.MCS—51属于16位的单片机。
( ╳ )17.基址加变址寻址只能访问程序存储器。
( √ )18.位地址和字节地址在形式上没有区别。
( √ )19.如果x=0xEA,则执行x<<2后,x的值为0xA8。
( √ )20.在MCS—51的指令系统中,地址分为字节地址和位地址。
( ╳ )21.汇编语言指令就是指能被CPU直接执行的指令。
( √ )22.在MCS—51的指令系统中,伪指令、指令都是在程序执行的时候起作用。
( ╳ )23、(R7)表示工作寄存器R7中的内容。
( √ )24、若一个函数的返回类型为void,则表示其没有返回值。
( √ )25、定时器与计数器的工作原理均是对输入脉冲进行计数。
( √ )26、SFR中凡是能被8整除的地址,都具有位寻址能力。
( √ )27、不能用“sfr16” 直接访问定时器/计数器0和1。
( ╳ )28、MCS-51单片机的程序存储器只能用来存放程序的。
( ╳ )29、串口中断标志由硬件清0。
( √ )30、特殊功能寄存器的名字,在C51程序中,全部大写。
( √ )31、“sfr”后面的地址可以用带有运算的表达式来表示。
( √ )32、#include ( ╳ )33、sbit不可以用于定义内部RAM的可位寻址区,只能用在可位寻址的SFR上。 四、简答题 1、在使用8051的定时器/计数器前,应对它进行初始化,其步骤是什么? 解:1、配置定时器/计数器的工作方式。 2、给THi和TLi赋初值。 3、启动定时/计数器。 4、打开定时/计数器中断标志。 5、打开总中断。 2、在有串行通信时,定时器/计数器1的作用是什么,怎样确定串行口的波特率? 解:如果有串行通信时,定时器/计数器1的作用是控制波特率。 串行口的波特率是有定时器1的溢出率决定的。 3.51系列单片机具有几个中断源,分别是如何定义的?其中哪些中断源可以被定义为高优先级中断,如何定义? 解:51系列单片机具有5个中断源。 外部中断0、1是由EXi外部中断标志位,ITi中断触发方式和EA总中断决定。 定时器/计数器0、1是由TMOD工作方式控制器,THi和TLi初始值控制器,TRi定时/计数器开关,ETi定时/计数器中断标志位和EA总中断决定。 串行口接收/发送中断是由SCON串行口控制寄存器,定时/计数器的波特率设置决定。 51系列单片机的5个中断源都可以被定义为高优先级。只要在IP中断优先级控制寄存器的相应位控制就可以!如:串行口优先级:PS置1,串口通信就是高优先级,反之为低优先级。 4.在C51语言中,定义MSC-51单片机的中断服务函数时需要使用关键字interrupt m 进行定义。参数m可以取那些值?分别表示何种意义? 解:m可以去0~4,相应对应各个中断,0为外部中断0,1为定时器/计数器0,2外部中断1,3为定时器/计数器1,4为串行口接收/发送中断。 5. 什么是指令周期、机器周期和震荡周期? 解:指令周期为单片机执行一条指令的时间,机器周期为单片机执行一条最简单的指令需要的时间,震荡周期为石英震荡器震荡一次的时间。 6.在C51中,存储器类型有几种,它们分别表示的存储器区域是什么? 解:片内数据存储器,片外程序存储器,片外数据存储器。 片内数据存储器由00H~FFH; 片外程序存储器由0000H~FFFFH; 片外数据存储器由0000H~FFFFH; 7.简述动态局部变量和静态局部变量的区别。 解:静态局部变量具有局部作用域,它只被初始化一次,自从第一次被初始化直到程序运行结束都一直存在,且静态局部变量只对定义自己的函数体始终可见。 动态局部变量也只有局部作用域,它是自动对象(auto),它在程序运行期间不是一直存在,而是只在函数执行期间存在,函数的一次调用执行结束后,变量被撤销,其所占用的内存也被收回。 8. MSC—51单片机指令系统中有哪几种寻址方式? 解:1、立即寻址,2、直接寻址,3、寄存器寻址,4、寄存器间接寻址,5、变址寻址,6、相对寻址,7、位寻址。 五、计算题 1已知一单片机系统的外接晶体振荡器的振荡频率为12MHz,请计算该单片机系统的拍节P、状态S、机器周期所对应的时间是多少?指令周期中的单字节双周期指令的执行时间是多少? 解:时钟周期=1/12MHZ=0.0833us; 因为一个机器周期可分为12个时钟周期,一个状态周期可分为2个时钟周期,两个时钟周期可分为2个节拍。 所以1个节拍P的时间=时钟周期=0.0833us,1个状态S的时间=2*时钟周期=0.167us; 1个机器周期=12*时钟周期=1us; 指令周期中得单字节指令的执行时间是一个机器周期=1us;1个双字节指令的执行时间是两个时钟周期=2us; 2、51单片机,当fosc=6MHz和fosc=12MHz时,最大定时各为多少? 解:当fosc=6MHz时;一个机器周期为2us;定时器的最大定时数为65536; 时间T=65536*2us=131072us=0.131072s; 当fosc=12MHz时;一个机器周期为1us;定时器的最大定时数为65536; 时间T=65536*1us=65536us=0.065536s; 3、若fOSC=6MHZ,要求T1定时10ms,选择方式0,装入时间初值后T1计数器自启动。计算时间初值X=?并填入TMOD、TCON和TH1、TL1的值? 解:fOSC=6MHZ,一个机器周期为2us;方式0的最大定时是8192*2=16384us; 10ms=(8192-X)*12/fosc;X=3192; TMOD=0x00;TCON=0x40;IE=0x88; TH1=0x0c;TL1=0x78; 一、填空题 1.相对寻址是以 PC 的当前值为基准,加上指令中给出的相对 偏移量 形成目标地址的方式。 2.ATS51单片机的1个机器周期含有 12 个晶振周期或 6 状态周期。 3.ATS51单片机进行扩展时,用 P0 口作为地址/数据总线,用 P2 口作为地址总线高8位。 4.假定累加器A的内容30H,执行指令:1000H:MOVC A,@A+PC后,把 程序存储器1031H单元的内容送累加器A中 5. 指令格式是由 操作码 和 操作数 部分组成。 6. ATS51单片机的串行口控制寄存器中有2个中断标志位,它们是 TI 和 RI 7. JNC rel指令执行时,当CY位为 0 时程序发生跳转。 8. 单片机位寻址区的单元地址是从20H单元到2FH单元,若某位地址是10H,它所在单元的地址应该是 22H 。 9.外部中断0的中断入口地址为 0003H ,定时/记数器T1的中断入口地址为 001BH 。 10.串行口工作方式2为 9位异步通信,若SMOD=0,f OSC = 6 MHZ ,则其相应波特率为 6×106/ b/s 11.堆栈应遵循 先进后出 规律,堆栈指针的符号为 SP 12、程序计数器PC存放的是 下一条要执行指令的地址 ; 13、指令MOVX A, @DPTR的寻址方式是 寄存器间接寻址 : 14、MCS-51访问ROM、片内RAM、片外RAM的指令助记符分别为 MOVC 、 MOV和 MOVX 。 15、机器字长为8位,则[—10]原 = 8AH ,[-10]反 = F5H ,[-10]补 = F6H 。 16、已经累加器A = 97H,则执行指令ADD A, #7DH后,A = 14H ,C = 1 ,OV = 0 ,AC = 1 。 二、单项选择题 1.ATS51单片机的( d )口的引脚,还具有外中断、串行通信等第二功能。 a)P0 b)P1 c)P2 d)P3 2.单片机应用程序一般存放在( b ) a)RAM b)ROM c)寄存器 d)CPU 3.已知某数的BCD码为0111010101000010 则其表示的十进制数值为( b ) a) 7542H b) 7542 c) 75.42H d) 75.42 4.下列指令中不影响标志位CY的指令有( d )。 a)ADD A,20H b)CLR c)RRC A d)INC A 5.CPU主要的组成部部分为( a ) a)运算器、控制器 b)加法器、寄存器 c)运算器、寄存器 d)运算器、指令译码器 6.ATS51 的CPU是( c )位的单片机 a) 16 b)4 c)8 d)准16 7.当需要从ATS51单片机程序存储器取数据时,采用的指令为( b )。 a)MOV A, @R1 b)MOVC A, @A + DPTR c)MOVX A, @ R0 d)MOVX A, @ DPTR 8.ATS51单片机中既可位寻址又可字节寻址的单元是( a ) a)20H b)30H c)00H d)70H 9.下列哪条指令是正确的( d ) a) PUSH R2 b) ADD R0, A c) MOVX A @DPTR d) MOV @R0, A 11.要使累加器A的高4位置为0000,低4位不变,以下指令正确的是 B 。 (A)ANL A, #0F0H (B)ANL A, #0FH (C)ORL A, #0F0H (D)ORL A, #0FH 12. 利用串行口工作方式1进行异步串行通信,当其波特率为4800bps,每秒最多能传送 A 个字符。 (A)480 (B)960 (C)4800 (D)9600 13. C51中,要编写一个中断函数,则必须在函数名后加 B 修饰符。 (A)void (B)interrupt (C)using (D)unsigned 14. 51系列单片机系统中需扩展32KByte的片外RAM,则需要 C 片62(8K×8bit)。 (A)1 (B)2 (C)4 (D)8 15. 若单片机当前正在执行高优先级的中断服务,则以下能响应的中断是 D 。 (A)高优先级中断 (B)同优先级中断 (C)低优先级中断 (D)以上都不能响应 16. 键盘的软件消除键抖动是通过 C 来实现的。 (A)加滤波器 (B)中断 (C)延时 (D)加RS触发器 三、写出实现下列各要求的指令或程序段 1、将80H单元中的内容与数据4FH相比较,相等返回,不相等将80H单元置FFH返回。 MOV A,80H CJNE A,# 4FH,BD SJMP L1 BD:MOV 80H,#0FFH L1: RET 2、外部RAM单元2000H的内容传送到内部RAM单元70H; MOV DPTR,#2000H MOVX A,@DPTR MOV 70H, A 3、将32H单元中内容的第7位取反后送给50H。 MOV A,32H CPL ACC.7 MOV C,ACC.7 MOV 50H,C 4、若(50H)=40H,试写出执行以下程序段后累加器A、寄存器R0及内部RAM的40H、41H、42H单元中的内容各为多少?(5分) MOV A,50H ;(A)=40H MOV R0,A ;(R0)=40H MOV A,#00H ;(A)=0 MOV @R0,A ;(40H)=0 MOV A, #3BH ;(A)=3BH MOV 41H,A ;(41H)=3BH MOV 42H,41H ;(42H)=3BH (A)= 3BH ; (R0)= 40H; (40H)= 0; (41H)= 3BH;(42H)= 3BH 5、将外部数据存储器3000H开始100个存储单元的内容存入3070开始的存储单 元(9分) MOV DPTR #3000H MOV P2,#30H MOV R1,#70H MOV R5,#100 L1: MOVX A, @DPTR MOVX@R1,A INC R1 INC DPTR DJNZ R5, L1 RET 四、读程序填空 1. CLR C MOV A, 4DH SUBB A,, 4EH MOV 30H, A MOV A, 7FH SUBB A, 2BH MOV 31H, A SJMP $ (1)该程序的功能是: 两个16位数的减法:(7F4DH)-(2B4EH),结果存入内部RAM的30H和31H单元,31H单元存差的高8位,30H单元存差的低8位 (2)若(4DH)=06H,(4EH)=05H,(7FH)=0AH,(2BH)=01H 则执行上述程序后(30H)= 01 H。(31H)= 09 H。 2. START: MOV R0 , #40H MOV R7, #04H MOV A, @R0 LOOP: INC R0 MOV 50H , @R0 CJNE A, 50H , NEXT NEXT: JNC BIE1 MOV A, 50H BIE1: DJNZ R7, LOOP MOV 30H, A RET (1) 该程序的功能是: 求出40H—44H中最大的无符号数,并将最大数存入30H中 (2) 设(40H)=12H, (41H)=22H , (42H)= 6EH, (43H)=5AH , (44H)= 8AH, 填写程序执行后的结果,(30H)= 8A H。 3.已知(30H)=49H,(31H)=2BH,(32H)=0A3H,执行以下程序: MOV R7,# 4 RR0: MOV R6,# 3 CLR C MOV R0,# 30H RR1: MOV A,@R0 RRC A MOV @R0,A INC R0 DJNZ R6,RR1 DJNZ R7,RR0 RET 从该程序可看出这段程序的功能是: 将内RAM中30H~32H的内容 右移4位 执行后结果:(30H)= 04H ,(31H)= 92H ,(32H)= 0BAH 。 (3分) 4、已知(A)=58H,(30H)=7FH,(P1)=EAH,执行下列程序: MOV SP,#40H PUSH A PUSH 30H MOV A,P1 MOV 30H,A POP 30H POP A 执行后结果:(SP)= 40H ,(A)= 58H ,(30H)= 7FH ,(41H)= 58H 。 五、根据题意,按要求答题。 1. AT98S51单片机P1口上接8只发光二极管(高电平亮,低电平灭),若晶振频率是12MHz,用定时/计数器T0以工作方式1工作,使8只发光二极管每1S单循环点亮。 (1)计算定时初值,写出过程 (2)根据相关注释,填写程序 (3) 答:(1)定时初值: (216-X)×1μS = 50mS X=216-50000 =15536 (2) MOV TMOD,#01H ;设T0工作方式 MOV DPTR,#15536 ;置定时初值50mS MOV TH0,DPH MOV TL0,DPL MOV A,#01H ;置A初值 SETB TR0 ;允许定时 LOOP:MOV R7,#20 ;设定时次数 MOV P1,A ;从P1口输出 LOOP1: JNB TF0,$ ;判断定时50mS到没 CLR TF0 ;定时时间到,TF0清0 MOV TH0,DPH ;重新置定时初值50mS MOV TL0,DPL DJNZ R7,LOOP1 ;判断定时次数到没 RL A ;输出左移 SJMP LOOP ;继续循环输出 END 2、根据给定存储类型和数据类型,声明下列变量: (1)在片内RAM低128字节定义一个有符号整型变量val,初值为100; (signed) int data val = 100; (2)在ROM定义一个3元素的无符号字节数组num,数组内容分别为:12H,34H,56; unsigned char code num[3] = {0x12, 0x34, 56}; (3)在片外RAM定义一个指向无符号字节类型的指针变量p; unsigned char xdata *p; 6、简述矩阵式8行2列键盘的工作过程,其中P1口连接8根行线,P3.0和P3.1连接2根列线。 判断是否有键按下:先给列线P3.0和P3.1送低电平,然后读行线P1的值,判断P1是否为0xff;若P1为0xff则表示没有键按下,则返回重新判断是否有键按下;若P1不为0xff则表示有键按下,则延时10ms去抖动,再重新读行线P1口,再次判断是否有键按下。 若确实有键按下,则判断哪一个键按下:先给第一根列线P3.0送低电平,而P3.1送高电平,然后读行线P1,判断P1是否为0xff;若是则表示按下的键在这第一列;否则给第二列P3.1送低电平,而P3.0送高电平,然后读行线P1,判断P1是否为0xff,若是则表示按下的键在这第二列;找到按键所在列后,再根据读到的行线值中0的位置从而判断按键所在行线。 确定按键后,执行按键所对应的服务程序;然后等待键释放;按键释放通过给所有的列线P3.0和P3.1送低电平,然后读行线P1的值来进行判断;按键释放后再次延时去抖动,然后返回重新判断是否有键按下。 7、简述51单片机串行双机通信的过程,写明发送和接收时软硬件分别执行的操作。 先 数据发送时,在TI=0时,CPU将待发送数据送入SBUF,启动发送;数据由TXD引脚按位送出,发送时钟由T1控制,最先送出起始位(0),然后依次是8位数据位(低位在前),最后是停止位(1);一帧数据发送完毕后,硬件自动将TI置1,向CPU请求中断;CPU接收到请求信号后,需将TI清0,然后才能启动下一次发送。 数据接收时,允许接收位REN必须置1,接收器开始工作;当接收到起始位(0),启动接收;在波特率的控制下,把接收到的数据依次移入移位寄存器;当接收完一帧数据,将移位寄存器中的数据送入SBUF,同时硬件自动将RI置1,向CPU请求中断。CPU接收到请求信号后,需将RI清0,然后才能正常接收下一帧数据。
