2014 —2015 学年第 二 学期期末考试 《单片机(C51)技术》试卷(A) 班级 姓名 学号 成绩 题号 分值 得分 阅卷人 一 10 二 30 三 20 四 20 五 20 总分 100 装┋┋┋┋┋┋┋┋┋┋┋┋┋┋┋┋┋┋┋┋┋┋┋┋┋┋┋┋┋┋┋┋┋┋┋┋说明:注意书写格式,区分大小写,字迹清晰, 卷面整洁。单片机的时钟频率均为12MHz。 一、填空题(每空1分,共10分) 1.单片机的最小系统除了单片机外还应包括时钟电路、 及电源电路。 2.MCS-51单片机具有一个 位的CPU和 位的程序计数器。 3.若想用 uchar 代换程序中的 unsigned char 则所使用的预处理命令为: ; 4.65= ;67/10= ; 5.数组定义时方括号中的数值必须是 ,该数值反映了数组元素的多少。数组元素的引用采用 加下标的方法。 6.定时计数器T0有四种工作模式。其中模式1由TH1的 和TL1的 构成16位计数器。 二、读程序:写出下列程序段运行完之后的结果。(本大题共3小题,每空3分,共30分。) 1.程序 unsigned char x,y,z; x=x&0x0f; if(x>=10) { z=1; y=x-9; } else { 订线 z=0; y=x; }
运行结果当x=0x35时,程序执行完毕后,x= ;y= ,z= 2.程序
unsigned char x,y; if(x>=30 && x<=45) y=3;
else if(x<30) y=1; else y=5;
运行结果当x的值为30时,y= ;当x=45时,y= ;当x=55时,y= 。 3.程序
#include
char b[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; void delay() { int i,j;
for(i=20;i>0;i--) for(j=248;j>0;j--); }
void main() {
int a;
a=0; P2=0X3F;P3=0X3F; while(1) {
if (P1!=0xff) delay(); if(P1!=0xff) {
switch(P1) {
case 0xfe:a++;P2= b[a/10] ;P3=b[a] ;break; case 0xfd:a--; P2= b[a/10] ;P3=b[a] ;break; case 0xfb:a=0; P2= b[a/10] ;P3=b[a] ;break; }
if(a==99)
┋┋┋┋┋┋┋┋┋┋┋┋┋┋┋第 1 页( 共 4 页 )
a=0; ④错误行号 修改为 while(P1!=0xff) ; ⑤错误行号 修改为 2.本小题共有5处错误,请在不删减原程序指令条数基础上加以改正,写在答题} } } 卡相应位置。(每空1分,错改漏改均不得分,共10分。) 运行结果分别说明P1为0xfe时P2、P3功能 , P1为0xfd时P2、P3功能功能 ,P1为0xfb时行号 程序 功能P2、P3功能 ,delay()函数执行完循环次数1 #include
3 bit D1=P1^1;
4 void zd() interrupt 3 三、改错题
5 {
1.本小题共有5处错误,请在不删减增加原程序指令条数基础上加以改正,写在
6 THo=(65536-50000)/256;
答题卡相应位置。(每空1分,错改漏改均不得分,共10分。)
7 TLo=(65536-50000)%6;
8 i++;
行号 程序
9 if(i==20)
1 include
10 {
2 void ys(void)
11 i=0;
3 {
12 D1=!D1;
4 unsigned char j,k;
13 }
5 for(i=2;i>0;i--)
14 }
6 for(j=200;j>0;j--)
15 main()
7 for(k=250;k>0;k--)
16 {
8 }
17 tmod=0x01;
9 void main (void)
18 TH0=(65536-50000)/256;
10 {
19 TL0=(65536-50000)%6;
11 unsigned char j,k;
20 EA=1;
12 j=0x01
21 ET0=1;
13 for(k=0;k<8;k++)
22 TR0=1;
14 {
23 i=0;
15 P2=~j;
24 while(1);
16 ys;
25 }
17 j=j<<1;
①错误行号 修改为
18 }
②错误行号 修改为
19 }
③错误行号 修改为
①错误行号 修改为
④错误行号 修改为
②错误行号 修改为
⑤错误行号 修改为
③错误行号 修改为
第 2 页( 共 4 页 )
四、修改程序与完善程序:(本大题共2小题,每小题10分,共20分。) 1.将主程序中斜体部分的程序语句修改为函数,并保持程序的完整性,答 采用外部中断INT0实现数码管从0~9的循环显示,每按一次按键时,数码管显示变化一次,编写外部中断函数。
#include
案写在程序右边的横线上。功能:显示数字59。
#include unsigned char duanma[10]= {0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f}; unsigned char weima[2]={0x02,0x01}; unsigned char xianshi[2] ={0,0}; char jishu1; unsigned char j,k; main() { xianshi[0]=duanma[5];
xianshi[1]=duanma[9]; while(1) { P2=weima[jishu1];
P1=xianshi[jishu1];
jishu1++; if(jishu1==2)
{jishu1=0;}
for(j=20;j>0;j--) for(k=250;k>0;k--); } } 2.完成以下程序的编写
功能说明:说明P2口接一位共阴数码管,P3.2接一个按键。
unsigned char disp[10]={0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f}; unsigned char num=0;
void main (void) {
EA=1; EX0=1; IT0=1; P2=disp[num]; while(1); }
五、编程题:共20分(参见电子版试卷 第五题编程)
本题为开放型试题,不限编程方法。
第 3 页( 共 4 页 )
第 4 页( 共 4 页 )
百度搜索“70edu”或“70教育网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,70教育网,提供经典综合文库《单片机(C51)技术》A卷 复习题在线全文阅读。
相关推荐: