还剩12页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
MCS-51单片机软硬件的基本概念练习题
1、选择题(第三章)
1.在单片机CPU中,PSW中的Cy、AC、OV和P是反映()参与运算的状态(A)DPTR(B)B(C)A(D)SP
2.在CPU内部,反映程序运行状态或反映运算结果的特殊功能寄存器是()(A)PC(B)PSW(C)A(D)SP
3.指令“CJNEA,#08H,LOOP”影响PSW的()位(A)AC(B)OV(C)Cy(D)RS
14.下列指令中正确的是()(A)MOVP
2.1A(B)JBCTF0L1(C)MOVXB@DPTR(D)MOVA@R
35.SJMP跳转范围是()(A)64KB(B)容量为2KB的页内转移(C)2KB(D)-128~+
1276.LJMP跳转范围是()(A)64KB(B)容量为2KB的页内转移(C)2KB(D)-128~+
1277.关于AJMP指令的正确描述是()(A)AJMP的寻址范围是2KB(B)只有子程序程度不超过2KB,在子程序内容AJMP都可以正确使用(C)AJMP当前PC值到目标地址不超过2KB都可以正确转移(D)AJMP当前PC值的高5位与目标地址的高5位必须相同才能正确转移
8.SJMP$指令的作用是()(A)等待中断(B)死循环(C)和暂停指令作用一样(D)结束程序执行
9.条件转移指令的范围是()(A)64KB(B)容量为2KB的页内转移(C)2KB(D)-128~+
12710.MCS-51单片机执行时间最长一条指令需要()机器周期(A)1(B)4(C)2(D)
811.下列指令中正确的是()(A)CJNEA,R0,NEXT(B)CJNEA,@R0,NEXT(C)CJNEA,#40,NEXT(D)CJNER2,30H,NEXT
12.下列指令中正确的是()(A)MOVR1,R3(B)DECDPTR(C)MULA,30H(D)MOVTL0,R
713.下列指令中错误的是()(A)CLRA(B)CLR27H.5(C)CLRR7(D)CLRC
14.下列指令中不能导致内部RAM30H单元清零的是()(A)CLR30H(B)MOV30H#0(C)MOV@R1#0;R1=30H(D)ANL30H#
015.在MCS-51系列单片机中,对后128字节的内部RAM可用的寻址方式是()(A)寄存器寻址(B)直接寻址(C)立即寻址(D)寄存器间接寻址
16.下列指令中不能导致内部RAM30H单元所有位置1的是()(A)SETB30H(B)MOV30H#0FFH(C)MOV@R1#0FFH;R1=30H(D)ORL30H#0FFH
17.MCS-51单片机扩展I/O口与()统一编址(A)I/O口独立编址(B)与程序存储器统一编址(C)与外部数据存储器统一编址(D)与内部数据存储器统一编址
18.当ALE信号有效时,P0口输出的是()(A)低8位地址(B)累加器的8位数据(C)PC的16位值(D)DPTR的16为值
19.当WR信号有效时,P0口传输的是写到()的信息(A)外部程序存储器(B)内部程序存储器(C)外部数据存储器(D)内部数据存储器
20.正确的基址+变址间接寻址指令是()(A)MOVA,@A+DPTR(B)MOVXA@A+PC(C)SJMP@A+DPTR(D)JMP@A+DPTR
21.会导致PC值改变的指令是()(A)MOVCA@A+DPTR(B)MOVCA@A+PC(C)JMP@A+PC(D)JMP@A+DPTR
22.8051单片机中,对特殊功能寄存器的寻址只能使用()寻址方式(A)寄存器寻址(B)直接寻址(C)立即寻址(D)寄存器间接寻址
23.当PSEN信号有效时,P0口读进的是来自于()的信息(A)程序存储器(B)外部数据存储器(C)内部数据存储器(D)I/O口
24.当RD信号有效时,P0口传输的是来自于()的信息(A)外部程序存储器(B)内部程序存储器(C)外部数据存储器(D)内部数据存储器
25.当晶振频率为12MHz,把T1配置成定时器时,它的最短定时为()(A)1us(B)256us(C)8192us(D)65536us
26.当中断被响应后,在下面的中断请求标志中不需要软件复位的是()(A)TI(B)RI(C)IE1(D)TF
127.要进行多机通讯必须将()置1(A)TB8(B)RB8(C)SM2(D)REN
28.下列提法中正确的是()(A)T
0、T1都可作为串行通讯口的波特率发生器(B)T
0、T1的工作模式都有4种(C)TR
0、TR1可以分别控制T
0、T1的计数起停(D)T
0、T1对相应输入引脚上的脉冲进行计数时就是计数器
29.把T1配置成模式
1、定时器方式,为实现最长定时,它的时间常数初值为()(A)0(B)1(C)65535(D)
6553630.当中断被响应后,在下面的中断请求标志中必须要由发出中断请求设备复位的是()(A)TI(B)RI(C)IE1(D)TF1
二、简述题
1.简述内部RAM功能分区,说明各部分的使用特点(习题2-6)
2.如何选择MCS-51单片机的当前工作寄存器组?(习题2-7)
3.堆栈有哪些功能?堆栈指针SP的作用是什么?在具体应用设计时,为什么要对SP重新赋值?(习题2-8)
4.什么是指令周期、机器周期、时钟周期?如何计算机器周期?晶振频率为12M时,计算时钟周期、机器周期(习题2-9)
5.简述MCS-51单片机的位寻址空间(习题2-11)
1.DAA指令的作用是什么?它跟在哪些指令后面使用?(习题3-20)
6.“LJMPPROG”和“LCALLPROG”的区别是什么?(习题3-21)
7.MCS-51单片机提供了哪几种中断源?在中断管理上有什么特点?各个中断源优先级如何确定?(习题4-1)
8.MCS-51单片机响应中断的条件是什么?CPU响应中断时,不同的中断源的中断处理程序的入口地址各是多少?(习题4-2)
9.简述MCS-51单片机的中断响应过程(习题4-3)
10.
三、掌握下列每条指令中出现的操作数的寻址方式
1.MOVXA,@DPTR
2.JB0DONE
3.XCHDA@R
04.DJNZ30HDO
5.MOVCA,@A+PC
6.MOVA,@R
07.MOVP1,#0F0H
8.SJMPNEXT
9.SJMP$
10.PUSHDPH
11.POPACC
12.MOVCA@A+DPTR
13.CJNE@R0#0DHGO
414.ANL40H#40H
15.RRCA
16.
四、程序设计题
1.求16位补码数的绝对值,补码存放在data和data+1单元中(低字节在前),并将结果存放在原单元(习题7-3)
2.已知在单片机内部RAM中,从20H单元开始存储50个8位有符号数据,请编写一个程序统计其中正数的个数,并将统计结果存放在70H单元(习题7-6)
3.从内部RAM的20H单元开始存一批带符号的8为二进制数据,数据长度存放在1FH单元中,请统计其中大于
0、小于
0、等于0的数据个数,并把统计结果分别存放在ONE、TWO、THREE单元(习题7-7)
4.某一应用系统数据缓冲区开辟在外部RAM中,用于存放单字节数据,缓冲区从BUFFER单元开始,长度100个单元,为了某种统计需要,要求把缓冲区的非负数存储在单元地址为BLOCK1开始的区域,其余数据存储在单元地址BLOCK2开始的区域,这两个缓冲区也设置在外部RAM中(习题7-14)
5.用移位计算y=10x+100,其中x为双字节无符号二进制数,运算数据的存放地址自定(作业题)
6.计算y=x/16,x为16位无符号二进制数,y位三字节数据(2字节存放商的整数部分、1字节存放商的小数部分),运算数据的存放地址自定(作业题)
五、简单应用设计
1.每隔1s读一次P
1.0,如果所读的状态为1,内部RAM的11H单元加1,如果所读的状态为0,则内部RAM的10H单元加1假定单片机的晶振频率为12MHz,请用软硬件结合的方法定时(习题5-5)
2.航标灯控制器如下图所示,要求当黑夜降临时,航标灯自动启动,不停地亮2s,灭2s,以指示航向,当白天来临时,航标灯自动熄灭,不发光采用外部事件中断和定时器中断来实现说明系统工作原理并编写相关程序(习题5-6)
3.一个简单计数器的电路如下图所示,要求每按一次S健,计数器计数一次,计数值送P1口显示,采用单只数码管显示,计数16次后从0开始(习题9-3)
4.采用8051和DAC0832设计一个简单的应用系统,输出周期为
5.12s的三角波(晶振频率12MHz),DAC0832口地址为7FFFH(习题9-10)
5.在检测系统中,通常采用平均值滤波的方法来消除检测数据的随机干扰,即连续采集多次,取平均值作为测量值下图为8051单片机与SPI串行接口的A/D转换器TLC549的接口示意图,请编写一程序对输入模拟量采样8次,把它们的平均值存放在30H单元(实验+习题9-6)
6.下图为8051单片机与SPI串行A/D转换器TLC549的接口示意图,编写一程序每隔50ms对输入模拟量采样一次,并把采样值存放在内部RAM40H单元中,系统晶振频率12MHz(实验+习题9-7);1STIMING;T0interruptonceevery50ms;1s=20*50ms;bufferT0CNTcountstheT0interruptwhenT0CNT=201sisgone;50mstimeconstantT0mode1timernogate@12MHz;65536-50ms/1us=15536=3CB0HT0CNTEQU30HCOUNTER0EQU10HCOUNTER1EQU11HORG0LJMPSTARTORG000BHLJMPT0INT_ISRORG0020HSTART:MOVSP#6FHCLREAMOVTMOD#11HMOVTH0#3CHMOVTL0#0B0HMOVT0CNT#20MOVCOUNTER0#0MOVCOUNTER1#0SETBET0SETBTR0SETBEASJMP$T0INT_ISR:MOVTH0#3CHMOVTL0#0B0HDJNZT0CNTGOMOVT0CNT#20JBP
1.0DOINCCOUNTER0SJMPGODO:INCCOUNTER1GO:RETIEND;1STIMING;T0interruptonceevery50ms;1s=20*50ms;bufferT0CNTcountstheT0interruptwhenT0CNT=201sisgone;50mstimeconstantT0mode1timernogate@12MHz;65536-50ms/1us=15536=3CB0HT0CNTEQU30HCOUNTER0EQU10HCOUNTER1EQU11HORG0LJMPSTARTORG000BHLJMPT0INT_ISRORG0020HSTART:MOVSP#6FHCLREAMOVTMOD#11HMOVTH0#3CHMOVTL0#0B0HMOVT0CNT#20MOVCOUNTER0#0MOVCOUNTER1#0SETBET0SETBTR0SETBEASJMP$T0INT_ISR:MOVTH0#3CHMOVTL0#0B0HDJNZT0CNTGOMOVT0CNT#20JBP
1.0DOINCCOUNTER0SJMPGODO:INCCOUNTER1GO:RETIENDTMPCNTEQU30HORG0LJMPMAINORG0013HLJMPINT1_ISRORG0020HMAIN:MOVSP#6FHCLREAMOVTMPCNT#0LCALLDISPLAYSETBEX1SETBIT1SETBEASJMP$INT1_ISR:LCALLD10MSJBP
3.3DONEINCTMPCNTMOVATMPCNTCJNEA#10HCHKCHK:JCGOMOVTMPCNT#0GO:LCALLDISPLAYDONE:RETID10MS:MOVR7#0;DELAYABOUT10MS@12MHZMOVR6#20DELAY:DJNZR7$DJNZR6DELAYRETDISPLAY:MOVATMPCNTADDA#3MOVCA@A+PCMOVP1ARETISEGTAB:DB0C0H0F9H0A4H0B0H99H92H82H0F8H;01234567DB80H90H0C8H83H0C6H0A1H86H8CH;89ABCDEFEND;三角波的周期
5.12秒;DAC0832为8位D/A输入的数字量范围:00H~FFH也就是有256种输出电压;让DAC0832的输入数字量先从00H开始到FFH再从FFH开始到00H变化数字量一次只只变化1共有512种变化;每次变化的时间间隔10ms就可以在DAC0832的模拟输出端形成三角波.;用定时器T0每10ms中断一次每次中断就对DAC0832进行一次输出;模式1定时器方式无门控时间常数:65536-10ms/1us=55536=D8F0HDAC0832EQU7FFFHTMP_TRIEQU30HOUTFLAGEQU20H.0STATUSEQU20H.1ORG0LJMPMAINORG000BHLJMPT0_INTORG0020HMAIN:MOVSP#6FHCLREAMOVTMOD#11HMOVTH0#0D8HMOVTL0#0F0HMOVDPTR#DAC0832MOVTMP_TRI#0MOVATMP_TRI;MOVX@DPTRAMOVP1ACLROUTFLAGCLRSTATUSSETBET0SETBTR0SETBEACHK:JBCOUTFLAGOUTSJMPCHKOUT:JBSTATUSOUT1MOVATMP_TRI;MOVX@DPTRAMOVP1AINCAMOVTMP_TRIACJNEA#0CHKMOVTMP_TRI#0FFHSETBSTATUSSJMPCHKOUT1:MOVATMP_TRI;MOVX@DPTRAMOVP1ADECAMOVTMP_TRIACJNEA#0FFHCHKCLRSTATUSMOVTMP_TRI#0SJMPCHKT0_INT:MOVTH0#0D8HMOVTL0#0F0HSETBOUTFLAGRETIEND//使用的接口/CS=P
1.2DAT=P
1.1CLK=P
1.0#includeREG
51.h#includeintrins.h#includeabsacc.h#defineucharunsignedchar//定义TLC549串行总线操作端口sbitCLK=P1^0;sbitDAT=P1^1;sbitCS=P1^2;ucharbdataADCdata;sbitADbit=ADCdata^0;ucharAD_DATA_at_0x30;//定义A/D转换数据变量/*****************************************************函数名称:TLC549ADC**函数功能:读取上一次A/D转换的数据启动下一次A/D转换****************************************************/ucharTLC549ADCvoid{uchari;CLK=0;DAT=1;CS=0;fori=0;i8;i++{CLK=1;_nop_;_nop_;ADCdata=1;ADbit=DAT;CLK=0;_nop_;}returnADCdata;}voidmain{uchariTC;unsignedinttmpData;TLC549ADC;//启动一次A/D转换tmpData=0;fori=0;i8;i++{TC=10;//delaymorethan17uSwhile--TC;tmpData+=TLC549ADC;}AD_DATA=tmpData3;while1;}//使用的接口/CS=P
1.2DAT=P
1.1CLK=P
1.0#includeREG
51.h#includeintrins.h#includeabsacc.h#defineucharunsignedcharucharTLC549ADCvoid;//定义TLC549串行总线操作端口sbitCLK=P1^0;sbitDAT=P1^1;sbitCS=P1^2;ucharbdataADCdata;sbitADbit=ADCdata^0;ucharAD_DATA_at_0x40;//定义A/D转换数据变量voidmain{TMOD=0x11;//T0mode1timernogateTH0=0x3C;//50mstimeconstant@12MHzTL0=0xB0;ET0=1;TR0=1;EA=1;while1;}voidT0_isrvoidinterrupt1{TH0=0x3C;TL0=0xB0;TLC549ADC;//启动一次A/D转换{ucharTC=10;//delaymorethan17uSwhile--TC;AD_DATA=TLC549ADC;}}/*****************************************************函数名称:TLC549ADC**函数功能:读取上一次A/D转换的数据启动下一次A/D转换****************************************************/ucharTLC549ADCvoid{uchari;CLK=0;DAT=1;CS=0;fori=0;i8;i++{CLK=1;_nop_;_nop_;ADCdata=1;ADbit=DAT;CLK=0;_nop_;}returnADCdata;}BUFEQU30H;TWOBYTSLOWBYTAHEADORG0MOVABUF+1JNBACC.7DONECPLAMOVBUF+1AMOVABUF+0CPLAADDA#1MOVBUF+0ACLRAADDCABUF+1MOVBUF+1ADONE:SJMP$ENDBUF_ADDREQU20HLENGTHEQU50POSITIVEEQU70HORG0MOVR7#LENGTHMOVR0#BUF_ADDRMOVPOSITIVE#0LOOP:MOVA@R0JBACC.7DOJZDOINCPOSITIVEDO:INCR0DJNZR7LOOPSJMP$ENDLENEQU1FHBUFEQU20HONEEQU60H;POSITIVECOUNTERTWOEQU61H;NEGATIVECOUNTERTHREEEQU62H;ZEROCOUNTERORG0MOVONE#0MOVTWO#0MOVTHREE#0MOVR0#BUFMOVR7LENDONE:MOVA@R0JBACC.7NEGATIVEJNZPOSITIVEINCTHREESJMPDOPOSITIVE:INCONESJMPDONEGATIVE:INCTWODO:INCR0DJNZR7DONESJMP$ENDBUFFEREQU2000HBLOCK1EQU3000H;POSITIVENUMBERANDZEROBLOCK2EQU3080H;NEGATIVENUMBERLENGTHEQU100ORG0MOVP2#HIGHBLOCK1MOVR0#LOWBLOCK1;R0POSITIVEZEROPOINTERMOVR1#LOWBLOCK2;NEGATIVEPOINTERMOVDPTR#BUFFERMOVR7#LENGTHLOOP:MOVXA@DPTRJBACC.7NEGATIVEMOVX@R0AINCR0SJMPDONEGATIVE:MOVX@R1AINCR1DO:INCDPTRDJNZR7LOOPSJMP$ENDXEQU30H;TWOBYTSLOWAHEADYEQU32H;TREEEBYTSLOWAHEADTMPEQU40H;3BYUTSORG0MOVTMP+0X+0MOVTMP+1X+1MOVTMP+2#0MOVR0#TMPLCALLSHIFT_LEFTMOVY+0TMP+0MOVY+1TMP+1MOVY+2TMP+2MOVR0#TMPLCALLSHIFT_LEFTMOVR0#TMPLCALLSHIFT_LEFTMOVR6#3MOVR0#YMOVR1#TMPCLRCDO:MOVA@R0ADDCA@R1MOV@R0AINCR0INCR1DJNZR6DOMOVAY+0ADDA#100MOVY+0AMOVAY+1ADDCA#0MOVY+1AMOVAY+2ADDCA#0MOVY+2ASJMP$SHIFT_LEFT:;3BYTSSHIFT-LEFTONCEMOVR6#3;INPUT:3BYTSLOWAHEADSTARTADDRESSINR0CLRC;OUTPUT:RESULT3BYTSLOWAHEADINORIGINALUNITSS1:MOVA@R0RLCAMOV@R0AINCR0DJNZR6S1RETENDXEQU30H;2BYTSLOWAHEADYEQU40H;3BYTSINTEGRALINY+1Y+2LOWAHEADPOINTINY+0TMPEQU50H;3BYTSORG0MOVTMP+0#0MOVTMP+1X+0MOVTMP+2X+1MOVR7#4DO:MOVR0#TMP+2LCALLSHIFT_RIGHTDJNZR7DOMOVY+0TMP+0MOVY+1TMP+1MOVY+2TMP+2SJMP$SHIFT_RIGHT:MOVR6#3CLRCRE:MOVA@R0RRCAMOV@R0ADECR0DJNZR6RERETENDVref+Vref-ANINGNDVCCDAT/CSCLKTLC549VCCGNDVrefP
1.0P
1.1P
1.28051模拟量Vref+Vref-ANINGNDVCCDAT/CSCLKTLC549VCCGNDVrefP
1.0P
1.1P
1.28051模拟量。