11.12写出下列各十进制数在八位微型计算机中的原码、反码和补码形式。①X=+38②X=+76③X=-54④X=-115⑤X=-42解:①[X]原=[X]反=[X]补=00100110B;②[X]原=[X]反=[X]补=01001100B③[X]原=10110110B,[X]反=11001001B,[X]补=11001010B④[X]原=11110011B,[X]反=10001100B,[X]补=10001101B⑤[X]原=10101010B,[X]反=11010101B,[X]补=11010110B1.13已知原码如下,写出其反码和补码。①[X]原=01011001B②[X]原=11011001B③[X]原=00101110B④[X]原=1111100B解:①[X]原=[X]反=[X]补=01011001B;②[X]原=11011001B,[X]反=10100110B,[X]补=10100111B1.14先把下列各数转换成二进制数,然后按补码运算规则求出[X+Y]补及其真值。①X=+46,Y=+55②X=+78,Y=+15③X=-51,Y=+97④X=+112,Y=-83解:①[X]补=00101110B,[Y]补=00110111B;[X+Y]补=01100101B=+101D②[X]补=01001110B,[Y]补=00001111B;[X+Y]补=01011101B=+93D③[X]补=11001101B,[Y]补=01100001B;[X+Y]补=00101110B=+46D④[X]补=01110000B,[Y]补=10101101B;[X+Y]补=00011101B=+29D1.15已知X和Y的补码,计算[X+Y]补和[X-Y]补,并判断运算结果是否有溢出。①[X]补=10011011B②[X]补=00100110B③[X]补=10110001B[Y]补=11100011B[Y]补=00010111B[Y]补=10001110B解:①[X+Y]补=101111110B,C7⊕C6=1⊕0=1,结果溢出;[-Y]补=00011101B,[X-Y]补=010111000B,C7⊕C6=0⊕0=0,结果无溢出;②[X+Y]补=000111101B,C7⊕C6=0⊕0=0,结果无溢出;[-Y]补=11101001B,[X-Y]补=100001111B,C7⊕C6=1⊕1=0,结果无溢出;③[X+Y]补=100111111B,C7⊕C6=1⊕0=1,结果溢出;[-Y]补=01110010B,[X-Y]补=100100011B,C7⊕C6=1⊕1=0,结果无溢出;第2章2.1,8051单片机内部结构主要有哪些部件组成?它们的主要功能各是什么?答:8051单片机内部结构主要有:(1)中央处理器CPU,是单片机的核心,完成运算和控制功能;(2)内部数据存储器(256字节),前面128个单元00H~7FH存储内部数据,后面128个单元80H~FFH被专用寄存器占用,用来实现对片内各部件进行管理、控制、监视;(3)程序计数器PC,是一个16位专用寄存器,其内容为下一条执行指令的地址;(4)内部程序存储器ROM(4K),用于存储程序、原始数据、表格等;(5)4个并行I/O口(8位),实现数据的并行输入输出;(6)串行通信口,实现单片机和其他数据设备之间的串行数据传送;2(7)2个定时器/计数器(16位),实现定时或计数功能;(8)中断控制系统,共5个中断源,分高低两个优先级;(9)一个片内振荡器和时钟电路,为单片机产生时钟脉冲序列;(10)总线,用于连接各个部件和单片机系统的扩展。3.8051单片机的引脚/EA/VPP、RST/VPD、ALE/PROG和PSEN的功能分别是什么?答::EA:片内外ROM选择端,ROM的寻址范围为64KB,而AT89C51内部只有4KBROM,当不够用时可在外扩展ROM。当/EA信号为低电平时,指访问外部ROM;当/EA为高电平时,则先访问内部ROM,当PC值超过4KB时自动转向外部ROM中执行。RST:复位信号,当此引脚上的信号出现至少两个机器周期的高电平将使单片机复位。ALE:地址锁存控制信号,当系统扩展时,ALE用于控制把P0口输出的低8位地址送入锁存器存起来,以实现低位地址和数据的分时传送。PSEN:外部ROM的读选通信号,在访问外部ROM时,每个机器周期两次PSEN有效(低电平),但在此期间内,每当访问外部数据存储器时,这两次有效的PSEN将不出现。第5章5.9已知单片机晶振频率为6MHz,要求使用T1定时50ms,工作在方式1,允许中断,试计算初值并编写初始化程序。答:①计算定时器T1的初值已知晶振频率为6MHz,则机器周期为12/fosc=2µs使用T1定时功能,工作在方式1,定时时间为50ms,则T1的初值为:所以T1的初值为:TH1=9EH,TL1=58H。②定时/计数器方式寄存器TMOD的设置要求用T1定时、工作在方式1、软启动,所以TMOD寄存器应按如下设置:T1T0GATEM1M0GATEM1M00001××××所以TMOD=10H。③允许T1中断,中断允许寄存器IE设置如下:④T1的初始化程序如下:MOVTMOD,#10H;置定时器1工作方式1HEusmsX589405362502161EAESET1EX1ET0--01000IE=EX0=88H3MOVTH1,#9EH;送初值MOVTL1,#58HMOVIE,#88H;开中断SETBTR1;启动定时器5.12设MCS-51单片机时钟为12MHz,请利用内部定时器T1编写从P1.1引脚输出3ms矩形波的程序,要求占空比为2:1(高电平2ms,低电平1ms)。答:要求矩形波周期3ms,占空比2:1,就是在一个周期中,高电平2ms,低电平1ms①定时器T1工作在方式1,其方式寄存器TMOD为:GATEC/TM1M0GATEC/TM1M0T1T0TMOD0001××××=10H②计算初值:机器周期=12/fosc=1µs对1ms定时,初值X1为:X1=65536—1000/1=64536=FC18H对2ms定时,初值X2为:X2=65536—2000/1=63536=F830H③中断允许寄存器IE为:EA--ESET1EX1ET0EX0IE10001000=88H④程序如下:ORG0000HLJMPSTARTORG001BHLJMPBRT1ORG0030HSTART:MOVTMOD,#10HMOVTH1,#0F8HMOVTL1,#30HMOVIE,#88HSETBTR1SETBP1.1LOOP:SJMPLOOPORG0100H4BRT0:MOVC,P1.1JCNEXTMOVTH1,#0F8HMOVTL1,#30HSJMPCOMNEXT:MOVTH1,#0FCHMOVTL1,#18HCOM:CPLP1.1RETIEND5.13已知晶振频率为6MHz,设计程序使P1.4和P1.5外接灯自动轮流点亮,间隔时间为0.5s。答:要求间隔0.5s轮流点亮两个灯,则定时器需要定时0.5s,这个值已经超过了定时器的最大定时时间。为此,可采用定时器定时与软件计数相结合的方法来解决问题。本题用定时器T0,每隔0.1s中断1次,向CPU申请中断,用R0计中断的次数。当R0计到5次中断时,则0.5秒时间到,轮流点亮两个只发光二极管。①定时/计数器方式寄存器TMOD的设置要求用T0定时、工作在方式1、软启动,所以TMOD寄存器应按如下设置:T1T0GATEM1M0GATEM1M0××××0001所以TMOD=01H。②计算定时器T0的初值已知晶振频率为6MHz,则机器周期为12/fosc=2µs采用定时功能工作方式1,定时时间为100ms,则T0的初值为:所以T0的初值为:TH0=3CH,TL0=B0H。③当T0定时到向CPU申请中断,所以T0应开中断,中断允许寄存器IE设置如下:④程序如下:ORG0000HLJMPSTARTORG000BH;T0中断入口LJMPBKT0ORG0100HHCBusmsX031553621002161EAESET1EX1ET0--00010IE=EX0=82H5START:SETBP1.4;点亮1个LED灯CLRP1.5MOVR0,#05H;设置中断次数5次MOVTMOD,#01H;置定时器0工作方式1MOVTH0,#3CH;送初值MOVTL0,#0B0HMOVIE,#82H;开中断SETBTR0;启动定时器LOOP:CJNER0,#00H,NEXT;R0≠0则转NEXTMOVR0,#05H;否则1s延时到,重置R0CPLP1.4CPLP1.5NEXT:SJMPLOOPORG0300HBKT0:DECR0MOVTH0,#3CH;重置初值MOVTL0,#0B0HRETIEND第6章6.5试用线选法画出8031对二片2764的连线图,并详细列出基本地址范围和重叠地址范围。答:8031通过P2.7和P2.6两根口线分别选通二片2764的接线图如图所示:P2.7P2.6P2.5P2.4~P2.0ALEGD7︰D0Q7︰Q074LS3738031A0~A7A8~A12D0~D7OECE1#2764A0~A7A8~A12D0~D7OECE2#2764P0.7~P0.0PSENEA55588888上图程序存储器扩展系统中各片2764的地址范围见下表,其中P2.5脚悬空,取不同值时可得重叠地址范围如表所列。2764编号A15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A0重叠地址范围1#2764(P2.7=0)01×0000000000000………………………………………01×11111111111114000H~5FFFH6000H~7FFFH62#2764(P2.6=0)10×0000000000000………………………………………10×11111111111118000H~9FFFHA000H~BFFFH当悬空脚P2.5取0时的地址范围即为基本地址范围,即1#2764的基本地址范围为4000H~5FFFH,2#2764的基本地址范围为8000H~9FFFH。6.9MCS-51单片机P1口的P1.0~P1.7分别通过反相器接8个发光二极管。要求编写程序,每当外中断1有中断请求信号输入时,点亮的发光二极管向右移一位,试编写程序。答:依题意,51单片机I/O接口电路如下图所示:+5VP1.089C51R×8P1.1VL0VL1INT1P1.2P1.3VL2VL3P1.4P1.5VL4VL5P1.6P1.7VL6VL7程序如下:ORG0000HLJMPMAINORG0013H;INT1中断入口LJMPBREAK1ORG0030HMAIN:SETBIT1;置下降沿触发方式SETBEASETBEX1MOVP1,#80H;先点亮VL7WAIT:NOPSJMPWAITORG0100H;中断服务程序BREAK1:RRA;每中断1次,灯右移1位MOVP1,ARETI7END6.12用8255A扩展MCS-51单片机的I/O接口,若8255A的A口用作输入,每一位外接一个开关;C口用作输出,每一位通过反相器接一个发光二极管。要求当A口开关闭合(低电平)时C口对应位发光二极管点亮,画出接口电路,列出8255A各I/O口地址并编写程序。答:①51单片机与8255A接口电路如下图所示:+5V11+5VL0L7S0S7PA0PA7PC0PC78255ARREA8031P0RDWRRSTALEG74LS373P2.7D7~D0A0A1CSRDWRRSTD7D0Q0Q1Q7②依题意,8255A的A口和C口都工作于方式0,且A口用作输入,C口用作输出,则方式控制字设置如下:1A口I/OC高B口方式B口I/OC低0:输出1:输入方式0方式010010000=90HA口方式A口方式③根据硬件连接,8255A各I/O口地址如下表所列,其中A15(P2.7)必须取0,才能选中8255A,而A14~A8可任意取,此处均取“1”。