《单片机(C51)技术》复习题 下载本文

一.填空题(每空1分,共10分)

1.单片机的最小系统除了单片机外还应包括时钟电路. 及电源电路。 2.MCS-51单片机具有一个 位的CPU和 位的程序计数器。

3.MCS-51单片机执行指令所用的时间以机器周期为单位,1个机器周期= 时钟周期。 4.如果单片机的晶振频率为12MHZ,那么机器周期为 ,如果单片机的晶振频率为6MHZ,那么机器周期为 。

5.用Keil C51软件编写C语言源文件时应保存为扩展名为 的文件,用PROTEUS软件进行仿真时应下载扩展名为 的代码文件。

6.编译预处理命令是计算机将C语言编译为机器语言是进行的预处理,编译预处理命令以 开头,末尾不加 。

7.C51语言中有字符型、整型、浮点型指针型和位变量等几种基本变量类型,其中,字符型变量所占用的长度为 Byte。整型变量所占用的长度为 Byte。

8.若想用uchar代换程序中的unsigned char则所使用的语句为: ; 9.在编程过程中,变量必须先 后使用。#define N 5 语句中N为 (常量.变量)。 10.在程序运行中,其值可以改变的量称为变量。一个变量主要由两部分构成:一个 是 ,一个是 。

11.65= ;67/10= ;9190= ;0x7f的十进制数为 。 12.逻辑表达式的结合性为 。逻辑表达式的值应该是一个逻辑值“真”或“假”,以 代表假,以 代表真。

13.函数是具有一定功能的程序段,C语言程序有主函数. 和用户自定义函数。函数的定义不能嵌套。一段程序只能有且只有一个 函数。

14.有两种方法可以终止子函数运行并返回到调用它的函数中:一是执行到函数的 返回;二是执行到语句 返回,并可以带回返回值。 15.在Keil C中,如果被调函数定义在调用函数之后,则在函数调用之前必须进行 。 16.unsigned char a[10];定义了一个 型数组a,数组长度为 ,可用的下标为 。unsigned char m[3][6];定义了一个 维数组m,数组元素的个数为 。 17.数组定义时方括号中的数值必须是 ,该数值反映了数组元素的多少。数组元素的引用采用 加下标的方法。

18.P1=0XFE;P1=P1<<2;移位后P1= 。P1=0XF5;P1=P1>>2;移位后P1= 。

19.循环结构是程序设计中的一种基本结构,循环结构的语句有: . 和do-while语句。

20.在循环体中加入break语句可以改变循环的运行过程,遇到break;结束 。 21.语句for(i=0;i<=5;i++);控制的循环次数为 。语句for(i=5;i<0;i--);控制的循环次数为 。若i=5,语句while(i<6) i++;控制的循环次数为 。

22.把P1^1口定义为K1: ; 定义一个位变量key1: ; 23.指针是C语言中一个重要的概念,指针型变量以 标记。

24.按键消抖一般有两种方法: 和软件消抖,软件消抖中,当单片机检测到有键按下时,可以先 越过抖动过程再对按键识别。

25.MCS-51单片机有四个8位双向并行的I/O口,这四个端口既可以字节寻址又可 以 ,其中内部没有上拉电阻的端口是 。

26.数码管按发光二极管连接方式分为共阴极和 数码管 。按段数可分为七段数码管和 。

27.AT89C51单片机共有5个中断源。它们分别为2个外部中断: . ,3个

第1页(共41页)

片内中断:T0.T1和 。

28.T0、T1除了有定时功能外还有 。

29.利用中断服务程序时除了要开各自的中断允许外,还要开 。 30.T0、T1有4种工作模式,其中具有自动重装载功能的是 。

31.定时计数器T0有四种工作模式。其中模式0由TH0的 和TL0的 构成13位计数器。 32.定时计数器T0/T1有四种工作模式。其中模式0为 计数器,模式1为 计数器,模式2和模式3为 计数器。

33.T0定时器/计数器的溢出中断标志位是 ,T1定时器/计数器的运行控制位是 ,串口的中断允许控制位是 。

34.AT89C51单片机中断源分为 级,由中断优先寄存器IP设置,系统复位后所有中断源被设置为 。

35.C51提供的中断函数语法为:返回值类型 函数名 (形参)interrupt n,n对应中断源的编号,若n=4,则对应的中断源为 。

36.根据信息的传送方向,串行通信可以分为单工. 和 3种。89C51有一个可编程的 串行通信接口。

37.CPU与其他设备之间的通信有 和串行通信,串行通信又分为同步和 串行通信。

38.AT89C51单片机的串行口通过编程可以有4种工作方式。其中,方式0和方式2的波特率是 ,方式1和方式3的波特率可变,由定时器 决定。 39.若i=5,执行语句b = i++; b= ,i= 。

二.读程序

1.unsigned char x,,y,z; x=x&0x0f; if(x>=10) { z=1; y=x-9; } else { z=0; y=x; }

当x=0x45时,程序执行完毕后,x= ;y= ,z= 当x=0x48时,程序执行完毕后,x= ;y= ,z=

2.unsigned char x,y; if(x>30) if(x<45) y=3; else y=1; else y=5;

第2页(共41页)

当x的值为20时,y= ;当x=40时,y= ;当x=45时,y= 。 3.unsigned char x,y; if(x>=30 && x<=45) y=3;

else if(x<30) y=1; else y=5;

当x的值为20时,y= ;当x=40时,y= ;当x=50时,y= 。 4.unsigned char x,y; if(x>45 || x<30) if(x<30)y=1; else y=5; else y=3;

当x的值为20时,y= ;当x=40时,y= ;当x=50时,y= 。 5.int x,y,z; x=0x46; x|=0x15; y=x/10; z=x;

x= ;y= ,z= 6.unsigned char x=1,y, a[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f} a[0]= ; a[x]= ; a[2*y]= 7.int x,y; while(x<10) { x++; y+=x; }

8. int x,y=0;

for(x=0;x<10;x++) y+=x;

x= ;y= 。 9. int x=0,y=0; while(x<10) { x++; y+=x; }

x= ;y= 。 10.int x,y=0;

for(x=0;x<10;x++) {

y*=x; }

x= ;y= 。

第3页(共41页)

11.int x,y=1;

for(x=1;x<3;x++) {

y*=x; }

x= ;y= 。 12. int x=0,y=1; while(x<4) { x++; y*=x; }

x= ;y= 。 13.int x=0,y=0; while(x<10) { x++; y*=x; }

x= ;y= 。

14.unsigned char x,y,a[5]={23,67,12,89,43} ; x=0;

for(y=0;y<5;y++) {

if(x>a[y]) x=a[y]; }

x= ;y= 。

15.unsigned char x,y,a[5]={23,67,12,89,43} ; x=100;

for(y=0;y<5;y++) {

if(x

x= ;y= 。

16. unsigned char x,y,a[5]={23,67,12,89,43} ; x=12;

for(y=0;y<5;y++) {

if(a[y]==x) break; }

第4页(共41页)

x= ;y= 。

17. unsigned char x,y,a[5]={23,67,12,89,43} ; x=15;

for(y=0;y<5;y++) {

if(a[y]==x) break; }

x= ;y= 。

18 . unsigned char x=15,y=0,a[5]={23,67,12,89,43} ; while(a[y]!=x) y++;

x= ;y= 。

19. unsigned char x=15,y=0,a[5]={15,15,12,89,43} ; while(a[y]==x) y++; x= ;y= 。 20.void delay() {int i,j,k;

for(i=1;i<8;i++) for (j=20;j>0;j--) for(k=248;k>0;k--); }

main()

{ int i,temp; while (1) {P2=0xff; delay(); P2=0xfe; temp=0xfe; for(i=0;i<8;i++) { P2=temp<

i=6时,P2= 。并说明其程序功能 。 21.#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;

第5页(共41页)