嵌入式系统(单片机)助理工程师认证考试理论试题A(答案)
- 格式:doc
- 大小:493.00 KB
- 文档页数:8
中国电子学会嵌入式(单片机)助理工程师专业技术资格认证考试试题 (11-01)(考试时间:150分钟)一、填空题(将正确答案填入空格中,每空1分,共35分)1、MCS51单片机的最大程序寻址空间为 64K KB ,空间的地址范围为0000H-FFFFH ,单片机复位后程序入口地址为 0000H 。
外部中断0的入口地址为 0003H ,T1定时/计数器的中断入口地址为 001BH 。
2、PSW 中RS1=1,RS0=0,R3对应的字节地址为 13H 。
3、7AH 对应的十进制数为 122 D ,对应的二进制数为01111010 B 。
4、MCS51单片机的仅使用内部ROM 时,EA 引脚应接 高 电平。
5、当MCS51单片机RST 引脚出现 2个 机器周期以上高电平时单片机可有效复位,复位后SP= 07H ,PC= 0000H ,P1= FFH 。
6、MCS-51单片机的低功耗方式有 待机 、 掉电 。
7、MCS-51单片机的常用复位方式有 手动复位 、 上电复位 。
8、80C51单片机的串行口控制寄存器器是 SCON ;串行口工作在方式2时SM0、SM1设置为 10 ,当设置允许串行口接收串行输入数据时必须将 REN 位设置为1。
9、把数据存入堆栈称为 入栈 ,从堆栈取出数据称为 出栈 ,从堆栈取出数据遵循 先进后出、后进先出 的原则。
10、LED 数码管按结构分为 共阴 和 共阳 两种形式。
11、键盘按键的检测过程中消除抖动常用的方法有 RS 触发器滤波 、 RC 滤波 、 软件延时 。
12、DAC0832的参考电压为+5V,则分辩率为 5/256 V 。
13、矩阵键盘中为了识别键盘上的闭合键,通常采用两种方法 逐行扫描法和 线反转法 。
14、C51中定义的位变量的关键字是 bit 位变量对应的地址空间范围是0x20-0x2f 。
15、unsigned char 定义的变量取值范围 0-255 ,unsigned int定义的变量取值范围 0-65535 。
二、选择题(共20个题,每小题 1分,共20分)1、当单片机外接数据存储器时P2口作为。
(C )A.低8位地址线B.准双向I/O端口C.高8位地址线D.8位数据线2、单片机晶振频率为12MHZ时,单片机定时/计数器可以计数的最大脉冲频率为。
( C )A.2MHZB.1MHZC.500KHZD.250KHZ3、在单片机片外扩展一片2764需要根地址线。
( C )A.8根B.11根C.13根D.15根4、下列变量定义不正确的是。
( C )A.unsigned int a ;B.unsigned char data i;C.unsigned char code distab[10];D.int s=100;5、单片机的堆栈空间设置在。
( C )A.片内ROMB.片外ROMC.片内RAMD.片外RAM6、只使用定时器T0工作在计数方式1时,启动不受外部引脚控制TMOD应设置为。
( B )A.50HB.05HC.11HD.15H7、MCS—51的串行数据缓冲器SBUF用于。
( B )A.存放运算中间结果 B.存放待发送或已接收到的数据C.暂存数据和地址 D.存放待调试的程序8、8051单片机中,唯一一个用户可使用的16位寄存器是。
( D )A.PSW B.ACC C. SP D.DPTR9、单片机中PUSH和POP指令常用来。
( C )A.保护断点 B.保护现场C.保护现场,恢复现场 D.保护断点,恢复断点10、下列指令中不影响PC内容的是。
( A )A.MOVC A,@A+PC B.RETIC.RET D.ACALL11、可以实现P1口输出各位内容循环左移的语句是。
( A )A.P1=P1<<1|P1>>7; B.P1=P1>>7;C.P1=P1<<1; D.P1=P1<<7|p1>>1;12、单片机的P0、P1口作输入用途之前必须。
( A )A.在相应端口先置1 B.在相应端口先置0C.外接高电平 D.外接上拉电阻13、存储16×16点阵的一个汉字信息,需要的字节数为。
( A )A.32B.64C.128D.25614、I2C总线的起始条件是:( D )A.当SCL为低电平时,SDA发生由高到低的跳变B.当SCL为低电平时,SDA发生由低到高的跳变C.当SCL为高电平时,SDA发生由低到高的跳变D.当SCL为高电平时,SDA发生由高到低的跳变15、利用下列关键字可以改变工作寄存器组( D )A.interrupt B.sfrC.while ing16、使用宏来访问绝对地址时,一般需包含的库文件是( B )A.reg51.hB.absacc.hC. intrins.hD.startup.h17、在串行口工作于移位寄存器方式时,其接收由来启动。
( A )A. RENB. RIC. REN和RID. TR18、C51不包含的存储器模式是( A )A. xdata B. SmallC. compactD. large19、DS18B20是 ( C )A.I2 C总线串行接口芯片 B.SPI串行接口芯片C. 单总线串行接口芯片D.UART串行接口芯片20、具有模数转换功能的芯片是( A )A.ADC0809B.DAC0832C.MAX813D.PCF8563三、判断题(共10个题,在正确的后面括号中对打√,否则打×,每小题1分,共10分)1、若一个函数的返回类型为void,则表示其没有返回值。
(√)2、SFR中凡是能被8整除的地址,都具有位寻址能力。
(√)3、MCS-51单片机的程序存储器只能用来存放程序的。
(×)4、串口中断标志由硬件清0。
(×)5、MCS—51的产品8051与8031片内都无ROM。
(×)6、C51中通用指针变量占用2个字节。
(×)7、C51中的中断服务程序函数必须是无返回值和无参数的函数。
(√)8、C51定义为idata的RAM地址范围为0x00-0x7f。
(×)9、汇编指令RET与RETI的功能完全相同。
(×)10、main()函数可以放在程序中的任何位置,程序总是从main()函数开始执行。
(√)四、程序填空题(共3题,共15分)1、在单片机的P1口连接有8个发光二极管,改变P1口的状态即可控制发光管发光还是不发光(‘0’发光,‘1’不发光)。
编程实现8个发光管按以下规律变化:总共9种状态,每隔一秒变化一次,9次一个循环:仅1号灯亮、仅2号灯亮 (8)灯亮、全亮。
(每空1分)void Delay1s(void); //1秒延时函数void main(){unsigned char code vucCodeDpcode[9]={0x0FE, 0x0FD, 0xFB , 0x0F7, 0x0EF,0x0DF, 0xBF , 0x7F, 0x00};unsigned char data vucDataIndex = 0 ;while(1){P1 = vucCodeDpcode[vucDataIndex] ;Delay1s();vucDataIndex ++;if(vucDataIndex==9) vucDataIndex=0 ;}}2、设计运算函数,实现分段函数的功能,返回值为无符号字符型,形参类型为无符号字符形。
3x+4 (x<10)函数功能为y= 5x-16 (20>x>=10)3x/10 (x>=20)(每空2分)unsigned char func1(unsigned char x ){unsigned char y;if( x<10 ) y=3*x+4;else if (x<20) y=5*x-16;else y= 3*x/10 ;return(y);}3、P1口接有8个发光二极管,如图所示,编写程序使单一灯每隔1S左移一位,不断循=6MHZ,利用定时器T0、方式1下结合软件计数完成定时。
(每空1环。
设振荡频率为fOSC分)ORG 0000H ;单片机复位后程序入口地址LJMP MAINORG 000BHLJMP CTC0 ;调整到CTC0处执行T0中断程序MAIN:MOV TMOD,#01H ;指令功能设置T0工作在方式1 定时方式MOV TH0,#3CHMOV TL0,#0B0HSETB EA ;指令功能设置总的中断允许SETB ET0 ;指令功能设置T0中断允许SETB TR0 ;指令功能启动T0定时MOV P1,#0FEH ;指令功能设置初始值MOV R3,#0FEHMOV R2,#10SJMP $CTC0:PUSH ACC ;堆栈保护现场PUSH PSWMOV TH0,#3CH ;重新赋初始值MOV TL0,#0B0HDJNZ R2,DONT ;指令功能判断10次定时次数是否满MOV R2,#10MOV A,R3RL A ;修改发光二极管点亮的位置MOV P1,AMOV R3,ADONT: POP PSW ;指令功能恢复PSW的内容POP ACCRETI ;中断返回END五、编程应用题(共2题,每题10分,共20分)1、利用89S51单片机产生一个周期为800ms的方波信号,占空比为50%,已知晶振频率为12MHz,要求用T0定时,并通过P2.0输出。
#include”reg51.h”sbit sout=P2^0;void main( ){unsigned char data i=8;TMOD=0x01;TH0=0x3c;TL0=0xb0;TR0=1;while(1){while(TF0==0);TF0=0;i--;if(i==0){i=8;sout=~sout;}}}2、89S51单片机外接一片采用动态扫描方式通过ULN2804驱动四个共阳极数码管,动态扫描时间由定时器T0确定,P0口做I/O口,显示内容在数组dismap[4]中,编写T0中断响应程序,每次显示一个数码管,循环显示; 每个数码管的显示时间为1ms,外接晶振为12MHz;并完成main()中的T0中断初始化及启动T0。
#include”reg51.h”unsigned char code distab[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};unsigned char dismap[4]={0,1,2,3};void timer0( ) interrupt 1 using 1{/********以下为T0中断响应程序内容************/static unsigned char data local=0;TL0=0x18;TH0=0xfc;switch(local){case 0: P0=distab[dis map [0]];P2=0x00;local=1;break;case 1: P0=distab[dis map [1]];P2=0x01;local=2;break;case 2: P0=distab[dis map [2]];P2=0x02;local=3;break;case 3: P0=distab[dis map [3]];P2=0x03;local=0;break;default:break;}/********以上为T0中断响应程序内容************/}void main(){/***************以下为T0的中断初始化设置及启动T0定时器*************/ TMOD=0x01;IE=0x82;TL0=0x18;TH0=0xfc;TR0=1;/***************T0的中断初始化设置及启动T0定时器程序结束*************/ while(1){}}。