《单片机原理及应用》题库及答案_第1页
《单片机原理及应用》题库及答案_第2页
《单片机原理及应用》题库及答案_第3页
《单片机原理及应用》题库及答案_第4页
《单片机原理及应用》题库及答案_第5页
已阅读5页,还剩98页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

《单片机原理及应用》题库及答案1、下面是10位模拟转换芯片TLC1549模数转换子程序,给程序填空。#include"reg51.H“

#include"intrins.h"

externuintTLC1549_value,temp;

sbitTLC1549_CS=P1^7;

sbitTLC1549_DATA=P1^6;

sbitTLC1549_CLK=P1^5;

uchar

code

led[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};

voidTLC1549_conver(void)

{

uchari;

TLC1549_value=0;

TLC1549_CS=1;

//初始状态

TLC1549_CLK=0;

_nop_();

1

_nop_();

_nop_();

_nop_();

_nop_();

2

{

TLC1549_CLK=1;

TLC1549_CLK=0;

//clk的下降沿DAYA端输出新的数据TLC1549_value=TLC1549_value<<1;

if(TLC1549_DATA==1)

//bit9~0

{

3

}

}

TLC1549_CLK=1;

4

TLC1549_CS=1;

}(1)A、TLC1549_CS=0;B、TLC1549_CS=1;C、TLC1549_Clk=1;D、NOP

(2)A、

for(i=0;i<8;i++)B、

for(i=0;i<9;i++)C、

for(i=0;i<10;i++)D、while(i<10)

(3)A、TLC1549_value&=0x00;B、TLC1549_value&=0x01;C、TLC1549_value|=0x00;D、TLC1549_value|=0x01;

(4)A、TLC1549_CLK=0;B、TLC1549_CLK=1;C、TLC1549_CLK=0x00;D、TLC1549_CLK=0x01;

答案:(1)A(2)C(3)D(4)A2、

工作寄存器一共分(

)个区,是由(

)的取值决定的A、2,F0B、4,RS0C、4,RS1D、4,RS1和RS0答案:D3、程序存储器5的中断源的入口地址分别是多少?(从低到高)(

),(

),(

),(

),(

)答案:0003H;000BH;0013H;001BH;0023H;4、片内数据存储器分几部分。A、通用寄存器区B、特殊功能寄存器区C、位存储区D、用户使用区答案:ACD5、

片内数据存储器位地址范围是多少?答案:20H~2FH;6、

一般情况下(不外接存储器)EA引脚接()A、VccB、GNDC、0D、RST答案:A7、51单片机的存储器结构分为A、冯.诺依曼结构B、哈佛结构C、普林斯顿结构D、其它答案:B8、51单片机内部的程序存储器地址范围是(

)。A、0000H~FFFFHB、0000H~00FFHC、0000H~3FFFHD、0000H~007FH答案:C9、51单片机的CPU是多少位的A、4B、8C、16D、32答案:B10、单片机的复位信号是()电平,需要保持(

)个机器周期A、低,4B、低,2C、高,4D、高,2答案:D11、CPU的功能有哪些A、产生控制信号B、存储数据C、系统复位D、产生时钟答案:A12、51单片机的输入输出口有第二功能A、P0B、P1C、P2D、P3答案:D13、51单片机一共(

)引脚A、40B、20C、140D、44答案:A14、单片机哪个输入输出口需要外接上拉电阻A、P0B、P1C、P2D、P3答案:A15、51单片机的(

)口作为地址数据的复用线A、P0B、P1C、p2D、p3答案:A16、

当EA引脚值为()时,先访问内部程序存储器,再访问外部程序存储器A、VCC

B、GNDC、0D、高阻答案:A17、当RST引脚出现(

)个时钟周期的高电平,才引起CPU复位A、4B、1C、2D、3答案:C18、下面哪个引脚是允许访问外部程序存储器的引脚A、RSTB、ALEC、EAD、PSEN答案:C19、下面哪个引脚是时钟引脚A、XTAL1B、RSTC、EAD、PSEN答案:A20、

下面哪个引脚是复位引脚A、XTAL1B、RSTC、ALED、PSEN答案:B21、51单片机的()口具有中断等第二功能A、P0B、P1C、P2D、P3答案:D22、单片机的CPU是由(

)和(

)构成的。答案:运算器;控制器;23、单片机复位后,SP的值为(

),P0~P3口的值为(

),其它特殊功能寄存器的值为(

)答案:07H;0FFH;00H;24、51单片机系统1机器周期=(

)状态周期=(

)时钟周期答案:6;12;25、一般情况下单片机II/O口的拉电流能力是(

)mA,灌电流能力是(

)mA答案:1;10;26、P0口作为输入输出使用时,控制端的取值是()A、0B、1C、VccD、随机答案:A27、

51单片机除(

)口外,其它都具有内部上拉电阻A、P0B、P1C、P2D、P3答案:A28、当外接存储器时,哪几个口能作为外部扩展地址使用A、P0B、P1C、P2D、P3答案:AC29、P3口从高到低各位依次是(

),(

),(

),(

),(

),(

),(

),(

)答案:RD;WR;T1;T0;INT1;INT0;TXD;RXD;30、P0口具有的功能A、输入输出B、数据总线C、地址总线D、中断功能答案:ABC31、

对于12MHz晶振的单片机来说,系统的机器周期是多少(

)A、1usB、2usC、6usD、12us答案:A32、若有以下定义,则p+5表示_______.

int

a[10],*p=a;

A、

元素a[5]的地址

B、

元素a[5]的值

C、

元素a[6]的地址

D、

元素a[6]的值答案:A33、下面程序段的运行结果是________.

char*s="abcde";

s+=2;printf("%s",s);

A、

cde

B、字符'c'

C、无确定的输出结果D、字符'c'的地址

答案:A34、#include<stdio.h>

main(){intc=0,k;for(k=1;k<3;k++)switch(k){default:c+=k;case2:c++;break;case4:c+=2;break;}printf(“%d\n”,c);A、3B、5C、7D、9答案:A35、以下函数func()的功能是:使具有n个元素的一维数组b的每个元素的值都增加2,划线处应填入___.func(int

b[],intn){int;for(i=0;i<n;i++)

__________;

}A、

b[i++]

B、

b[i]++

C、

b[i+=2]

D、

b[i]+=2答案:D36、

求n!,n<=100答案:37、表达式:10!=9的值是(

)A、tureB、非零C、0D、1答案:D38、假定等级和分数有以下对应关系:

等级:A

分数:85~100等级:B

分数:60~84等级:C

分数:60以下对于等级grade输出相应的分数区间,能够完成该功能的程序段是(

).A、A)switch(grade)

{

case'A':printf("85--100\n");

case'B':printf("60--84\n");

case'C':printf("60以下\n");

default:printf("等级错误!\n");

}B、B)

switch(grade)

{

case'A':printf("85--100\n");break;

case'B':printf("60--84\n");

case'C':printf("60以下\n");

default:printf("等级错误!\n");

}C、C)

switch(grade)

{

case'A':printf("85--100\n");break;

case'B':printf("60--84\n");break;

case'C':printf("60以下\n");

default:printf("等级错误!\n");

}D、D)switch(grade)

{

case'A':printf("85--100\n");break;

case'B':printf("60--84\n");break;

case'C':printf("60以下

\n");break;

default:printf("等级错误!\n");

}答案:D39、运行下面程序时,若从键盘输入数据为"123",则输出结果是().

#include"stdio.h"

voidmain()

{intnum,i,j,k,place;

scanf("%d",&num);

if(num>99)

place=3;

elseif(num>9)

place=2;

else

place=1;

i=num/100;

j=(num-i*100)/10;

k=(num-i*100-j*10);

switch(place)

{case3:printf("%d%d%d\n",k,j,i);

break;

case2:printf("%d%d\n",k,j);

break;

case1:printf("%d\n",k);

}

}A、123B、1,2,3C、3,2,1D、321答案:D40、以下程序段的执行结果是_(

)

inti,j,m=0;

for(i=1;i<=15;i+=4)

for(j=3;j<=19;j+=4)

m++;

printf("%d\n",m);A、12B、15C、20D、25答案:C41、以下程序的输出结果是________.

#include<stdio.h>

voidfun()

{staticinta=0;

a+=2;

printf("%d",a);

}

voidmain()

{intcc;

for(cc=1;cc<4;cc++)fun();

printf("\n");

}A、2222

B、

2468

C、222

D、

246答案:D42、若希望下面的程序运行后输出45,程序空白处的正确选择是________.#include<stdio.h>voidmain(){inti,j=10,a[]={1,3,5,7,9,11,13,15};

for(____________)

j+=a[i];

printf("%d\n",j);}A、

i=5;i>1;i--

B、i=0;i<7;++iC、

i=5;i>=1;--i

D、

i=2;i<6;++i答案:C43、设p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下不能正确执行的赋值语句是_______.A、c=*p1+*p2;

B、

p2=c

C、p1=p2

D、c=*p1*(*p2);答案:B44、执行下面程序时,若从键盘输入"2<CR>",则程序的运行结果是()

#include<stdio.h>

voidmain()

{intk;charcp;

cp=getchar();

if(cp>='0'&&cp<='9')

k=cp-'0';

elseif(cp>='a'&&cp<='f')

k=cp-'a'+10;

else

k=cp-'A'+10;

printf("%d\n",k);

}A、2B、4C、1D、10答案:A45、下面程序段的运行结果是(

)

intx=0,y=0;

while(x<15)y++,x+=++y;

printf("%d,%d",y,x);A、20,7B、6,12C、20,8D、8,20答案:D46、

#include

<stdio.h>

#include

<string.h>

fun(char*w,intn)

{chart,*s1,*s2;

s1=w;s2=w+n-1;

while(s1<s2){t=*s1++;*s1=*s2--;*s2=t;}

}

main(){char*p;

p="1234567";

fun(p,strlen(p));

puts(p);

}

A、

7654321

B、

1714171

C、

1711717

D、

7177171答案:A47、若有定义:inta[2][3],则对a数组的第i行j列元素地址的正确引用为______.

A、

*(a[i]+j)

B、

(a+i)

C、

*(a+j)

D、a[i]+j答案:D48、下面程序输出的结果是____.#include<stdio.h>voidmain(){inti,j,x=0;

staticinta[6]={1,2,3,4,5,6};

for(i=0,j=1;i<5;++i,j++)

x+=a[i]*a[j];

printf("%d\n",x);}A、数组a中首尾的对应元素的乘积B、B)

数组a中首尾的对应元素的乘积之和C、C)

数组a中相邻各元素的乘积D、D)

数组a中相邻各元素的乘积之和答案:D49、若有语句int*point,a=4;和point=&a;下面均代表地址的一组选项是__

___.A、a,point,*&aB、&*a,&a,*pointC、*&point,*point,&a

D、&a,&*point,point答案:D50、设有以下语句:intx=10;x+=3+x%(3),则x的值是.(

)A、11B、12C、14D、15答案:C51、下面程序的输出结果是(

)

#include<stdio.h>

voidmain()

{inty=9;

for(;y>0;y--)

{if(y%3==0)

{printf("%d",--y);

continue;}

}

}A、741B、852C、

963

D、187542答案:B52、以下程序的输出结果是________.#include<stdio.h>inta,b;voidfun(){a=100;

b=200;}voidmain(){inta=5,b=7;

fun();

printf("%d%d\n",a,b);

}A、A)100200

B、

B)57

C、

C)200100

D、

D)75答案:B53、1、MOV

A,#30H;

2.MOV

A,30H

3.PUSHAcc(

)4.

MOVA,@R0

5.MOVCA,@A+DPTR

6.MOVX

A,@DPTR(

)7.

DJNZ

R5,L0

8.ADD

A,R5

9.MOV

R3,A(

)10.CJNE

A,30H,LOOP1

11.MOV

C,30H

12.JBC

ACC.7,L0

)答案:立即寻址;直接寻址;直接寻址;间接寻址;基址加变址寻址;间接寻址;相对寻址;寄存器寻址;寄存器寻址;相对寻址;位寻址;位寻址;

下面4条语句正确的寻址方式分别为

1.MOVCA,@A+DPTR

2.ADD

A,R5

3.MOV

C,30H

4.JBC

ACC.7,L0

)A、基址加变址寻址,寄存器寻址,直接寻址,相对寻址B、基址加变址寻址,寄存器寻址,位寻址,直接寻址C、基址加变址寻址,寄存器寻址,位寻址,相对寻址D、间接寻址,寄存器寻址,位寻址,直接寻址答案:C下面四条语句正确的寻址方式分别为1.MOV

A,#30H;

2.MOV

A,30H

3.PUSHAcc(

)4.

MOVA,@R0

A、直接寻址,直接寻址,直接寻址,间接寻址B、立即寻址,直接寻址,直接寻址,间接寻址C、立即寻址,直接寻址,间接寻址,间接寻址D、立即寻址,直接寻址,直接寻址,变址寻址答案:B56、51单片机汇编语言一共有几种寻址方式A、8B、7C、6D、9答案:B57、

PUSH

#30H答案:错误58、

RLC

30H答案:错误59、

ADDC

A,OV答案:错误60、

CPL/A答案:错误61、

DIPAB答案:错误62、XCHD

A,30H答案:错误63、

PUSHR5答案:错误64、

XCH

A,#30H答案:错误65、

DJNZA,L0答案:错误66、

MOV#30H,A答案:错误67、XCHD

A,R5答案:错误68、

ADD

30H,A答案:错误69、MOVC

A,@DPTR答案:错误70、MOVA,@DPTR答案:错误71、MOV

R3,R2

答案:错误72、

JB

OV,L0答案:正确73、

CPL

A答案:正确74、

ANL

30H,53答案:错误75、

XCHDA,@R0答案:正确76、

XCH

A,R3答案:正确77、

MOVCB,@B+DPTR答案:错误78、

MOVX

A,@DPTR答案:正确79、MOV30H,40H答案:正确80、

MOVX

R5,@R0答案:错误81、DJNZ@R0,L0答案:错误82、MOV

A,@R2答案:错误83、

MOV

30H,#30H答案:正确84、

ORL

A,#56H答案:正确85、

JBCA,L0答案:错误86、PUSH

DPTR答案:正确87、

CJNEA,30H,L0答案:正确88、

POP

DPH答案:正确89、

DEC

A答案:正确90、

MULA,

B答案:错误91、51单片机存储器类型中data类型表示的地址范围是(

),Pdata类型表示的地址范围是(

),bdata类型表示的地址范围是(

).A.

20H~2FH

B.00H~FFH

C.00H~7FH答案:C;B;A;92、

51单片机_crol_()函数包含在下面哪个头文件中A、reg51.hB、intrins.hC、absacc.hD、math.h答案:B93、

51单片机中CBYTE()函数包含在下面哪个头文件中A、reg51.hB、intrins.hC、absacc.hD、math.h答案:C94、C51变量的存储种类有:A、寄存器类型B、基本类型C、静态型D、data答案:AC95、能进行静态存储的存储种类有()A、自动型B、外部型C、寄存器型D、静态型答案:BD96、单片机P1口P1.4、P1.5、P1.6和P1.7各接一只发光二极管,a=0时,P1.4对应的发光二极管点亮;a=1时,P1.5对应的发光二极管点亮;a=2时,P1.6对应的发光二极管点亮;a=3时,P1.7对应的发光二极管点亮;(设发光二极管低电平点亮,p1.0~p1.3为高电平)#include“reg51.h”voidmain(){

chara;

for(a=0:a<=3;a++)

{

switch(a)

{

case0:(

);break;

case1:(

);break;

case2:(

);break;

case3:(

);break;

}

}}答案:P1=0xef;P1=0xdf;P1=0xbf;P1=0x7f;97、

C51的数据类型有A、指针类型B、位类型C、无符号整型D、外部型答案:ABC98、51单片机特殊功能寄存器包含在下面哪个头文件中A、intrins.hB、absacc.hC、reg51.hD、math.h答案:C99、如图,编写交通灯程序,要求:东西红灯亮20秒,南北绿灯亮20秒;东西红灯亮3秒,南北黄灯亮3秒,东西绿灯亮20秒,南北红灯亮20秒;东西黄灯亮3秒,南北红灯亮3秒。

答案:•100、

74LS138当A,B,C三个引脚分别为1,1,0时,Y7~Y6的值为(

)A、F7HB、08HC、FEHD、02H答案:A101、直插式LED较长的脚是(

)极A、阴极B、阳极C、基极D、集电极答案:B102、有些贴片式发光二极管底部有T型标识,一横的一端为(

),

竖的一端为(

)。答案:阳极;阴极;103、

在LED灯的控制电路中,一般限流电阻的大小要根据LED灯的正向导通压降和工作电流确定,如,正向导通压降为2V,工作电流为10mA,则限流电阻应为(

)欧姆。A、300欧姆

B、200欧姆C、500欧姆D、100欧姆答案:A104、5050贴片式发光二极管(

)端为阴极答案:缺角;105、74HC245是驱动芯片,其中dir=1时代表()端输入,(

)端输出答案:A;B;106、静态显示方式,是指数码管显示某一字符时,相应的发光二极管(

)导通或截止,直到显示字符改变为止。答案:恒定;107、自己设计硬件电路,用两位数码管动态显示00~99;间隔大约1秒。答案:108、

LED数码管工作在静态显示方式下,共阳极LED显示器公共端(com)连接在一起接(

)A、地B、+5VC、I/O口D、P1答案:B109、

在动态显示方式中,将所有数码管的段选线并联在一起,由一个(

)控制,答案:I/O口;110、

共阴极数码管显示‘0’的段码是(

)A、0xc0B、0x3fC、0x6fD、0x00答案:B111、共阳极数码管显示0的段码为A、0xc0B、0xf9C、0x3fD、0x7f答案:A112、设计硬件电路,用以为数码管静态显示0~9.答案:113、共阳极数码管显示‘0’的段码是(

)A、0xc0B、0xf9C、0x37D、0xff答案:A114、LED数码管有(

)和(

)极两种结构答案:共阳;共阴;115、

LED点阵显示能显示(

)A、图形B、汉字C、数字D、特殊字符答案:ABCD116、用8*8点阵显示一个汉字需要(

)字节A、2B、4C、8D、16答案:C117、

用LED点阵显示字符、数字或图案时,一般采用(

)扫描方式,就是先使LED点阵的第一行有效,(

)送显示数据,延时几个几个毫秒。答案:行;列;118、设计硬件电路,用一个8*8点阵分别显示‘自BG18’答案:119、用LED点阵显示字符、数字或图案时,一般采用(

)扫描方式,就是先使LED点阵的第一行有效,(

)送显示数据,延时几个几个毫秒。答案:行;列;120、如果要在LCD1602第二行第一个位置显示字符,其命令码是()A、0x40B、0x80C、0xc0D、0xff答案:C121、LCD1602初始化设置一般为:()A、写指令0x38

显示模式设置(16×2显示,5×7点阵,8位数据接口)B、写指令0x08

显示关闭C、写指令0x01

显示清屏,数据指针清零D、写指令0x06

写一个字符后地址指针加答案:ABCD122、当LCD1602的命令码为0x20时,代表(

)A、4位数据线接口B、8位数据线接口C、单行显示D、5*7点阵显示答案:ACD123、LCD1602进行双行显示,5*7点阵,8位数据线的初始化命令为()A、0x10B、0x38C、0x02D、0x06答案:B124、LCD1602的RS=1时代表的是(

)A、读写LCD1602的命令信号B、读写LCD1602的数据信号C、对LCD1602读操作D、对LCD1602写操作答案:B125、当RS=L,R/W=H,E=高脉冲时代表(

)A、读LCD1602数据B、读LCD1602命令C、写LCD1602数据D、写LCD1602命令答案:B126、

LCD1602的引脚中VEE的作用是(

)A、提供备用电源B、调节背光和字体亮度对比度C、当VEE调节为接近+5V时,对比度最大D、当VEE调节为接近-5V时,对比度最大答案:B127、当LCD1602写一位数据后,光标右移的命令为()A、0x02B、0x38C、0x06D、0x10答案:C128、LCD1602复位的状态一般为:()A、清除屏幕显示;B、显示屏、光标、闪烁功能均关闭C、输入方式设置为整屏显示不移动,I/D=1D、功能设定为8位数据长度,单行显示,5×7点阵字符—显示屏、光标、闪烁功能均关闭答案:ABCD129、下面哪些语句是LCD1602写数据的初始化程序的必需语句。(

)A、lcdrs=1B、lcdrw=1C、lcdrw=0D、lcdrs=0答案:AC130、LCD1602的主要特性有(

)A、具有字符发生器ROM(CharacterGenerateROM,CGROM)B、显示容量为16×2个字符;C、具有80B的数据显示存储器(DDROM)D、能显示汉字答案:ABC131、

LCD1602的引脚中VSS应该接(

)A、+5VB、-5VC、GNDD、都可以答案:C132、LCD1602的引脚中VDD应该接(

)A、电源正极B、电源负极C、地D、都可以答案:A133、

下面哪些语句是LCD1602写命令的初始化程序的必需语句。(

)A、lcdrs=0B、lcdrw=0C、lcdE=1D、lcdrw=1答案:ABC134、矩阵键盘判断是否有键按下的步骤包括()A、先给行线都赋值高电平B、读行线值C、把列线赋值为高电平D、再读列线的值答案:ABCD135、非编码键盘具有的优点有()A、硬件电路简单B、硬件电路复杂C、使用灵活D、成本较低答案:ACD136、如图:一号键的键值是(

)A、0xddB、0xeeC、0xedD、0xde答案:B137、如图,P2口的低4位接矩阵按键的列,高4位接矩阵按键的行;正确的读行语句是(

)A、P2=0x0f;temp=P2;B、P2=0xf0;temp=P2;C、P2=0xf0;delay_ms(3);//延时3毫秒temp=P2;D、P2=0x0f;delay_ms(3);//延时3毫秒temp=P2;答案:C

解析:138、矩阵键盘检测是否有键按下的方式有()A、程序扫描B、定时扫描C、中断扫描D、其它方式答案:ABC139、如图,如果K1键被按下,P3口的值为(

)A、0x0eB、0xfeC、0xffD、0x01答案:B140、按键去抖的方法有()A、软件延时去抖B、滤波去抖电路C、双稳态消抖电路D、单稳态去抖电路答案:ABCD141、如图,P2口的低4位接矩阵按键的列,高4位接矩阵按键的行;判断有键按下的语句是(

)A、if(P2!=0xff)B、temp=P2;if(temp!=0xf0)C、if(P2!=0x00)D、temp=P2;if(temp!=0x00)答案:B142、选择T1的方式1用于定时,要求在P1.0脚上输出周期为6ms的方波,单片机采用12MHz晶振。答案:

#include<reg51.h>Sbit

P1_0=P1^0;voidmain(void){

P1_0=0;

//P1.0输出低电平

TMOD=0x01;

//T0方式0定时

TH0=62536/256;

//给定时器T0送初值

TL0=62536%256;

ET0=1;

//允许T0中断

EA=1;

//开中断

TR0=1;

while(1)

//等待定时中断}void

T0_service(void)

interrupt1

{

TR0=0;

//停止T0工作

P1_0=~P1_0;

TH0=62536/256;

//给定时器T0送初值

TL0=62536%256;

TR0=1;

//启动T0}143、

试设定定时器/计数器T0为计数方式2。当T0引脚出现负跳变时,向CPU申请中断,将P1.0端口的小灯亮灭状态改变一次。答案:#include<reg51.h>voidmain(){

TMOD=0x06;

/*设置定时器T0为方式2*/

TL0=0xFF;

TH0=0xFF;

EA=1;

/*总中断允许*/ET0=1;

/*定时器T0中断允许*/TR0=1while(1)

{;}

}

Void

T0_int(void)

interrupt1

/*定时器T0中断服务程序*/{

TH0=0xFF;

/*给T0装入16位初值,计数20000后,T0溢出*/

TL0=0xFF;

P1_0=~P1_0;

/*中断处理程序*/}144、从高到低顺序写出PSW的各个位(

),(

),(

),(

),(

),(

),—,(

)答案:Cy;AC;F0;RS1;RS0;OV;P;145、

在利用51单片机进行数据处理时,经常用到16进制,比如16进制0,可以用00H或0x00表示,那十进制的35用16进制表示为(

)A、0x22或22HB、0x23或23HC、0x24或24HD、0x35或35H答案:B146、若堆栈指针SP=30H,此时,若往堆栈里面存储一个字节的数据,此数据存放在哪个单元(

)A、29HB、30HC、31HD、32H答案:C147、51单片机一共(

)个引脚A、40B、44C、20D、144答案:A148、BCD码运算当出现非法码时需要进行(

)A、加10调整B、加16调整C、加6调整D、不需要进行调整答案:C149、程序指针PC是()位的。A、8B、32C、16D、4答案:C150、关于单片机的复位电路,描述正确的有(

)A、51单片机一般是高电平复位的,如果RST引脚维持2个机器周期时间长的高电平,那么内部寄存器将会被置为初始值,使得系统顺序启动。B、B.正常工作时,RST脚保持低电平C、复位电路可有可无D、复位电路有:手动复位、上电复位和混合复位电路答案:ABD151、单片机最小系统包括那几个部分?A、晶振电路B、电源电路C、复位电路D、存储器答案:ABC152、

CPU由(

)和(

)还有(

)组成A、运算部件B、控制部件C、存储器D、专用寄存器答案:ABD153、

关于可位寻址RAM,以下说法正确的有(

)A、51单片机内部有可位寻址的区域,20H—2FH这16个单元,每个单元又8位,一共是128位B、51单片机中,还有很多的特殊功能寄存器也是可以按位寻址的C、可位寻址区域,只能按位操作D、可位寻址的区域的位地址为:00H~FFH答案:ABD154、

简述51单片机的程序状态字寄存器各个位及各个位功能答案:CYACF0RS1RS0OV-P

CY(PSW.7):进位标志。在执行某些算术和逻辑指令时,它可以被硬件或软件置位或清零。CY在布尔处理机中被认为是位累加器,其重要性相当于一般中央处理器中的累加器A。

AC(PSW.6):辅助进位标志。当进行加法或减法操作而产生由低4位数向高4位数进位或借位时,AC将被硬件置位,否则就被清零。AC被用于BCD码调整,详见指令系统中的“DA

A”指令。 

F0(PSW.5):用户标志位。F0是用户定义的一个状态标记,用软件来使它置位或清零。该标志位状态一经设定,可由软件测试F0,以控制程序的流向。 

RS1、RS0(PSW.4、PSW.3):寄存器区选择控制位。可以用软件来置位或清零以确定工作寄存器区。RS1、RS0与寄存器区的对应关系见表1-4。表1-4

工作寄存器组选择RS1

RS0工作寄存器组0

00组(00H~07H)0

11组(08H~0FH)1

02组(10H~17H)1

13组(18H~1FH)

OV(PSW.2):溢出标志。带符号加减运算中,超出了累加器A所能表示的符号数有效范围(-128~+127)时,即产生溢出,OV=1,表明运算运算结果错误。如果OV=0,表明运算结果正确。P(PSW.0):奇偶标志。每个指令周期都由硬件来置位或清零,以表示累加器A中1的位数的奇偶数。若1的位数为奇数,P置1,否则P清零。P标志位对串行通信中的数据传输有重要的意义,在串行通信中常用奇偶校验的办法来检验数据传输的可靠性。在发送端可根据P的值对数据进行奇偶置位或清零。PSW.1:程序状态字的第1位,该位的含义没有定义,若用户要使用这一位,可直接使用PSW.1的位地址。155、1.内部RAM低128单元划分为哪三个主要部分?说明各部分的使用特点。答案:单片机的内部数据存储器结构如图1-8所示。片内数据存储器地址范围是00H~FFH,只有256个字节,这里仅介绍低128个字节区,高128个字节由于被特殊功能寄存器占有,故单独列出介绍。低128字节区主要分为三个区域:通用工作寄存器组区、可位寻址区和用户RAM区。156、

简述P3口各个位及各个位的功能。答案:157、1.51单片机内部有哪些主要的部件?各有什么主要功能?2.有符号数-1的原码、反码、补码的十进制数是何值?3.假设两个无符号数AL=80H,BL=D1H,AX=AL*BL;则AX=?(用十六进制数表示),如果两个数为有符号数时,结果又如何?4.BCD码调整的两个条件是什么?5.将十进制数60436转换成16进制数答案:158、分别用一条指令实现下列功能。(1)若CY=0,则转PROM1程序段执行。(2)若位寻址(30H)≠0,则将30H清零,并使程序转至PROM2。(3)若A中数据不等于200,则程序转至PROM3。(4)若A中数据不等于0,则程序转至PROM4。(5)将40H中数据减1,若差值不等于0,则程序转至PROM5。(6)若以R0中内容为地址的存储单元中的数据不等于10,则程序转至PROM6。(7)调用首地址为1000H的子程序。答案:JNC

PROM1JBC

30H,PROM2CJNE

A,#200H,PROM3CJNE

A,#00H,PROM4DJNZ

40H,PROM5CJNE

@R0,#10,PROM6LCALL

1000H159、1.画出单片机复位电路和时钟电路答案:160、AT89S51中断源有(

)A、4B、5C、6D、3答案:B161、外部中断1固定对应的中断入口地址为(

)。A、

0003H

B、

000BH

C、

0013H

D、001BH答案:C162、AT89S51的中断允许触发器内容为83H,CPU将响应的中断请求是(

)。

A、

INT0,INT1B、

T0,T1

C、

T1,串行接口D、

INT0,T0答案:D163、CPU响应中断后,必须用软件清除中断请求“1”标志的有(

)A、采用电平触发方式

B、采用边沿触发方式C、定时/计数器T0/T1中断

D、

串行口中断TI/RI答案:D164、void

函数名(void)

interruptn[usingm],当时外部中断1时,n应该选着(

)A、0B、1C、2D、3答案:C165、各中断源发出的中断请求信号,都会标记在AT89S51系统中的(

)。A、

TMOD

B、

TCON/SCON

C、

IE

D、

IP答案:B166、当CPU响应串行接口中断时,程序应转到(

)。A、

0003H

B、

0013H

C、

0023H

D、

0033H答案:C167、CPU在每个机器周期的S6期间查询每个中断请求的标志位,那么响应中断最短响应时间是(

)机器周期A、1B、2C、3D、4答案:C168、(

)不是单片机系统响应中断的必要条件。A、

TCON或SCON寄存器内的有关中断标志位为1B、

IE中断允许寄存器内的有关中断允许位置1C、

IP中断优先级寄存器内的有关位置1D、当前一条指令执行完答案:C169、当CPU响应外部中断0的中断请求后,程序计数器PC的内容是(

)。A、0003H

B、000BH

C、0013H

D、

001BH答案:A170、要使AT89S51能够响应定时器T1中断,串行接口中断,它的中断允许寄存器IE的内容应是(

)。

A、

98H

B、84HC、42HD、22H答案:C171、计算机在使用中断方式与外界交换信息时,保护现场的工作应该是(

)A、由CPU自动完成B、在中断响应中完成C、应由中断服务程序完成

D、在主程序中完成答案:C172、当外部中断0发出中断请求后,中断响应的条件是(

)。A、SETB

ET0

B、SETB

EX0

C、MOV

IE,#81H

D、MOV

IE,#61H

答案:C173、若AT89S51中断源都编程为同级,当它们同时申请中断时,CPU首先响应(

)。A、

INT1

B、

INT0

C、

T1

D、

T0答案:B174、AT89S51单片机可分为两个中断优先级别,各中断源的优先级别设定是利用寄存器(

)。A、

IE

B、

IP

C、

TCON

D、SCON答案:B175、执行

IE=0x03后,AT89S51将响应的中断是(

)。A、

1个

B、

2个

C、

3个

D、0个答案:D176、执行返回指令时,返回的断点是(

)A、调用指令的首地址

B、

调用指令的末地址

C、调用指令下一条指令的首地址

D、

返回指令的末地址答案:C177、对定时器控制寄存器TCON中的IT1和IT0位清0后,则外部中断请求信号方式为(

)。A、低电平有效

B、

高电平有效

C、脉冲上跳沿有效

D、

脉冲后沿负跳有效答案:A178、AT89S51单片机在同一级别里除串行口外,级别最低的中断源是(

)。A、外部中断1

B、定时器T0

C、定时器T1

D、串行口答案:C179、AT89S51的中断系统的相关控制有(

)。A、模式控制寄存器TMODB、中断允许控制寄存器IE

C、中断优先级寄存器IP

D、特殊功能寄存器TCON、SCON

E、中断顺序查询逻辑答案:ABCD180、AT89S51的中断源是(

)。A、外部输入中断源0(P3.2)

B、外部输入中断源1(P3.3)C、T0的溢出中断源

D、

串行口发送和/接收中断源

E、T1的溢出中断源答案:ABCDE181、AT89S51单片机控制寄存器TCON的作用是(

)等A、定时/计数器的启、停控制

B、

定时器的溢出标志

C、

外部中断请求标志D、确定中断优先级

E、选择外部中断触发方式答案:ABCE182、8051单片机上电复位后,内容为0的寄存器是(

)。A、P0

B、

P2

C、ACC

D、B

E、

TMOD、TCON答案:CDE183、CPU响应中断后的操作过程是()A、中断优先级查询,阻止后来的同级或低级中断请求B、保护断点,即把程序计数器PC的内容压入堆栈保存C、清除中断请求标志位D、调用中断函数并开始运行E、返回断点继续运行答案:ABCDE184、下述条件中,能封锁主机对中断的响应的条件是(

)。A、一个同级或高一级的中断正在处理时

B、当前周期不是执行当前指令的最后一个周期

C、当前执行的指令是RETI指令或对IE或IP寄存器进行读/写的指令D、当前执行的指令是一长跳转指令

E、一个低级的中断正在处理时答案:ABC185、CPU响应中断的条件包括(

)。A、现行指令运行结束

B、保护现场

C、有中断请求D、申请中断的中断源中断允许位为1

E、已开放CPU中断答案:ACDE186、在异步传送方式中,数据的传送率是240字符/秒,每个字符由一个起始位、八个数据位和一个停止位组成,则传送波特率为()A、2400B、1200C、1920D、4800答案:A187、下面关于串行通信工作方式的说法,错误的是()A、方式1的波特率由T1的溢出率产生B、方式为10位异步通信C、方式3为11位异步通信D、方式2的波特率不可调答案:D188、串行口的工作方式寄存器SCON的第0位是()A、SM0B、TIC、RID、IT0答案:C189、下面说法正确的是()A、串行通信方式0为8位同步移位寄存器方式,波特率是fosc/12B、串行通信方式1为11位异步寄存器的,波特率由T1溢出率决定C、串行通信方式1为10位异步通信,波特率由T1溢出率决定D、串行通信方式2为11位异步通信,波特率是fosc/32或fosc/64答案:ACD190、串行通信工作方式寄存器SCON各个位从高到低的顺序为(

)A、SM0

SM1SM2REN

RB8TB8RI

TIB、SM0

SM1SM2RENTB8RB8TI

RIC、SM2

SM1SM0REN

RB8TB8RI

TID、SM2

SM1SM0RENTB8RB8TI

RI答案:B191、在异步传送方式中,数据的传送率是240字符/秒,每个字符由一个起始位、八个数据位和一个停止位组成,则传送波特率为()A、2400B、1200C、1920D、4800答案:A192、关于串行口工作方式0的说法,正确的是()A、方式0时,TXD引脚发送同步时钟B、方式0时,RXD引脚发送同步时钟C、方式0时,RXD引脚发送和接收数据D、方式0时的波特率是不变的,其值为fosc/12答案:ACD

解析:193、下面关于串行通信工作方式的说法,正确的是()A、方式1为11为异步通信B、方式2为11位异步通信C、方式1的波特率是固定不变的D、方式2的波特率是根据T1的溢出率决定的答案:B194、串行通信工作方式寄存器SCON各个位从高到低的顺序为(

)A、SM0

SM1SM2REN

RB8TB8RI

TIB、SM0

SM1SM2RENTB8RB8TI

RIC、SM2

SM1SM0REN

RB8TB8RI

TID、SM2

SM1SM0RENTB8RB8TI

RI答案:B195、串行口的工作方式寄存器SCON的第0位是()A、SM0B、TIC、RID、IT0答案:C196、异步通信要求()A、发送设备和接收设备的时钟必须一致B、发送设备和接收设备的时钟可以不一致C、发送设备和接收设备必须同步D、必须发送同步字符答案:B197、关于PCON的说法正确的是()A、PCON是可以位寻址的寄存器B、串行通信在工作方式为0时可以设置SMOD=1C、串行通信在工作方式为1时可以设置SMOD=1D、串行通信在工作方式为2时不可以设置SMOD=1答案:C198、如果甲机要接收数据,且工作在工作方式1,则SCON正确的赋值为()A、40HB、50HC、10HD、00H答案:B199、关于TI的说法,下面正确的是()A、发送中断标识位B、硬件置位软件清零C、硬件置位硬件清零D、一帧数据发送完后由硬件置位答案:ABD200、关于TI的说法,下面正确的是()A、发送中断标识位B、硬件置位软件清零C、硬件置位硬件清零D、一帧数据发送完后由硬件置位答案:ABD201、下面关于串行通信工作方式的说法,正确的是()A、方式1为11为异步通信B、方式2为11位异步通信C、方式1的波特率是固定不变的D、方式2的波特率是根据T1的溢出率决定的答案:B202、关于串行口数据缓冲器SBUF的说法,正确的是()

A、发送方和接收方的SBUF地址相同B、发送方和接收方的SBUF相互独立C、MOV

A,SBUF语句是接收数据D、MOV

SBUF,A语句是接收数据答案:ABC203、异步通信一帧的信息下面哪个是正确的(

)A、0+5~8位数据位+1B、8位数据位C、0+5~8位数据位+奇偶校验位+1D、1+5~8位数据位+奇偶校验位+0答案:C204、关于PCON的说法正确的是()A、PCON是可以位寻址的寄存器B、串行通信在工作方式为0时可以设置SMOD=1C、串行通信在工作方式为1时可以设置SMOD=1D、串行通信在工作方式为2时不可以设置SMOD=1答案:C205、下面关于串行通信工作方式的说法,错误的是()A、方式1的波特率由T1的溢出率产生B、方式为10位异步通信C、方式3为11位异步通信D、方式2的波特率不可调答案:D206、如果甲机要接收数据,且工作在工作方式1,则SCON正确的赋值为()A、40HB、50HC、10HD、00H答案:B207、异步通信一帧的信息下面哪个是正确的(

)A、0+5~8位数据位+1B、8位数据位C、0+5~8位数据位+奇偶校验位+1D、1+5~8位数据位+奇偶校验位+0答案:C208、下面说法正确的是()A、串行通信方式0为8位同步移位寄存器方式,波特率是fosc/12B、串行通信方式1为11位异步寄存器的,波特率由T1溢出率决定C、串行通信方式1为10位异步通信,波特率由T1溢出率决定D、串行通信方式2为11位异步通信,波特率是fosc/32或fosc/64答案:ACD209、关于串行口工作方式0的说法,正确的是()A、方式0时,TXD引脚发送同步时钟B、方式0时,RXD引脚发送同步时钟C、方式0时,RXD引脚发送和接收数据D、方式0时的波特率是不变的,其值为fosc/12答案:ACD

解析:210、关于串行口数据缓冲器SBUF的说法,正确的是()

A、发送方和接收方的SBUF地址相同B、发送方和接收方的SBUF相互独立C、MOV

A,SBUF语句是接收数据D、MOV

SBUF,A语句是接收数据答案:ABC211、异步通信要求()A、发送设备和接收设备的时钟必须一致B、发送设备和接收设备的时钟可以不一致C、发送设备和接收设备必须同步D、必须发送同步字符答案:B212、简要说明中断和子程序的调用异同之处。答案:中断过程与调用一般函数过程的相似性:

两者都需要保护断点,都可实现多级嵌套等。中断过程与调用一般函数过程的差异性:1、子函数是程序设计者事先安排的(断点是明确的),而中断却是系统根据工作环境随机决定的(断点则是随机的)。2、主函数与调用函数之间具有主从关系,而主函数与中断函数之间则是平行关系;3、一般函数调用是纯粹软件处理过程,而中断函数调用却是需要软、硬件配合才能完成的过程。213、单片机CPU不响应中断的条件是什么?答案:1、一条指令没执行完2、单片机的CPU正在执行同级或更高级别的中断3、正在执行与中断相关的指令,必须该指令执行完再执行一条与中断无关的指令后才响应中断。214、从高到低按顺序写出TCON寄存器各位及各个位的功能。答案:215、响应中断的过程是什么?答案:置相应的优先级触发器状态为1,指明了CPU正在响应的中断优先权的级别,并通过它屏蔽所有同级或更低级的中断请求,允许更高级的中断请求。

(2)清相应的中断请求标志位为0(RI、TI和电平触发的外部中断除外)。

(3)保护断点。即将被中断程序的断点位置(PC的值)压人堆栈保存起来。

(4)根据中断向量找到对应的中断服务程序216、

地址指针DPTR与程序计数器PC的异同分析答案:①相同之处:两者都是与地址有关的、16位的寄存器。②不同之处:PC与程序存储器的地址有关;而DPTR与数据存储器的地址有关;PC是16位的,DPTR可以作为16位寄存器对待,也可以作为两个8位寄存器对待。另外PC是不可以访问的,有自己独特的变化方式,它的变化轨迹决定了程序执行的流程;DPTR是可以访问的,如MOVDPTR1,#XXXXH,INCDPTP1等。217、简述PSW各个位及各个位的功能答案:218、编写程序:在单片机外部数据存储器2000H开始的16个单元查找5的个数并存入2100单元.答案:#include<reg51.h>main(){unsignedcharxdata*p=0x2000;/*指针p指向2000H单元*/

intn=0,i;

for(i=0;i<16;i++)

{if(*p==5)n++;

/*若该单元内容为零,则n+1*/

p++;

/*指针指向下一单元

*/

}

p=0x2100;

/*指针p指向2100H单元*/

*p=n;

/*把个数放在2100H单元中*/}219、编程将1字节的二进制数转换成3个十进制数(BCD码)并存入20H开始的单元中答案:Void

main(){unsigned

char

*p=0x0020;Unsigned

char

number=123;

*p=number/100;

P++;*p=(number%100)/10;

P++;*p=(number%100)%10;}220、编写程序:将外部存储器的000BH和000CH单元的内容互换。答案:#include

<reg51.h>

Void

main()

{

unsignedchar*p,

c,x;

While(1)

{p=0x0b;

c=*p;

p++;

x=*p;

*p=c;

p--;

*p=x;}

}221、如图所示,使P1口接的LED小灯从上向下一次闪烁。答案:•#include<

reg52.h>•#include<intrins.h>•

•main()•{•unsignedcharcnt=0,temp;

unsignedinti=0,j;•while(1)•

{

temp=0xfe;•

for(i=0;i<8;i++)•

{•

P1=temp;•

for(j=0;j<=20000;j++);•

temp=_crol_(temp,1);

}••

}

}

解析:222、编程:用C51实现外部数据存储器2000H—20FFH的内容清零。答案:#include<absacc.h>#defineuintunsignedintvoidmain(){uintpoint=0x00;while(point<=0x7f){DBYTE[point]=0x00;point++;}}223、如图编写乙机接收程序:有甲和乙两个AT89C51单片机,甲单片机读入其P1口的开关状态后通过串行口发送到乙单片机,乙单片机将接收到的数据送其P1口,通过发光二极管显示。设波特率设为9600bps,波特率加倍,TL1=0xFA;答案:—#include<reg51.h>

voidmain()

{

unsigned

char

i=0;

TMOD=0x20;

//设置T1为定时方式2

TH1=0xfa;

//波特率9600bp

TL1=0xfa;

SCON=0x50;

//设置串口为方式1

允许接收

PCON=0x00;

TR1=1;

//启动T1

while(1)

{

while(RI==0);//查询串口是否接收到数据

RI=0;

//清除RI标志

i=SBUF;

//读取串口接收到的数据

P1=i;

//输出数据到P1口

}

}

解析:224、如图编写发送程序:有甲和乙两个AT89C51单片机,甲单片机读入其P1口的开关状态后通过串行口发送到乙单片机,乙单片机将接收到的数据送其P1口,通过发光二极管显示。设波特率设为9600bps,波特率加倍,TL1=0xFA;答案:

#include<reg51.h>

voidmain()

{

unsignedchari=0;

TMOD=0x20;//设置T1为定时方式2

TH1=0xfd;

//波特率9600bps

TL1=0xfd;

SCON=0x40;//设置串口为方式1不允许接收

PCON=0x00;

TR1=1;

//启动T1

P1=0xff;

while(1)

{

i=P1;

//读取P1的开关状态

SBUF=i;

//发送数据

while(TI==0);//查询串口是否发送完数据

TI=0;

//清除TI标志

}

}

解析:225、选择T1的方式1用于定时,要求在P1.0脚上输出周期为10ms的方波,单片机采用12MHz晶振。答案:#include<reg51.h>#include<INTRINS.H>Sbit

P1_0=P1^0;voidmain(void){

P1_0=0;

//P1.0输出低电平

TMOD=0x01;

//T0方式0定时

TH0=10536/256;

//给定时器T0送初值

TL0=10536%256;

ET0=1;

//允许T0中断

EA=1;

//开中断

TR0=1;

while(1)

//等待定时中断}void

T0_service(void)

interrupt1

{

//P1.0位置1

TR0=0;

P1_0=~P1_0;

//停止T0工作

TH0=60536/256;

//给定时器T0送初值

TL0=60536%256;

TR0=1;

//启动T0}226、试设定定时器/计数器T0为计数方式2。当T0引脚出现负跳变时,向CPU申请中断,将P1.0端口的小灯亮灭状态改变一次。答案:#include<AT89X51.h>voidmain(){

TMOD=0x06;

/*设置定时器T0为方式2*/

TL0=0xFF;

TH0=0xFF;

EA=1;

/*总中断允许*/ET0=1;

/*定时器T0中断允许*/TR0=1while(1)

{;}

}

Void

T0_int(void)

interrupt1

/*定时器T0中断服务程序*/{

TH0=0xFF;

/*给T0装入16位初值,计数20000后,T0溢出*/

TL0=0xFF;

P1_0=~P1_0;

/*中断处理程序*/}227、如图所示:单片机P1口的P1.0,P1.1接两个开关K1,K2。P1.4、P1.5、P1.6和P1.7各接一只发光二极管,通过按键K1、K2选择点亮VL1~VL4中的一个.答案:

#include<reg51.h>voidmain()

{unsignedchara;

while(1)

{a=P1;

a=a&0x03;//屏蔽高6位

switch(a)

{case0:P1=0xe3;break;

case1:P1=0xd3;break;

case2:P1=0xb3;break;

case3:P1=0x73;break;}

}

}228、编程实现应用DAC0832设计一个锯齿波信号发生器。P0口输出数据。答案:#include

<absacc.h>#include

<reg52.h>

#include<intrins.h>intnum;void

main(){while(1)

{for(num=0;num<255;num++)

P2=num;}}229、画出用一位数码管显示矩阵按键的电路图。答案:230、用Proteus画出四位共阳极数码管显示四位数据的原理图答案:

解析:231、用Proteus画出LC

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论