当前位置:首页 > 单片机课后部分答案
1.12写出下列各十进制数在八位微型计算机中的原码、反码和补码形式。 ① X=+38 ④ X=-115
② X=+76 ⑤ X=-42
③ X=-54
解:① [X]原=[X]反=[X]补=00100110 B; ② [X]原=[X]反=[X]补=01001100 B
③ [X]原=10110110B,[X]反=11001001B,[X]补=11001010B ④ [X]原=11110011B,[X]反=10001100B,[X]补=10001101B ⑤ [X]原=10101010B,[X]反=11010101B,[X]补=11010110B 1.13已知原码如下,写出其反码和补码。 ① [X]原=01011001B ③ [X]原=00101110B
② [X]原=11011001B ④ [X]原=1111100B
解:① [X]原=[X]反=[X]补=01011001 B;
② [X]原=11011001B, [X]反=10100110B,[X]补=10100111B
1.14先把下列各数转换成二进制数,然后按补码运算规则求出[X+Y]补及其真值。 ① X=+46,Y=+55 ③ X=-51,Y=+97
② X=+78, Y=+15 ④ 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=+29D
1.15已知X和Y的补码,计算[X+Y]补和[X-Y]补,并判断运算结果是否有溢出。 ① [X]补=10011011B
② [X]补=00100110B
③ [X]补=10110001B
[Y]补=11100011B [Y]补=00010111B [Y]补=10001110B 解:① [X+Y]补=1 01111110B,C7⊕C6=1⊕0=1,结果溢出; 第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)串行通信口,实现单片机和其他数据设备之间的串行数据传送;
[-Y]补= 00011101B,[X-Y]补=0 10111000B,C7⊕C6=0⊕0=0,结果无溢出; [-Y]补=11101001B,[X-Y]补=1 00001111B,C7⊕C6=1⊕1=0,结果无溢出; [-Y]补= 01110010B,[X-Y]补=1 00100011B,C7⊕C6=1⊕1=0,结果无溢出;
② [X+Y]补=0 00111101B,C7⊕C6=0⊕0=0,结果无溢出; ③ [X+Y]补=1 00111111B,C7⊕C6=1⊕0=1,结果溢出;
1
(7)2个定时器/计数器(16位),实现定时或计数功能; (8)中断控制系统,共5个中断源,分高低两个优先级; (9)一个片内振荡器和时钟电路,为单片机产生时钟脉冲序列; (10)总线,用于连接各个部件和单片机系统的扩展。
3. 8051单片机的引脚/EA/VPP、RST/VPD、ALE/PROG和PSEN的功能分别是什么? 答::片内外ROM选择端,ROM的寻址范围为64KB,而AT89C51内部只有4KB ROM,EA:当不够用时可在外扩展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的初值为:
X?216?50ms?40536?9E58H2us 所以T1的初值为:TH1=9EH,TL1=58H。
② 定时/计数器方式寄存器TMOD的设置
要求用T1定时、工作在方式1、软启动,所以TMOD寄存器应按如下设置:
T1 GATE 0 0 T0 GATE × × M1 M0 0 1 M1 M0 × × 所以TMOD=10H。
③ 允许T1中断,中断允许寄存器IE设置如下:
④ T1的初始化程序如下:
MOV TMOD, #10H ;置定时器1工作方式1
IE =EA1--ESET1EX1ET0EX001000= 88H 2
MOV TH1, #9EH ;送初值 MOV TL1, MOV IE,
#58H
;开中断
;启动定时器
#88H
SETB TR1
5.12 设MCS-51单片机时钟为12MHz,请利用内部定时器T1编写从P1.1引脚输出3ms矩形波的程序,要求占空比为2:1(高电平2ms,低电平1ms)。
答:要求矩形波周期3ms,占空比2:1,就是在一个周期中,高电平2ms,低电平1ms
① 定时器T1工作在方式1,其方式寄存器TMOD为:
T1TMODGATE0
② 计算初值: 机器周期=12/fosc=1μs 对1ms定时,初值X1为:
X1=65536—1000/1=64536=FC18H
T0M10M01GATE×C/T×M1×M0×C/T0= 10H
对2ms定时,初值X2为:
X2=65536—2000/1=63536=F830H
③ 中断允许寄存器IE为:
IEEA1-0-0ES0ET11EX10ET00EX00= 88H
④ 程序如下:
ORG 0000H LJMP START ORG 001BH LJMP BRT1 ORG 0030H MOV TMOD, MOV TL1, MOV IE, SETB TR1 SETB P1.1 SJMP LOOP ORG 0100H
#10H #30H #88H
MOV TH1, #0F8H
START:
LOOP:
3
BRT0:
MOV C, JC
P1.1 NEXT
#30H
MOV TH1, #0F8H MOV TL1, SJMP COM MOV TH1, #0FCH MOV TL1,
P1.1 RETI END
#18H
NEXT:
COM: CPL
5.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寄存器应按如下设置:
T1 GATE × × T0 GATE 0 0 M1 M0 × × M1 M0 0 1 所以TMOD=01H。 ② 计算定时器T0的初值
已知晶振频率为6MHz,则机器周期为12/fosc=2μs
采用定时功能工作方式1,定时时间为100ms,则T0的初值为:
X?216?100ms?15536?3CB0H2us 所以T0的初值为:TH0=3CH,TL0=B0H。
③ 当T0定时到向CPU申请中断,所以T0应开中断,中断允许寄存器IE设置如下:
④ 程序如下: ORG 0000H
LJMP START ORG 000BH LJMP BKT0 ORG 0100H
;T0中断入口
IE =EA1--ESET1EX1ET0EX000010= 82H 4
共分享92篇相关文档