“单片机原理及应用”课程习题与解答参考教材:张毅刚主编,单片机原理及应用,普通高等教育“十五”国家级规划教材,高等教育出版社,2004年1月第一章1-3:单片机与普通计算机的不同之处在于其将()()和()三部分集成于一块芯片上。答:CPU、存储器、I/O口1-8:8051与8751的区别是:A、内部数据存储但也数目的不同B、内部数据存储器的类型不同C、内部程序存储器的类型不同D、内部的寄存器的数目不同答:C第二章2-4:在MCS-51单片机中,如果采用6MHz晶振,1个机器周期为()。答:2us。析:机器周期为振荡周期的1/6。2-6:内部RAM中,位地址为30H的位,该位所在字节的字节地址为()。答:26H2-7:若A中的内容为63H,那么,P标志位的值为()。答:0析:P为偶校验位,因为A中1的个数为偶数,所以P=0。2-8:判断下列说法是否正确:A、8031的CPU是由RAM和EPROM所组成。B、区分片外程序存储器和片外数据存储器的最可靠的方法是看其位于地址范围的低端还是高端。C、在MCS-51中,为使准双向的I/O口工作在输入方式,必须保证它被事先预置为1。D、PC可以看成使程序存储器的地址指针。答:错、错、对、对2-9:8031单片机复位后,R4所对应的存储单元的地址为(),因上电时PSW=()。这时当前的工作寄存器区是()组工作寄存器区。答:04H、00H、02-11:判断以下有关PC和DPTR的结论是否正确?A、DPTR是可以访问的,而PC不能访问。B、它们都是16位的存储器C、它们都有加1的功能。D、DPTR可以分为两个8位的寄存器使用,但PC不能。答:对、对、对、对2-13:使用8031芯片时,需将/EA引脚接()电平,因为其片内无()存储器。答:低、程序2-14:片内RAM低128个单元划分为哪3个主要部分?各部分的主要功能是什么?答:工作寄存器区、位寻址区、数据缓冲区2-15:判断下列说法是否正确A、程序计数器PC不能为用户编程时直接使用,因为它没有地址。B、内部RAM的位寻址区,只能供位寻址使用,而不能供字节寻址使用。C、8031共有21个特殊功能寄存器,它们的位都是可以用软件设置的,因此,是可以进行位寻址的。答:对、错、错2-16:PC的值是A、当前正在执行指令的前一条指令的地址B、当前正在执行指令的地址C、当前正在执行指令的下一条指令的地址D、控制器中指令寄存器的地址答:C2-17:通过堆栈操作实现子程序调用,首先就要把()的内容入栈,以进行断点保护。调用返回时,再进行出栈保护,把保护的断点送回到()。答:PC、PC2-19:MCS-51单片机程序存储器的寻址范围是由程序计数器PC的位数所决定的,因为MCS-51的PC是16位的,因此其寻址的范围为()KB。答:642-20:当MCS-51单片机运行出错或程序陷入死循环时,如何来摆脱困境?答:软件陷阱、复位2-21:判断下列说法是否正确?A、PC是1个不可寻址的特殊功能寄存器。B、单片机的主频越高,其运算速度越快。C、在MCS-51单片机中,1个机器周期等于1us。D、特殊功能寄存器SP内装的是栈顶首地址单元的内容。答:错、对、错、错2-22:如果手中仅有一台示波器,可通过观察哪个引脚的状态,来大致判断MCS-51单片机正在工作?答:ALE析:因为单片机正常工作时,ALE脚输出时钟频率为振荡周期的1/6。第三章3-1:判断下列指令的正误:1)MOV28H,@R22)DECDPTR3)INCDPTR4)CLRR05)CPLR56)MOVR0,R17)PUSHDPTR8)MOVF0,C9)MOVF0,ACC.310)MOVXA,@R111)MOVC,30H12)RLCR0答:错、错、对、错错、错、错、对错、对、对、错3-2:判断下列说法是否正确。A、立即寻址方式是被操作的数据本身在指令中,而不是它的地址在指令中。B、指令周期是执行一条指令的时间。C、指令中直接给出的操作数称为直接寻址。答:对、对、错3-3:在基址加变址寻址方式中,以()作变址寄存器,以()或()作基址寄存器。答:累加器A,DPTR、PC3-7:指令格式是由()和()所组成,也可能仅由()组成。答:操作码、操作数、操作码3-8:假定累加器A中的内容为30H,执行指令1000H:MOVCA,@A+PC后,把程序存储器()单元的内容送入累加器A中。答:1031H3-9:在MCS-51中,PC和DPTR都用于提供地址,但PC是为访问()存储器提供地址,而DPTR是为访问()存储器提供地址。答:程序、数据3-10:在寄存器间接寻址方式中,其“间接”体现在指令中寄存器的内容不是操作数,而是操作数的()。答:地址3-11:下列程序段的功能是什么?PUSHAPUSHBPOPAPOPB答:交换A、B的内容3-12:已知程序执行前有A=02H,SP=52H,(51H)=FFH,(52H)=FFH。下述程序执行后:POPDPHPOPDPLMOVDPTR,#4000HRLAMOVB,AMOVCA,@A+DPTRPUSHAMOVA,BINCAMOVCA,@A+DPTRPUSHARETORG4000HDB10H,80H,30H,50H,30H,50H请问:A=(),SP=(),(51H)=(),(52H)=(),PC=()。答:A=50H,SP=50H,(51H)=30H,(52H)=50H,PC=5030H3-14:假定A=83H,(R0)=17H,(17H)=34H,执行以下指令:ANLA,#17HORL17H,AXRLA,@R0CPLA后,A的内容为()。答:0CBH3-15:假定A=55H,R3=0AAH,在执行指令ANLA,R3后,A=(),R3=()。答:0、0AAH3-16:如果DPTR=507BH,SP=32H,(30H)=50H,(31H)=5FH,(32H)=3CH,则执行下列指令后:POPDPHPOPDPLPOPSP则:DPH=(),DPL=(),SP=()答:DPH=3CH,DPL=5FH,SP=4FH3-17:假定,SP=60H,A=30H,B=70H,执行下列指令:PUSHAPUSHB后,SP的内容为(),61H单元的内容为(),62H单元的内容为()。答:62H,30H,70H第四章4-6:试编写1个程序,将内部RAM中45H单元的高4位清0,低4位置1。答:MOVA,45HANLA,#0FHORLA,#0FHMOV45H,A4-7:已知程序执行前有A=02H,SP=42H,(41H)=FFH,(42H)=FFH。下述程序执行后:POPDPHPOPDPLMOVDPTR,#3000HRLAMOVB,AMOVCA,@A+DPTRPUSHAMOVA,BINCAMOVCA,@A+DPTRPUSHARETORG3000HDB10H,80H,30H,80H,50H,80H请问:A=(),SP=(),(51H)=(),(52H)=(),PC=()。答:A=80H,SP=40H,(51H)=50H,(52H)=80H,PC=8050H4-8:计算下面子程序中指令的偏移量和程序执行的时间(晶振频率为12MHz)。MOVR3,#15H;1个机器周期DL1:MOVR4,#255;1个机器周期DL2:MOVP1,R3;2个机器周期DJNZR4,DL2;2个机器周期DJNZR3,DL1;2个机器周期RET;2个机器周期答:15348us析:((2+2)×255+1+2)×15+1+2=15348us4-9:假定A=83H,(R0)=17H,(17H)=34H,执行以下指令:ANLA,#17HORL17H,AXRLA,@R0CPLA后,A的内容为()。答:0CBH4-10:试编写程序,查找在内部RAM的30H~50H单元中是否有0AAH这一数据。若有,则将51H单元置为“01H”;若未找到,则将51H单元置为“00H”。答:START:MOVR0,#30HMOVR2,#20HLOOP:MOVA,@R0CJNEA,#0AAH,NEXTMOV51H,#01HLJMPEXITNEXT:INCR0DJNZR2,LOOPMOV51H,#00HEXIT:RET4-11:试编写程序,查找在内部RAM的20H~40H单元中出现“00H”这一数据的次数。并将查找到的结果存入41H单元。答:START:MOV41H,#0MOVR0,#20HMOVR2,#20HLOOP:MOVA,@R0JNZNEXTINC41HNEXT:INCR0DJNZR2,LOOPRET4-12:若SP=60H,标号LABEL所在的地址为3456H。LCALL指令的地址为2000H,执行指令如下:2000HLCALLLABEL后,堆栈指针SP和堆栈内容发生了什么变化?PC的值等于什么?如果将指令LCALL直接换成ACALL是否可以?如果换成ACALL指令,可调用的地址范围是什么?答:1)SP=SP+1=61H(61H)=PC的低字节=03HSP=SP+1=62H(62H)=PC的高字节=20H2)PC=3456H3)可以4)2KB=2048Byte第五章5-4:外部中断1所对应的中断入口地址为()H。答:0013H5-5:下列说法错误的是:A、各中断发出的中断请求信号,都会标记在MCS-51系统的IE寄存器中。B、各中断发出的中断请求信号,都会标记在MCS-51系统的TMOD寄存器中。C、各中断发出的中断请求信号,都会标记在MCS-51系统的IP寄存器中。D、各中断发出的中断请求信号,都会标记在MCS-51系统的TCON与SCON寄存器中。答:ABC5-7:中断查询确认后,在下列各种8031单片机运行情况中,能立即进行响应的是:A、当前正在执行高优先级中断处理B、当前正在执行RETI指令C、当前指令是DIV指令,且正处于取指令的机器周期D、当前指令是MOVA,R3答:D5-8:8031单片机响应中断后,产生长调用指令LCALL,执行该指令的过程包括:首先把()的内容压入堆栈,以进行断点保护,然后把长调用指令的16位地址送(),使程序执行转向()中的中断地址区。答:PC、PC、程序存储器5-9:编写出外部中断1为跳沿触发的中断初始化程序。答:SETBIT1SETBEX1SETBEA5-10:在MCS-51中,需要外加电路实现中断撤除的是:A、定时中断B、脉冲方式的外部中断C、外部串行中断D、电平方式的外部中断答:D5-12:下列说法正确的是:A、同一级别的中断请求按时间的先后顺序响应。B、同一时间同一级别的多中断请求,将形成阻塞,系统无法响应。C、低优先级中断请求不能中断高优先级中断请求,但是高优先级中断请求能中断低优先级中断请求。D、同级中断不能嵌套。答:ACD5-13:中断服务子程序返回指令RETI和普通子程序返回指令RET有什么区别?答:RETI指令在返回的同时清除相应的优先级触发器,以允许下次中断5-14:某系统有3个外部中断源1、2、3,当某一中断源变为低电平时,便要求CPU进行处理,它们的优先处理次序由高到低依次为3、2、1,中断处理程序的入口地址分别为1000H,1100H,1200H。试编写主程序及中断服务程序(转至相应的中断处理程序的入口即可)。答:若仅在/INT0引脚接3个外部中断源,电路如图5-10(P115)ORG0000HLJMPMAINORG0003HLJMPINT_EX0ORG0030HMAIN:CLRIT0;采用低电平有效中断SETBEX0;允许外部中断0SETBEA;插入用户程序WAIT:MOVPCON,#01H;单片机进入休眠方式等待中断NOPLJMPWAIT;以下为外部中断0服务子程序INT_EX0:JNBP1.0,NEXT1;判断是不是1号中断LJMPINT_IR1;跳转到1号中断处理程序NEXT1:JNBP1.1,NEXT2;判断是不是2号中断LJMPINT_IR2;跳转到2号中断处理程序NEXT2:LJMPINT_IR3;跳转到3号中断处理程序ORG1000HINT_IR1:;插入相应中断处理程序RE