1、第 1 页(共 41 页) 一 .填空题(每空 1 分,共 10 分) 1单片机的最小系统除了单片机外还应包括时钟电路 . 及 电源电路。 2 MCS-51 单片机具有一个 位的 CPU 和 位的程序计数器。 3 MCS-51 单片机执行指令所用的时间以机器周期为单位, 1 个机器周期 = 时钟周期。 4如果单片机的晶振频率为 12MHZ,那么机器周期为 ,如果单片机的晶振频率为6MHZ,那么机器周期为 。 5用 Keil C51 软件编写 C 语言源文件时应保存为扩展名为 的文件,用 PROTEUS软件进行仿真时应下载扩展名为 的代码文件。 6编译预处理命令是计算机将 C 语言编译为机器语言
2、是进行的预处理,编译预处理命令以 开头,末尾不加 。 7 C51 语言中有字符型、整型、浮点型指针型和位变量等几种基本变量类型,其中,字符型变量所占用的长度为 Byte。 整型变量所占用的长度为 Byte。 8若想用 uchar 代换程序中的 unsigned char 则所使用的语句为: ; 9.在编程过程中,变量必 须先 后使用。 #define N 5 语句中 N 为 (常量 .变量)。 10.在程序运行中,其值可以改变的量称为变量。一个变量主要由两部分构成:一个 是 ,一个是 。 11 65%10= ; 67/10= ; 919%100= ; 0x7f 的十进制数为 。 12逻辑表达式
3、的结合性为 。逻辑表达式的值应该是一个逻辑值 “真 ”或 “假 ”,以 代表假,以 代表真。 13函数是具有一定功 能的程序段, C 语言程序有主函数 . 和用户自定义函数。函数的定义不能嵌套。一段程序只能有且只有一个 函数。 14有两种方法可以终止子函数运行并返回到调用它的函数中:一是执行到函数的 返回;二是执行到语句 返回,并可以带回返回值。 15在 Keil C 中,如果被调函数定义在调用函数之后,则在函数调用之前必须进行 。 16.unsigned char a10;定义了一个 型数组 a,数组长度为 ,可用的下标为 。 unsigned char m36;定义了一个 维数组 m,数组
4、元素的个数为 。 17数组定义时方括号中的数值必须是 , 该数值反映了数组元素的多少。数组元素的引用采用 加下标的方法。 18 P1=0XFE;P1=P12; 移位后P1= 。 19循环结构是程序设计中的一种基本结构,循环结构的语句有: . 和do-while 语句。 20在循环体中加入 break 语句可以改变循环的运行过程,遇到 break;结束 。 21语句 for(i=0;i=10) z=1; y=x-9; else z=0; y=x; 当 x=0x45 时,程序执行完毕后, x= ;y= ,z= 当 x=0x48 时,程序执行完毕后, x= ;y= ,z= 2 unsigned ch
5、ar x,y; if(x30) if(x=30 x= ;y= 。 15 unsigned char x,y,a5=23,67,12,89,43 ; x=100; for(y=0;y0;j-) for(k=248;k0;k-); main() int i,temp; while (1) P2=0xff; delay(); P2=0xfe; temp=0xfe; for(i=0;i char b=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f; void delay() int i,j; for(i=20;i0;i-) for(j=248;j0;
6、j-); void main() int a; 第 6 页(共 41 页) a=0; P2=0X3F;P3=0X3F; while(1) if (P1!=0xff) delay(); if(P1!=0xff) switch(P1) case 0xfe:a+;P2= ba/10 ;P3=ba%10 ;break; case 0xfd:a-; P2= ba/10 ;P3=ba%10 ;break; case 0xfb:a=0; P2= ba/10 ;P3=ba%10 ;break; if(a=99) a=0; while(P1!=0xff) ; 分别说明 P1 为 0xfe 时功能 , P1 为
7、0xfd 时功能 , P1 为 0xfb 时功能 。 22 #include int a10=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90; b2=0x01,0x02; int c=60,i,x2,j,k; main() TMOD=0x10; TH1=0X9E; TL1=0X58; EA=1; ET1=1; TR1=1; while(1) x0=c/10; x1=c%10; for(i=0;i0;k-); void ds() interrupt 3 TH1=0X9E; TL1=0X58; j+; if(j=40) 第 7 页(共 41 页)
8、 j=0; c-; 定时时间为 ,中断源 编号为 ,并简要说明其功能 。 23 #include main() TMOD=0x01; TH0=0XB1; TL0=0XE0; EA=0; ET0=0; TR0=1; while(1) if(TF0=1) TF0=0; TH0= ; TL0= ; P1_0=P1_0; 说明其功能 。 24 #include main( ) while(1) switch (P1) case 0xfe :P2=0x01;break; case 0xfd:P2=0x02; break; case 0xfb:P2=0x04; break; case 0xf7:P2=0x
9、08; break; case 0xef:P2=0x10; break; case 0xdf:P2=0x20; break; case 0xbf:P2=0x40; break; case 0x7f:P2=0x80; break; default:P2=0xff; P1=0xbf 时 P2= , P1=0xfe 时 P2= , P1=0xbe 时 P2= 。 第三题 改错 1 本小题共有 5 处错误,请在不删减原程序指令条数基础上加以改正,请将错误行号和改第 8 页(共 41 页) 正后的结果写在答题卡相应位置。每空 1 分,错改漏改均不得分。 行 号 程序 1 include 2 void y
10、s(void) 3 4 unsigned char j,k; 5 for(i=2;i0;i-) 6 for(j=200;j0;j-) 7 for(k=250;k0;k-) 8 9 void main (void) 10 11 unsigned char j,k; 12 j=0x01 13 for(k=0;k 2 unsigned char i; 3 bit D1=P11; 第 9 页(共 41 页) 4 void zd() interrupt 3 5 6 THo=(65536-50000)/256; 7 TLo=(65536-50000)%256; 8 i+; 9 if(i=20) 10 11
11、 i=0; 12 D1=!D1; 13 14 15 main() 16 17 tmod=0x01; 18 TH0=(65536-50000)/256; 19 TL0=(65536-50000)%256; 20 EA=1; 21 ET0=1; 22 TR0=1; 23 i=0; 24 while(1); 25 错误行号 修改为 错误行号 修改为 错误行号 修改为 错误行号 修改为 错误行号 修改为 3.本小题共有 5 处错误,请在不删减原程序指令条数基础上加以改正,请将错误行号和改正后的结果写在答题卡相应位置。每空 1 分,错改漏改均不得分。 行号 程序 1 #includereg51.h 2
12、unsigned char i; 第 10 页(共 41 页) 3 bit D1=P11; 4 void zd() interrupt 2 5 6 TH0=(65536-50000)/256; 7 TL0=(65536-50000)%256; 8 i+ 9 if(i=20) 10 11 i=0; 12 D1=!D1; 13 14 15 main() 16 17 TMOD=0x01; 18 TH0=(65536-50000)/256; 19 TL0=(65536-50000)%256; 20 EA=1; 21 ET0=1; 22 TR0=1; 23 i=0; 24 while(1) 25 错误行号 修改为 错误行号 修改为 错误行号 修改为 错误行号 修改为 错误行号 修改为 4 本小题共有 5 处错误,请在不删减原程序指令条数基础上加以改正,请将错误行号和改正后的结果写在答题卡相应位置。每 空 1 分,错改漏改均不得分。 行号 程序 1 #include 2 void ys1s(void) 3 4 unsigned char i,j,k 5 for(i=10;i0;i-) 6 for(j=200;j0;j-) 7 for(k=250;k0;k-); 8 9 void main()