单片机原理与应用(曹克澄)课程课后习题答案

《单片机原理及应用》习题答案第一章 基础知识1.微型计算机主要由哪几部分组成?各部分有何功能?答:一台微型计算机由中央处理单元(CPU)、存储器、I/O接口及I/O设备等组成,相互之间通过三组总线(Bus):即地址总线AB、数据总线DB和控制总线CB来连接CPU由运算器和控制器组成,运算器能够完成各种算术运算和逻辑运算操作,控制器用于控制计算机进行各种操作存储器是计算机系统中的“记忆”装置,其功能是存放程序和数据按其功能可分为RAM和ROM输入/输出(I/O)接口是CPU与外部设备进行信息交换的部件总线是将CPU、存储器和I/O接口等相对独立的功能部件连接起来,并传送信息的公共通道2. 将下列十进制数分别转换成为二进制数,十六进制数和BCD码数的形式:100,64,78,80解:1)100=1100100B=64H=0001 0000 0000BCD; 2)64=1000000B=40H=0110 0100BCD; 3)78=1001110B=4EH=0111 1000BCDH=3. 写出下列十六进制无符号数对应的十进制数和二进制: 0D5H,64H,2CH,4FEH解:1)0D5H=213=11010101B;2) 64H=100=1100100B;3) 2CH=44=101100B;4) 4FEH=1278=B。
4. 写出下列十进制数对应的二进制原码、反码和补码: +35,+50,-10,-20解:1) +35=(23H)原=(23H)反=(23H)补; 2) +50=(32H)原=(32H)反=(32H)补;3) -10=(8AH)原=(0F5H)反=(0F6H)补;4) -20=(94H)原=(0EBH)反=(0ECH)补;5. 根据给定的原码、反码、补码求真值1) (0CBH)原=(-75)真值; 2) (8BH)反=(-116)真值; 3) (9BH)补=(-101)真值; 4) (6BH)补=(+107)真值;解:1) (0CBH)原=(-75)真值; 2) (8BH)反=(-116)真值; 3) (9BH)补=(-101)真值; 4) (6BH)补=(+107)真值;6. 试分别判断下列各组数据大小?1)A=0.011B B=0.011 C=0.011H2)A=1001B B=1001 C=1001H解:1)A=0.011B=0×2-1+1×2-2+1×2-3=0.25+0.125=0.375;B=0.011C=0.011H=0×16-1+1×16-2+1×16-3=0.5所以:A>B>C2)A=1001B=9;B=1001;C=1001H=4097所以:A
1) (―74)+412) (―74)―41解:根据补码定义有:―74=(0B6H)补,+41=(29H)补,―41=(0D7H)补1)[(―74)+41]补=(―74)补+(41)补=(0B6H+29H)补=(0DFH)补=(-33)真值十进制数运算:(―74)+41=―33所以:二者运算结果相同2)[(―74)―41]补=(―74)补+(―41)补=(0B6H+0D7H)补=(8DH)补 =(-115)真值十进制数运算:(―74)―41=―115所以:二者运算结果相同8.何谓单片机?单片机有何特点? 答:单片机(Single Chip Microcomputer)是指把CPU、RAM、ROM、定时器/计数器以及I/O接口电路等主要部件集成在一块半导体芯片上的微型计算机单片机在控制应用领域中的特点:(1)体积小、结构简单、可靠性高;(2)控制功能强;(3)低电压、低功耗;(4)优异的性价比9.单片机部ROM的配置有几种形式?答:单片机片ROM的配置状态可分四种:(1)片掩膜(Mask)ROM型单片机(如8051),适合于定型大批量应用产品的生产;(2)片EPROM型单片机(如8751),适合于研制产品样机;(3)片无ROM型单片机(如8031),需外接EPROM,单片机扩展灵活,适用于研制新产品;(4)EEPROM(或Flash ROM)型单片机(如89C51),部程序存储器电可擦除,使用更方便。
第2章 MCS-51系列单片机的结构和时序1.8051单片机包含哪些主要功能部件?各有什么功能?答:8051单片机是一个完整的单片微型计算机它包括以下功能部件:(1)1个8位CPU;(2)片4KB的程序存储器ROM;(3)片128B的数据存储器RAM;(4)可寻址外部程序存储器和数据存储器空间各64KB的控制电路;(5)21个特殊功能寄存器SFR;(6)4个8位并行I/O口P0~P3,共32根I/O线;(7)1个全双工的串行口;(8)2个16位定时器/计数器;(9)5个中断源,有2个优先级嵌套中断结构;(10)片振荡器及时钟电路2.8051单片机的信号有何功能?8031的引脚应如何处理,为什么?答:(1) 是访问外部程序存储器ROM的控制信号当为低电平(接地)时,CPU只执行外部程序存储器中的程序当为高电平且PC值小于0FFFH(4K)时,CPU执行部程序存储器的程序,但当PC的值超出4K时(对8051/8751/8951)将自动转去执行片外程序存储器的程序8031单片机无片ROM的,必须外部扩展程序存储器,因此,8031的必须接地(低电平)3.MCS-51单片机的P0~P3口各有什么特点?答:MCS-51单片机有P0、P1、P2、P3四个双向的8位并行I/O口,每个端口可以按字节输入或输出,每一条I/O线也可以单独用作输入或输出(即按位进行输入或输出)。
每个端口都是由一个锁存器(即特殊功能寄存器P0~P3),一个输出驱动器和两个(P3口为3个)输入缓冲器组成并行I/O口作输出时数据可以锁存,作输入时数据可以缓冲,但它们又各具特点1)P0口和P2口构成MCS-51单片机的16位地址总线,P0口还是8位的数据总线P3口多用于第二功能输入或输出通常只有P1口用于一般输入/输出P3口各位的第二功能P3口引脚第二功能P3口引脚第二功能P3.0RXD(串行输入端)P3.4T0(定时器0的外部输入)P3.1TXD(串行输出端)P3.5T1(定时器1的外部输入)P3.2(外部中断0输入)P3.6(片外数据存储器写选通控制输出)P3.3(外部中断1输入)P3.7(片外数据存储器读选通控制输出)(2)系统复位后,P0~P3口的32个管脚均输出高电平,因此在系统的设计过程中,应保证这些管脚控制的外设不会因为系统复位而发生误动作3)P0~P3口输出级的电路结构有所不同P0口是三态输出,其每个管脚均可以驱动8个LSTTL输入,而P1~P3口的输出级均有上拉电阻,每个管脚可驱动4个LSTTL输入4)每个并行口,可定义一部分管脚为输入脚,另一部分管脚为输出脚,没有使用的管脚可以悬空。
4.简述8051单片机存储器的组织结构和片RAM的地址空间分配答:8051单片机的存储器包括程序存储器和数据存储器,从用户使用的角度可分为三个逻辑地址空间:(1)片、片外统一编址的64KB程序存储器地址空间0000H~0FFFFH;(2)64KB的外部数据存储器或扩展I/O口地址空间0000H~0FFFFH;(3) 256B的片数据存储器地址空间00H~FFH(包括低128B的部RAM地址00H~7FH和高128B的特殊功能寄存器地址空间,21个SFR离散地分布在这个区域)部RAM共有128个单元,根据用途可划分为工作寄存器区、位寻址区和通用RAM区,各区域的特性如下:(1)工作寄存器区(00H~1FH) 寄存器区32个单元共分4个组,每个组有8个8位的寄存器R0~R7在任何时刻,四个组中只能有一组可以成为当前工作寄存器组使用,其他三组作为一般的部RAM使用当前工作寄存器组由程序状态字寄存器PSW的RS0和RS1两位的状态来决定2)位寻址区( 20H~2FH)共16个单元,每个单元有8个位,每个位都有一个位地址,编号为00H~7FH,位寻址区的16个单元也可以按字节寻址,作为一般的部RAM使用。
3)通用RAM区(30H~7FH) 这部分存储空间作为一般的部RAM区或堆栈区,CPU只能按字节方式寻址5.8051单片机有哪些特殊功能寄存器?答:8051单片机有21个8位的特殊功能寄存器(SFR),它们的地址离散地分部在部数据存储器的80H~FFH地址空间在8051单片机结构中,21个SFR在物理上是分散在片各功能部件中: (1)CPU的中SFR:Acc、B、PSW、SP和DPTR(16位寄存器,由DPH和DPL组成);(2)定时/计数器单元中的寄存器:TMOD、TCON、T0(16位寄存器,由TH0和TL0组成)和T1(16位寄存器,由TH1和TL1组成);(3)并行I/O口寄存器:P0、P1、P2和P3;(4)中断系统的寄存器:IE和IP;(5)串行端口中的寄存器:SCON、SBUF和PCON6.程序计数器PC的功能和特点?答:程序计数器PC是一个16位的专用寄存器,用来存放即将要执行的指令地址,可对64KB的程序存储器直接寻址它具有自动加1功能,当CPU要取指令时,PC的容送地址总线上,从存储器中取出指令后,PC容则自动加1,指向下一条指令,从而保证程序按顺序执行PC虽然也是CPU部的一个寄存器,但它在物理结构上是独立的,没有地址,是不可寻址的,用户无法对它进行直接读写,不属特殊功能寄存器。
7.什么叫堆栈?堆栈指针SP的作用是什么?8051单片机堆栈的最大容量是多少字节?答:堆栈是按照“先进后出,后进先出”的原则来存取数据的一个部RAM区域,这个存储器区域的一端是固定的(栈底),另一端是活动的(栈顶),每个存储单元是不能按字节任意访问的堆栈指针SP始终指向栈顶单元,栈顶随着数据入栈和出栈上下浮动8051单片机堆栈的最大容量是128字节8.8051单片机是如何确定和改变当前工作寄存器组?答:在任何时刻,8051单片机的四个工作寄存器组中只能有一组可以成为当前工作寄存器组使用,其他三组作为一般的部RAM使用当前工作寄存器组由程序状态字寄存器PSW的RS0和RS1两位的状态来决定,如表所示当前工作寄存器组的选择RS1RS0被选寄存器组寄存器R0~R7的地址000组00H~07H011组08H~0FH102组10H~17H113组18H~1FH根据需要,用户可以利用传送指令或位操作指令改变RS1和RS0的容来选择不同的工作寄存器组9.单片机复位后,CPU使用了哪一组工作寄存器?工作寄存器R0~R7对应的单元地址是什么?答:单片机复位后,RS1和RS0都为0,CPU选中第0组作为当前工作寄存器组,工作寄存器R0~R7对应的单元地址是00H~07H。
10.程序状态字寄存器PSW的作用是什么?各位的作用是什么?答:PSW是一个8位的特殊功能寄存器,由一些标志位组成,用于存放程序运行中的各种状态信息它可以进行位寻址各位的作用如下:Cy:进位标志位在进行加(或减)法运算时,若操作结果的最高位(D7位)有进位(或借位)时,Cy由硬件置1,否则Cy清0在进行位操作时,Cy又是位累加器,指令助记符用C表示AC:辅助进位标志位在进行加(或减)运算时,若操作结果的低半字节(D3位)向高半字节产生进位(或借位)时,AC位将由硬件自动置1,否则AC位清0F0:用户标志位用户根据需要对F0置位或复位,作为软件标志RS1和RS0:工作寄存器组选择控制位由用户用软件改变RS1和RS0的状态,以选择RAM中的哪组工作寄存器为当前工作寄存器组OV:溢出标志位当进行补码运算时,运算结果超出-128~+127围时,产生溢出,则OV自动置1,否则OV清0PSW.1:保留位8051中未定义P:奇偶校验标志位每条指令执行完后,该位始终跟踪累加器A中1的数目的奇偶性如果A中有奇数个1,则P=1;否则P=011.什么是时钟周期、机器周期和指令周期?答:(1)时钟周期(又称为振荡周期)是指振荡器产生一个振荡脉冲信号所用的时间,是振荡频率的倒数,称为拍节。
2)机器周期是指CPU完成某一个规定操作所需的时间,8051单片机的一个机器周期包含6个状态,并依次表示为S1~S6,每个状态分为2个节拍因此一个机器周期包含12个时钟周期(振荡周期),依次表示为:S1P1、S1P2、S2P1、…、S6P1、S6P23)指令周期是指CPU执行一条指令所需要的时间称为指令周期MCS-51单片机指令周期根据指令的不同,可包含有1或2或4个机器周期12.8051单片机复位后寄存器PC、A、PSW、SP 、P0~P3的状态各是什么?复位后部RAM中的数据有何影响?答:8051单片机复位后PC为0000H,A和PSW均为00H,SP为07H,P0~P3均为FFH单片机的复位不影响部RAM的状态(包括工作寄存器Rn )13.80C51如何进入节电工作方式?答:只有CHMOS型单片机(如80C51)才有这种工作方式,有两种节电方式,即待机方式和掉电保护方式由片SFR中的电源控制寄存器PCON的低4位来控制待机和掉电两种方式,其格式如下:位D7D6D5D4D3D2D1D0位名称SMOD———GF1GF0PDIDL(1)IDL:待机方式位若IDL=1,进入待机方式;(2)PD:掉电方式位。
若PD=1,进入掉电方式;当PD和IDL同时为1,则先进入掉电工作方式复位后,PCON中有定义的位均为0第3章 MCS-51系列单片机指令系统1.简述汇编指令格式答:汇编语言的指令格式一般如下: [标号:]操作码 [第一操作数][,第二操作数][,第三操作数][;注释]其中:带有方括号[……]的部分代表可选项标号:是表示该指令的符号地位,可以根据需要进行设置标号以英文字母开始的1-6个字母或数字组成的字符串表示,并以“:”结尾操作码:是表示指令的操作功能,用助记符表示每条指令都有操作码,是指令的核心部分操作数:表示参与传送、运算的数据或数据地址这里的操作数不一定就是直接参与运算或传送的,而应根据操作数的寻址方式,寻找出真正参与运算或传送的数据二个或二个以上操作数之间用“,”间隔注释:用来解释该条指令或一段程序的功能,便于对指令或程序的阅读理解注释以“;”为开始,注释部分对程序的执行没有影响2.什么叫寻址方式?在MCS-51系列单片机指令系统中,主要有哪几种寻址方式?试分别举例说明答:寻址就是寻找操作数的地址,寻找操作数地址的方式,称为操作数地址的寻址方式,简称寻址方式在MCS-51系列单片机指令系统中,主要的寻址方式有:(1)立即寻址方式,指令如:MOV A,#67H;(2)立即寻址方式,指令如:MOV A,66H;(3)寄存器寻址方,指令如:MOV A,R3;(4)寄存器间接寻址方式,指令如:MOV A,@R1;(5)变址寻址方式,指令如:MOVC A,@A+DPTR;(6)相对寻址方式,指令如:SJMP 30H;(7)位寻址方式,指令如:MOV ACC.3,Cy3.试说明下列指令中划线部分的寻址方式。
MOV A,@R0ADD A,#36HMOVC A,@A+PCDJNZ R2,relSETB RS1CLR AMOV 45H,ACLR C解:第1条为寄存间接寻址方式;第2条指令为立即寻址方式;第3条指令为变址寻址方式;第4条指令为相对寻址方式,第5条指令为位寻址方式,第6条指令为寄存器寻址,第6条指令为直接寻址方式,第7条指令为位寻址方式4.设A=9BH,R0=30H,RAM的(30H)=40H,(40H)=6DH,分别执行下列指令,说明被真正传送的数据是多少?1)MOV A,#40H2)MOV 40H,@R03)MOV A,30H4)MOV A,@R05)MOV A,R0答:1)真正被传送的数据是立即数40H 2)真正被传送的数据是R0间址中(即30H单元中)的数据40H 3)真正被 传送的数据是30H单元中的数据40H 4)真正被传送的数据是R0间址中(即30H单元中)的数据40H 5)真正被传送的数据是R0中的数据30H5.设A=86H,R0=30H,R1=40H,RAM的(30H)=76H,(40H)=6BH,执行下面程序:MOV A,40HMOV @R0,AMOV A,R0MOV @R1,AMOV R1,AMOV @R1,#70H后,A= ,R0= ,R1= ,(30H)= ,(40H)= 解: MOV A,40H ;A=6BHMOV @R0,A ;(R0)=(30H)=6BHMOV A,R0 ;A=30HMOV @R1,A ;(R1)=(40H)=30HMOV R1,A ;R1=30HMOV @R1,#70H ;(R1)=(30H)=70H所以:A= 30H ,R0= 30H ,R1= 30H ,(30H)= 70H ,(40H)= 30H 6.设A=65H,R0=30H,R1=31H,R2=32H,RAM的(30H)=40H,(31H)=50H,(32H)=60H,(40H)=70H,(50H)=80H,执行下面程序:XCHD A,@R1MOV 40H,ASWAP AMOV 50H,AXCH A,R2MOV @R0,A 后,A= ,R0= ,R1= ,R2= ,(30H)= ,(31H)= ,(32H)= ,(40H)= ,(50H)= 解: XCHD A,@R1 ;A=60H,(R1)=(31H)=55HMOV 40H,A ;(40H)=60HSWAP A ;A=06HMOV 50H,A ;(50H)=06HXCH A,R2 ;A=32H,R2=06HMOV @R0,A ;(R0)=(30H)=32H所以:A= 32H ,R0= 30H ,R1= 31H ,R2= 06H ,(30H)= 32H ,(31H)= 55H ,(32H)= 60H ,(40H)= 60H ,(50H)= 06H 7.执行下面程序后,试问:A=?ORG 1000HMOV DPTR,#1020HMOV A,#03HMOVC A,@A+DPTRRETORG 1020HDB 56H,78H,65H,29H,10H 解: ORG 1000HMOV DPTR,#1020H ;DPTR=1020HMOV A,#03H ;A=03HMOVC A,@A+DPTR ;A=(1023H)=29HRETORG 1020HDB 56H,78H,65H,29H,10H所以:A=29H8.试用数据传送指令来实现下列要求的数据传送。
1)将R2中的容送到R3中2)将RAM 30H单元中的容与外RAM 2040H单元中的容交换3)将ROM 2040H单元中的数据存放在RAM 50H单元中4)将外RAM 30H单元中的容送到R2中5)将R2与R3中的容进行交换6)将ROM 2100H单元中容送外RAM 3165H单元中解:1) MOV A,R2 MOV R3,A 2) MOV DPTR 2040H MOVX A,DPTR MOV R1,A MOV A,30H MOVX DPTR,A MOV 30H,R1 3) MOV A,#00H MOV DPTR,#2040H MOVC A,A+DPTR MOV 50H,A 4) MOV R0,#30H MOVX A,R0 MOV R2,A 5) XCH A,R2 XCH A,R3 XCH A,R2 6) MOV A,#00H MOV DPTR,#2100H MOVC A,A+DPTR MOV DPTR,#3165H MOVX DPTR,A 9.设A=7EH,R0=40H,(40H)=9AH,B=23H,Cy=1。
分别执行下列指令后,试问:A=?各标志位为什么状态?1)ADD A,@R02)ADDC A,R03)SWAP A4)XCH A,@R05)INC A6)SUBB A,#56H7)SUBB A,R08)RLC A9)RR A10)CPL A11)ANL A,@R012)ORL A,#8FH13)XRL A,40H14)ANL 40H,A15)ORL 40H,#0F0H16)ANL A,#0FH17)DEC A18)MUL AB19)DIV AB20)RRC A解:1)ADD A,@R0 A=A+(R0)=A+(40H)=7EH+9AH=18H,Cy=1,AC=1,OV=0,P=02)ADDC A,R0 A=A+R0+Cy=7EH+40H+1=0BFH,Cy=0,AC=0,OV=1,P=13)SWAP A A=0E7H4)XCH A,@R0 A=(R0)=(40H)=9AH,(R0)=(40H)=A=7EH,P=05)INC A A=A+1=7EH+1=7FH,P=16)SUBB A,#56H A=A-56H-Cy=7EH-56H-1=27H,Cy=0,AC=0,OV=0,P=07)SUBB A,R0 A=A-R0-Cy=7EH-40H-1=3DH,Cy=0,AC=0,OV=0,P=18)RLC A A=11111101B=0FDH,Cy=0,P=19)RR A A=00111111B=3FH,P=010)CPL A A=81H,P=011)ANL A,@R0 A=A∧(R0)=A∧(40H)=7EH∧9AH=1AH,P=112)ORL A,#8FHA=A∨8FH=7EH∨8FH=0FFH,P=013)XRL A,40H A=A⊕(40H)=7EH⊕9AH=0E4H,P=014)ANL 40H,A (40H)=(40H)∧A=9AH∧7EH=1AH,A=7EH15)ORL 40H,#0F0H (40H)=(40H)∨0F0H=9AH∨0F0H=0FAH,A=7EH16)ANL A,#0FH A=A∧0FH=7EH∧0FH=0EH,P=117)DEC A A=A-1=7EH-1=7DH,P=018)MUL AB A×B=7EH×23H=01111110B×00100011B=0001 0001 0011 1010B=113AH B=11H,A=3AH,OV=1,P=019)DIV AB A÷B=7EH÷23H=0111 1110B÷0010 0011B=0000 0011B余0001 0101B A=03H,B=15H,OV=0,P=020)RRC A A=0BFH,Cy=0,P=110.试编写程序,要求将RAM 30H~4FH中的容平移送到40H~5FH中。
解:(参考程序)START:MOV R0,#4FHMOV R1,#5FHMOV R2,#20HLOOP:MOV A,R0MOV R1,ADEC R0DEC R1DJNZ R2,LOOPEND 11.试编写程序,将RAM的30H~4FH中的容清零解:(参考程序)START:MOV R0,#30HCLR AMOV R2,#20HLOOP:MOV R0,AINC R0DJNZ R2,LOOPEND12.试编写程序,在RAM的30H~4FH中查找关键字0AH,若有,则将RAM的50H单元置为01H,并将找到的存放第一个关键字的单元地址存放在RAM的52H单元中解:(参考程序)START:MOV R0,#30HMOV R2,#20HMOV 50H,#00HLOOP1:CJNE R0,#0AH,LOOP2 MOV 50H,#01H MOV 52H,R0 SJMP LOOP3LOOP2:INC R0DJNZ R2,LOOP1LOOP3:END13.在RAM从30H到3FH单元中存放着符号数,要求统计正数、零、负数的个数,结果分别存放在RAM的40H、41H、42H三个单元中。
解:(参考程序)START:MOV R0,#30HMOV R2,#10HMOV 40H,#00HMOV 41H,#00HMOV 42H,#00HLOOP1:MOV A,R0 JNZ LOOP2 ;判断A是否为非0,非0转移 INC 41H ;零的个数统计量加1 SJMP LOOP4LOOP2:JB ACC.7,LOOP3 ;判断A是否为负数,是负数则转移INC 40H ;正数的个数统计量加1SJMP LOOP4LOOP3:INC 42H ;负数的个数统计量加1LOOP4:INC R0DJNZ R2,LOOP1END14.分析执行下面各段程序的结果1) ORG 1000H MOV A,#34HADD A,#78HDA ARETA= ,OV= ,P= ,Cy= ,AC= 解: ORG 1000HMOV A,#34H ;A=34HADD A,#78H ;A=A+78H=34H+78H=0ACH,Cy=0,AC=0,OV=1,P=0DA A ;A=A+66H=0ACH+66H=12H,Cy=1,AC=0,OV=0,P=0RET所以:A= 12H ,OV= 0 ,P= 0 ,Cy= 1 ,AC= 0 (2) MOV SP,#5FHMOV A,#54HMOV B,#78HPUSH APUSH BPOP APOP BRETA= ,B= ,SP= 解: MOV SP,#5FH ;SP=5FHMOV A,#54H ;A=54HMOV B,#78H ;B=78HPUSH A ;SP=60H,(SP)=(60H)=54HPUSH B ;SP=61H,(SP)=(61H)=78HPOP A ;A=(SP)=(61H)=78H,SP=60HPOP B ;B=(SP)=(60H)=54H,SP=5FHRET所以:A= 78H ,B= 54H ,SP= 5FH (3) MOV A,#7DH ADD A,#6BH MOV R0,#34H MOV 34H,#0BCH ADDC A,@R0 XRL A,R0 ORL A,34H MOV @R0,A SWAP A XCH A,R0RET A= ,R0= ,(34H)= 解: MOV A,#7DH ;A=7DH ADD A,#6BH ;A=7DH+6BH=0E8H,Cy=0 MOV R0,#34H ;R0=34H MOV 34H,#0BCH ;(34H)=0BCH ADDC A,@R0 ;A=A+(R0)+Cy=A+(34H)+Cy=0E8H+0BCH+0=0A4H,Cy=1 XRL A,R0 ;A=A⊕R0=0A4H⊕34H=90H ORL A,34H ;A=A∨(34H)=90H∨0BCH=0BCH MOV @R0,A ;(R0)=(34H)=A=0BCH SWAP A ;A=0CBH XCH A,R0 ;A=34H,R0=0CBHRET所以:A= 34H ,R0= 0CBH ,(34H)= 0BCH (4) CLR CMOV A,#55HMOV R0,#23HLOOP1:ADDC A,R0JNC LOOP1RETA= ,R0= 解: CLR C ;Cy=0MOV A,#55H ;A=55HMOV R0,#23H ;R0=23HLOOP1:ADDC A,R0 ;(1)A=A+R0+Cy=78H,(2)A=9BH,(3)A=0BEH,(4)A=0E1H ;(5)A=04H,Cy=1JNC LOOP1RETA= 04H ,R0= 23H (5) ORG 2000HMOV A,#00HMOV R2,#09HLOOP1:ADD A,#03HDA ADJNZ R2,LOOP1 MOV 30H,ARETA= ,R2= ,(30H)= 解: ORG 2000HMOV A,#00H ;A=00HMOV R2,#09H ;R2=09HLOOP1:ADD A,#03H ;(1)A=03H,(2)A=06H,(3)A=09H,(4)A=0CH,(5)…DA A ;(1) A=03H,(2)A=06H,(3)A=09H,(4)A=12H,(5)…DJNZ R2,LOOP1;(1) R2=08H,(2)R2=07H,(3)R2=06H,(4)R2=05H,(5)… MOV 30H,A ;(30H)=27HRETA= 27H ,R2= 00H ,(30H)= 27H 15.对3-14(1)、(5)题进行手工汇编。
解:(1)源程序地址机器码ORG 1000HMOV A,#34H1000H74 34ADD A,#78H1002H24 78DA A1004HD4RET1005H22 (5) 源程序地址机器码ORG 2000HMOV A,#00H2000H74 00MOV R2,#09H2002H7A 09LOOP1:ADD A,#03H2004H24 03DA A2006HD4 DJNZ R2,LOOP12007HDA FBMOV 30H,A2009HF5 30RET200BH22 16.试编制能延时40ms的程序解: 设fosc=12MHz,则机器周期为1us参考程序START:MOV R0,#84H ;1个机器周期数,R0=132MOV R1,#96H ;1个机器周期数,R1=150LOOP1:DJNZ R1,LOOP1 ;2个机器周期数MOV R1,#64H ;1个机器周期数DJNZ R0,LOOP1 ;2个机器周期数RET ;2个机器周期数上述程序执行的机器周期数为:1+1+(2×150+1+2)×132+2=40000(个)所以上述程序执行的时间即为40ms。
17.试编制程序,实现1+2+3+…+100=?解:分析:进行十进制数加法,因此需要进行BCD码调整,其中千位、百位数存放在31H单元,十位、个位数存放在30H单元中 参考程序START:MOV A,#00H MOV R0,#01H MOV 31H,#00HLOOP1:ADD A,R0 DA A JNC LOOP2 INC 31HLOOP2:PUSH A MOV A,R0 ADD A,#01H DA A JC LOOP3 MOV R0,A POP A SJMP LOOP1LOOP3:POP AINC 31H MOV 30H,A END18.在RAM的30H~3FH单元中存放着16个字节的无符号数,要求比较大小,并按从大到小顺序存放在RAM的30H~3FH单元中解:参考程序 START:MOV R0,#30H MOV R2,#0FH LOOP1:MOV A,R0 INC AMOV R1,A LOOP2:MOV A,R0 CLR C SUBB A,R1 JNC LOOP2 XCH A,R0 XCH A,R1 INC R1 CJNE R1,#40H,LOOP2 INC R0 DJNZ R2,LOOP1 END 19.编制程序实现下列逻辑功能: Q=+解:参考程序START:X BIT P1.0Y BIT P1.1Z BIT P1.2Q BIT P1.3MOV C,YANL C,ZMOV F0,CMOV C,XANL C,/F0MOV F0,CMOV C,YANL C,/XANL C,/ZORL C,F0MOV Q,CEND20.阅读下面程序,分析执行后的结果,并进行手工汇编。
ORG 0100HMOV A,#67HSETB ACC.7MOV C,ACC.2CPL AMOV ACC.6,CCLR CSETB ACC.0MOV ACC.4,C解:(1)分析执行结果ORG 0100HMOV A,#67H ;A=67H=01100111BSETB ACC.7 ;A=11100111BMOV C,ACC.2 ;Cy=1CPL A ;A=00011000BMOV ACC.6,C ;A=01011000BCLR C ;Cy=0SETB ACC.0 ;A=01011001BMOV ACC.4,C ;A=01001001B所以结果:A=49H,Cy=0 (2)人工汇编源程序地址机器码ORG 0100HMOV A,#67H0100H74 67SETB ACC.70102HD2 E7MOV C,ACC.20104HA2 E2CPL A0106HF4MOV ACC.6,C0107H92 E6CLR C0109HC3SETB ACC.0010AHD2 E0MOV ACC.4,C010CH92 E4第4章 MCS-51系列单片机中断系统与定时器/计数器1.计算机与外部设备实现数据传送有哪些方式?答:在计算机系统中,CPU与I/O接口传送数据的控制方式主要有无条件传送方式、条件传送方式、中断方式和存储器直接存取方式(DMA方式)等四种。
2.什么叫中断?采用中断方式有些优点?答:中断是计算机的CPU暂停正在执行的程序,转而执行提出中断请求的那个外部设备或事件的服务程序(即中断服务程序),待服务程序处理完毕后,再返回原来程序的过程采用中断方式的优点:计算机引入中断技术,解决了CPU与外设的速度匹配问题,提高了CPU的工作效率,同时使计算机具有分时处理功能、实时处理功能、故障处理功能等3.中断响应的条件有哪些?简叙中断的响应步骤答:中断响应的条件有:(1)有中断请求信号;(2)中断请求没有被屏蔽;(3)中断是开放的;(4)CPU在处理完现行指令后响应中断;同时还要具备:(1)CPU没有处理同级或更高级中断;(2)正在执行的指令不是RETI、也不是访问IE和IP的指令中断响应的步骤是:(1)关中断;(2)保存断点;(3)保护现场;(4)转入相应的中断服务程序;(5)恢复现场;(6)开中断;(7)中断返回4.在MCS-51单片机系统中,有哪些中断源?响应这些中断的服务程序入口地址分别是多少?如何合理安排中断服务程序?答:在MCS-51单片机系统中,中断源有:(1):外部中断0,中断请求信号由P3.2输入;(2)TF0:部定时器/计数器0溢出中断;(3):外部中断1,中断请求信号同P3.3输入;(4)TF1:部定时器/计数器1溢出中断;(5)TI或RI:串行口中断请求,包括串行口接收中断和串行口发送中断。
响应这些中断的服务程序入口地址安排:(1):0003H;(2)TF0:000BH;(3):0013H;(4)TF1:001BH;(5)TI或RI:0023H在安排中断服务程序地址时,应该考虑中断服务程序的字节数,如果字节数小于等于8个字节,则直接存放在从规定的入口地址开始的空间中,如果字节数大于8个字节,则由于,各中断服务程序只有8个字节空间,不能占用其它中断服务程序的空间,因此在入口地址处放一条 LJMP XXXXH指令,真正的中断服务程序存放在以XXXXH开始的空间中5.在单片机复位后,IP和IE均为何值?这些值说明了什么?如果当前单片机系统只允许开放和T0中断源,且要求、T1为高级中断源,其余为低级中断源,如何设置IP和IE的值?答:在单片机复位后,IP和IE均为00HIP为00H,说明复位后,各中断的优先级均为低级优先级;IE为00H,说明复位后,禁止所有的中断源中断,CPU也处于禁止响应中断状态如果当前单片机系统只允许开放和T0中断源,且要求、T1为高级中断源,其余为低级中断源,则设置IP和IE的值的指令如下(参考):MOV IP,#09H ;IP只能字节操作MOV IE,#83H ;IE还可能通过位操作指令实现END或MOV IP,#09H ;IP只能字节操作SETB ET0SETB EX0SETB EAEND6.外部中断有几种触发方式?如何选择? 答:外部中断有两种触发方式,一种是电平触发方式,另一种是下降沿触发方式。
如果设置为电平触发方式,则将TCON中的IT0或IT1清0,指令为:CLR IT0或CLR IT1;如果设置为下降沿触发方式,则将TCON中的IT0或IT1置1,指令为:SETB IT0或SETB IT17.什么叫中断嵌套?答:如果CPU正在处理的是低级的中断请求,那么高级的中断请求可以使CPU暂停处理低级中断请求的中断服务程序,转而处理高级中断请求的中断服务程序,待处理完高级中断请求的中断服务程序后,再返回原低级中断请求的中断服务程序,这种情况称为中断嵌套 8.定时器0和定时器1各有几种工作方式?简述之答:定时器0的工作方式有方式0、方式1、方式2、方式3;定时器1的工作方式有方式0、方式1、方式2工作方式0是13位定时/计数器工作方式;工作方式1是16定时/计数器工作方式;工作方式2是8位自动重装定时/计数器工作方式;工作方式3仅限于定时器0,是两个8位定时/计数器工作方式9.写出TMOD的结构、各位名称和作用答:TMOD的结构: D7D6D5D4D3D2D1D0TMODGATEC/M1M0GATEC/M1M0(89H)← 定时器1方式字段 →← 定时器0方式字段 →各位的名称及作用如下:GATE:选通门控制位。
当GATE=0时,由TRx启动Tx工作;当GATE=1时,由TRx和INTx共同启动Tx工作C/T:定时器/计数器选择位当C/T=0时,定时器状态;当C/T=1时,计数器状态M1、MO:工作方式选择位当M1 M0=00时,方式0,13位定时/计数器;当M1 M0=01时,方式1,16位定时/计数器;当M1 M0=10时,方式2,8位自动重装定时/计数器; 当M1 M0=11时,方式3,分二个8位定时/计数器10.已知单片机系统时钟频率fosc=6MHz,若要求定时时间分别为0.1ms、1ms、10ms,定时器0工作在方式0、方式1、方式2情况下,计算定时初值TH0、TL0分别为多少?解:由于fosc=6MHz,所以机器周期为2us1)方式0:定时0.1ms:初值=213-100/2=8192-50=8142=11111110 01110B,所以:TH0=0FEH,TL0=0EH定时1ms:初值=213-1000/2=8192-500=7692=11110000 01100B,所以:TH0=0F0H,TL0=0CH定时10ms:初值=213-10000/2=8192-5000=3192=01100011 11000B,所以:TH0=63H,TL0=18H(2)方式1:定时0.1ms:初值=216-100/2=65536-50=65486=11111111 11001110B=FFCEH,所以:TH0=0FFH,TL0=0CEH定时1ms:初值=216-1000/2=65536-500=65036=11111110 00001100B=FE0CH,所以:TH0=0FEH,TL0=0CH定时10ms:初值=216-10000/2=65536-5000=60536=11101100 01111000B=EC78H,所以:TH0=0ECH,TL0=78H(2)方式2:定时0.1ms:初值=28-100/2=256-50=206=11001110B=CEH,所以:TH0=0CEH,TL0=0CEH定时1ms:初值=28-1000/2=256-500<0所以:在方式2时超出定时围,不能定时1ms。
定时10ms:初值=28-10000/2=256-5000<0所以:同理在方式2时不能定时10ms11.要求在P1.7引脚输出周期为20ms的方波设单片机系统时钟频率fosc=12MHz试编写定时器初始化程序和中断服务程序,并指定程序入口地址解:根据题意,由于fosc=12MHz,所以机器周期为1us;由于要产生周期为20ms的方波,因此定时时间为10ms设定采用定时器0,工作方式为方式1,TR触发方式,则:TMOD=00H定时初值=216-10000/1=65536-10000=55536=01100011 11000B,TH0=F0H,TL0=C8H程序如下: ORG 0000H LJMP MAIN ORG 000BH LJMP IT0 ORG 0030HIT0:MOV TH0,#0F0H MOV TL0,#0C8H CPL P1.7 RETI ORG 0100HMAIN:MOV TMOD,#00HMOV TH0,#0F0HMOV TL0,#0C8HSETB ET0SETB EASETB TR0LOOP:SJMP LOOPEND12.要求将定时器T0和T1的外部信号输入端P3.4和P3.5作为新增的二个外部中断请求信号,如何设置计数初值?答:根据题意,就是控制要求外部中断源2个太少,需要增加2个外部中断源,因此将部的T0和T1的两个中断源改为外部中断源,这两个外部中断源输入口分别为P3.4和P3.5,此时只要将T0和T1设置为计数器工作状态,方式均设置为方式0,则它们的初值均为11111111 11111B,即TH0=TH1=0FFH,TL0=TL1=1FH,只要P3.4和P3.5有信号输入,即使T0和T1生产中断信号。
13.要求在P1.0引脚上输出如图4-16所示的波形试编写定时器初始化程序和中断服务程序,并指定程序入口地址图 4-。