第六届“蓝桥杯”校内选拔赛单片机设计与开发试题答案
一、选择题:共10题,每题 2分,共20 分
1.C 2.B 3.D 4.B 5.D 6.C 7.C 8.B
9.D 10. D
二、填空题:共10题,每空 1分,共20 分
1.
2. 3、 ,4、 、
5、
6、
7、
8、 CDABC
9、 、10、
三、判断题:共10题,每题1分,共10分
1、(×) 2、(×)3、(×)4、(×)5、(√)6、(×)7、(√)8、(×)9、(√)10(×)
四、简答题:共3题,每题10分,共30分
1、8051单片机内部包含哪些主要逻辑功能部件?
答案:8位CPU;
4KB的片内程序存储器ROM。可寻址64KB程序存储器和64KB外部数据存储器;
128B内部 RAM;
21个SFR;
4个8位并行I/O口(共32位I/O线);
一个全双工的异步串行口;
两个16位定时器/计数器;
5个中断源,两个中断优先级;
内部时钟发生器。
2、MCS-51指令系统主要有哪几种寻址方式?每种寻址方式举个例子。 答案:A:寄存器寻址 MOV A, R5
B: 直接寻址 MOV A, 3AH
C:立即数寻址 MOV A, #3AH
D:变址寻址 MOVC A, @A+PC
E:相对寻址 SJMP LOOP
F:位寻址 ANL C,70H
G:寄存器间址 MOV A, @R0
3、MCS-51指令系统主要有哪几种中断源?并写出每个中断入口地址? 中断源 入口地址
外部中断0 0003H
定时器0溢出 000BH
外部中断1 0013H
定时器1溢出 0001BH
串行口中断 0023H
五、程序设计题:共2题,每题10分,共20分
1、int i=0,s=0;
while(str1[i]!='\0')
{
if((str1[i]>='a' && str1[i]='A' && str1[i]
s++;
i++;
}
return s;
2、从左到右的流水灯,接在P0口的8个LED从左到右循环依次点亮,产生走马灯效果
(用C编程)
#include
#include
#define uchar unsigned char
#define uint unsigned int
//延时
void DelayMS(uint x)
{
uchar i;
while(x--)
{
for(i=0;i
}
}
//主程序
void main()
{
P0=0xfe;
while(1)
{
P0=_crol_(P0,1); //P0的值向左循环移动 DelayMS(150);
}
}
第六届“蓝桥杯”校内选拔赛单片机设计与开发试题答案
一、选择题:共10题,每题 2分,共20 分
1.C 2.B 3.D 4.B 5.D 6.C 7.C 8.B
9.D 10. D
二、填空题:共10题,每空 1分,共20 分
1.
2. 3、 ,4、 、
5、
6、
7、
8、 CDABC
9、 、10、
三、判断题:共10题,每题1分,共10分
1、(×) 2、(×)3、(×)4、(×)5、(√)6、(×)7、(√)8、(×)9、(√)10(×)
四、简答题:共3题,每题10分,共30分
1、8051单片机内部包含哪些主要逻辑功能部件?
答案:8位CPU;
4KB的片内程序存储器ROM。可寻址64KB程序存储器和64KB外部数据存储器;
128B内部 RAM;
21个SFR;
4个8位并行I/O口(共32位I/O线);
一个全双工的异步串行口;
两个16位定时器/计数器;
5个中断源,两个中断优先级;
内部时钟发生器。
2、MCS-51指令系统主要有哪几种寻址方式?每种寻址方式举个例子。 答案:A:寄存器寻址 MOV A, R5
B: 直接寻址 MOV A, 3AH
C:立即数寻址 MOV A, #3AH
D:变址寻址 MOVC A, @A+PC
E:相对寻址 SJMP LOOP
F:位寻址 ANL C,70H
G:寄存器间址 MOV A, @R0
3、MCS-51指令系统主要有哪几种中断源?并写出每个中断入口地址? 中断源 入口地址
外部中断0 0003H
定时器0溢出 000BH
外部中断1 0013H
定时器1溢出 0001BH
串行口中断 0023H
五、程序设计题:共2题,每题10分,共20分
1、int i=0,s=0;
while(str1[i]!='\0')
{
if((str1[i]>='a' && str1[i]='A' && str1[i]
s++;
i++;
}
return s;
2、从左到右的流水灯,接在P0口的8个LED从左到右循环依次点亮,产生走马灯效果
(用C编程)
#include
#include
#define uchar unsigned char
#define uint unsigned int
//延时
void DelayMS(uint x)
{
uchar i;
while(x--)
{
for(i=0;i
}
}
//主程序
void main()
{
P0=0xfe;
while(1)
{
P0=_crol_(P0,1); //P0的值向左循环移动 DelayMS(150);
}
}