第1章单片机概述1.答:微处理器、微处理机和CPU它们都是中央处理器的不同称谓,而微计算机、单片机它们都是指一个完整的计算机系统,单片机是集成在一个芯片上的用于测控目的的单片微计算机。2.答:微控制器,嵌入式控制器3.答:CPU、存储器、I/O口4.略5.答:单片机根据其基本操作处理的位数可分为如下几种类型:4位机、8位机、16位机、32位机。6.答:8031、8051和8071。它们的差别是在片内程序存储器上。8031片内无程序存储器,8051片内有4K字节的程序存储器ROM,而8751片内有集成有4K字节的程序存储器EPROM。7.答:“MCS”是Intel公司生产的单片机的系列符号,MCS-51系列单片机是指Intel公司生的产品:8031、8051和8071。而80C51系列单片机是指世界各个厂家生产的所有的与MCS-51系列单片机中的8051的内核结构、指令系统兼容的单片机。8.答:C9.答:B10.略第2章MCS-51单片机的硬件结构1.答:89C51单片机的片内都集成了如下功能部件:(1)1个微处理器(CPU);(2)128个数据存储器(RAM)单元;(3)4KFlash程序存储器;(4)4个8位可编程并行I/O口(P0口、P1口、P2口、P3口);(5)1个全双工串行口;(6)2个16位定时器/计数器;(7)一个中断系统,5个中断源,2个优先级;(8)21个特殊功能寄存器(SFR)。2.答:当EA脚为高电平时,单片机读片内程序存储器(4K字节Flash),但在PC值超过0FFFH(即超出4K字节地址范围)时,将自动转向读外部程序存储器内的程序;当EA脚为低电平时,对程序存储器的读操作只限定在外部程序存储器,地址为0000H~FFFFH,片内的4K字节Flash程序存储器不起作用。3.答:1个机器周期等于12个时钟振荡周期。4.答:2µs5.答:64K程序存储器空间中有5个特殊单元分别对应于5个中断源的中断服务程序的入口地址,见下表:表5个中断源的中断入口地址入口地址中断源0003H外部中断0(INT0)000BH定时器0(T0)0013H外部中断1(1INT)001BH定时器1(T1)0023H串行口6.答:26H。7.答:P标志位的值为0。8.答:(A)错;(B)错;(C)对;(D)对。9.答:04H;00H;0组。10.答:CPU完成一个基本操作所需要的时间称为机器周期;89C51的一个机器周期包括12个时钟周期,分为6个状态:S1~S6。每个状态又分为两拍:P1和P2。因此,一个机器周期中的12个时钟周期表示为:S1P1、S1P2、S2P1、S2P2、…、S6P2;1µs11.答:(A)对;(B)对;(C)错;(D)对。12.答:字节地址00H-1FH的单元可作为工作寄存器区,字节地址为20H-2FH的单元可进行位寻址。13.答:低;程序。14.答:三部分(1)工作寄存器区,为编程提供方便;(2)位寻址区,可进行位操作,也可进行字节操作;(3)数据缓冲区,可作为数据缓冲和堆栈。15.答:(A)对;(B)错;(C)错。16.答:(C)。17.答:PC;PC。18.答:见表2-5(29页)。19.答:64K字节。20.答:按下复位按钮。21.答:(A)对;(B)对;(C)错;(D)错。22.答:可通过观察ALE引脚,因为单片机正常工作时,ALE脚输出时钟频率为振荡周期的1/6。。第3章MCS-51的指令系统1.答:(1)错(2)错(3)对(4)错(5)错(6)错(7)错(8)对(9)错(10)对(11)对(12)错。2.答:(A)对(B)对(C)错。3.答:A,PC,DPTR。4.答:7种寻址方式,特点见教材中的相关内容5.答:5类。6.答:只能使用直接寻址方式?7.答:操作码,操作数,操作码,。8.答:1031H。9.答:程序,数据。10.答:地址。11.答:A的内容与B的内容互换。12.答:(A)=50H,(SP)=50H,(51H)=30H,(52H)=50H,(PC)=5030H13.答:(A)ANLA,#87H(B)ANLA,#0C3H(C)ORLA,#0CH14.答:(A)=0CBH。15.答:(A)=00H,(R3)=0AAH。16.答:(DPH)=3CH,(DPL)=5FH,(SP)=50H17.答:(SP)=62H,(61H)=30H,(62H)=70H。18.答:MOVR7,APUSHAMOVA,BMOVX@DPTR,A第4章MCS-51汇编语言程序设计1.答:略2.答:伪指令只是控制汇编程序如何进行汇编。“伪”的含义是并没有相应的机器代码生成。3.答:“手工汇编”是指采用人工查表的方法将助记符翻译成机器代码;“机器汇编”是指采用专用的汇编程序自动将助记符翻译成机器代码;“交叉汇编”是指助记符翻译成机器代码的工作是在某台机器上进行,而机器代码的运行是在另一台机器上运行;“反汇编”是将机器代码翻译成助记符。4.答:略5.答:略6.答:参考程序如下:MOVA,45HANLA,#0FHORLA,#0FHMOV45H,A7.答:A=80H,SP=40H,(41H)=50H,(42H)=80H,PC=8050H8.答:15348µs,分析:((2+2)×255+1+2)×15+1+2=15348µs9.答:0CBH10.答:参考程序如下:START:MOVR0,#30HMOVR2,#20HLOOP:MOVA,@R0CJNEA,#0AAH,NEXTMOV51H,#01HLJMPEXITNEXT:INCR0DJNZR2,LOOPMOV51H,#00HEXIT:RET11.答:参考程序如下:START:MOV41H,#0MOVR0,#20HMOVR2,#20HLOOP:MOVA,@R0JNZNEXTINC41HNEXT:INCR0DJNZR2,LOOPRET12.答:(1)SP=SP+1=61H(61H)=PC的低字节=03HSP=SP+1=62H(62H)=PC的高字节=20H(2)PC=3456H(3)可以,因为2003H与3456H在同一个2KB区内。(4)从2003H开始的2K字节范围内。第5章MCS-51的中断系统1.答:略2.答:略3.答:略4.答:0013H5.答:A、B、C6.答:略7.答:D8.答:PC、PC、程序存储器9.答:参考程序如下:SETBIT1SETBEX1SETBEA10.答:D11.答:略12.答:A、C、D13.答:RETI指令在返回的同时清除相应的优先级触发器,以允许下次中断,而RET指令则没有这个操作。除了这一点两条指令不同外,其它操作都相同。14.某系统有三个外部中断源1、2、3,当某一中断源变为低电平时,便要求CPU进行处理,它们的优先处理次序由高到底为3、2、1,中断处理程序的入口地址分别为1000H,1100H,1200H。试编写主程序及中断服务程序(转至相应的中断处理程序的入口即可)。14.答:参见电路如图5-10,参考程序如下:ORG0000HLJMPMAINORG0013HLJMPINT_EX1ORG0030HMAIN:CLRIT0;采用电平触发,低电平有效中断SETBEX1;允许外部中断1SETBEA;插入一段用户程序;以下为外部中断1服务子程序INT_EX1:JBP1.2,NEXT1;判断是不是3号中断LJMPINT_IR3;跳转到1号中断处理程序NEXT1:JBP1.1,NEXT2;判断是不是2号中断LJMPINT_IR2;跳转到2号中断处理程序NEXT2:LJMPINT_IR1;跳转到1号中断处理程序ORG1000HINT_IR3:插入相应中断处理程序RETI;中断3返回ORG1100HINT_IR2:插入相应中断处理程序RETI;中断2返回ORG1200HINT_IR1:插入相应中断处理程序RETI;中断1返回第6章MCS-51的定时器/计数器1.答:因为机器周期)(410312126sfTOSCcy,所以定时器/计数器工作方式0下,其最大定时时间为)(192.81042261313msTTCMAX;同样可以求得方式1下的最大定时时间为262.144ms;方式2下的最大定时时间为1024ms。2.答:定时/计数器作定时时,其计数脉冲由系统振荡器产生的内部时钟信号12分频后提供。定时时间与时钟频率和定时初值有关。3.答:由于确认1次负跳变要花2个机器周期,即24个振荡周期,因此外部输入的计数脉冲的最高频率为系统振荡器频率的1/24。4.答:定时器/计数器T0在计数和定时工作完成后,均采用中断方式工作。除了第一次计数工作方式设置在主程序完成外,后面的定时或计数工作方式分别在中断程序完成,用一标志位识别下一轮定时器/计数器T0的工作方式。编写程序如下:ORG0000HLJMPMAINORG000BHLJMPIT0PMAIN:MOVTMOD,#06H;定时器/计数器T0为计数方式2MOVTL0,#156;计数100个脉冲的初值赋值MOVTH0,#156SETBGATE;打开计数门SETBTR0;启动T0,开始计数SETBET0;允许T0中断SETBEA;CPU开中断CLRF0;设置下一轮为定时方式的标志位WAIT:AJMPWAITIT0P:CLREA;关中断JBF0,COUNT;F0=1,转计数方式设置MOVTMOD,#00H;定时器/计数器T0为定时方式0MOVTH0,#0FEH;定时1ms初值赋值MOVTL0,#0CHSETBEARETICOUNT:MOVTMOD,#06HMOVTL0,#156SETBEARETI5.答:定时器/计数器的工作方式2具有自动恢复初值的特点,适用于精确定时,比如波特率的产生。6.答:根据题意,从P1.0输出的矩形脉冲的高低电平的时间为10:1,则高低电平的时间分别为363.63μs和36.37μs。如果系统采用6MHz晶振的话,sTcy2,因此高低电平输出取整,则约为364μs和36μs。编写程序如下:ORG0000HLJMPMAINORG000BHLJMPIT0PMAIN:MOVTMOD,#02H;定时器/计数器T0为定时方式2MOVTL0,#4AH;定时364μs初值赋值SETBTR0;启动T0,开始计数SETBET0;允许T0中断SETBEA;CPU开中断SETBP1.0WAIT:AJMPWAITIT0P:CLREACLRP1.0;关中断MOVR0,#9DLY:DJNZR0,DLY;延时26μsMOVTL0,#4AH;定时364μs初值赋值SETBP1.0SETBEARETI7.答:方法一,在第一个定时器的中断程序里关闭本定时器的中断程序,设置和打开另一个定时器;在另一个定时器的中断程序中关闭本定时中断,设置和打开另一个定时器。这种方式的定时时间为两个定时器定时时间的和。方法二,一个作为定时器,在定时中断后产生一个外部计数脉冲(比如由P1.0接INT0产生),另一个定时器工作在计数方式。这样两个定时器的定时时间为一个定时器的定时时间乘以另一个定时器的计数值。8.答:由T1(P3.5)口控制定时器T1的启动和关闭。9.答:采用方式1定时工作方式。最大脉冲宽度为131.072ms。10.答:将P1.1的输入脉冲接入INT0,即使用T0计数器完成对P1.1口的脉冲计数。编写程序如下:ORG0000HLJMPMAINORG000BHLJMPIT0PMAIN:JNBP1.0,MAINMOVTMOD,#05H;定时器/计数器T0为计数方式1SETBTR0;启动T0,开始计数SETBET0;允许T0中断SETBEA;CPU开中断WAIT:JBP1.2,WAITCLREACLRTR0MOVR1,TH0MOVR0,TL0AJMP$IT0P:INCR2RETI11.答:THX与TLX(X=0,1)是由特殊功能寄存器构成的计数器,其内容可以随时用指令更改,更改后的新值是立即刷新。但在读THX、TLX的值时,应该先读THX值,后读TLX,再读THX。若两次读得THX相同,则可确定读得的内容