logo资料库

胡乾斌版单片机课后习题答案.docx

第1页 / 共18页
第2页 / 共18页
第3页 / 共18页
第4页 / 共18页
第5页 / 共18页
第6页 / 共18页
第7页 / 共18页
第8页 / 共18页
资料共18页,剩余部分请下载后查看
单片机作业题及答案(胡乾斌版教材)
第一章
第二章
第三章
第四章
第五章
自测题
第六章
第八章
第九章
第十章
第十一章
单片机作业题及答案(胡乾斌版教材) 第一章 1.5 解: 129, 253, 21.125, 18.6 1000 0001B, 1111 1101B, 1 0101.0010B, 1 0010.1001B, 81H FDH 15.2H 12.9H 1.6 将下列二进制、十六进制数转换为十进制数。 (1010 1101)2 , (1011 0110)2 , (1110 0111.101)2 , (3E8)16 , (5D.8)16 答:(1010 1101)2=173D (1011 0110)2=182D (1110 0111.101)2=231.625D (3E8)16=1000D (5D.8)16=93.5D 1.7 完成下列数制转换。 (1101 1110.01)2=(DE.4)16 (6A8.4)16=(110 1010 1000.01)2 1.11 写出下列二进制数的原码、反码和补码。 +101 1011 , -101 1011 , +111 111 , -111 1111 解: +1011011 -1011011 +1111111 -1111111 原码 01011011 11011011 01111111 11111111 反码 01011011 10100100 01111111 10000000 补码 01011011 10100101 01111111 10000001
1.12 已知机器数[X1]原=[X2]反=[X3]补= 01010111B,试求 X1、X2 和 X3 的真值(用十进制数表 示)。 解:X1、X2 和 X3 的真值为 87D。 1.13 已知:[x1]原=1011 0101,[x2]反=1011 0101,[x3]补=1011 0101,试求:[x1]反, [x2]补,[x3]原各为何值? 解:   反 11001010 B   补 10110110 B   原 11001011 B 1.14 将下列十进制数分别用压缩 BCD 码和非压缩 BCD 码表示。 123, 1997.7 解:(1)  压缩 BCD  000100100011  非压缩 BCD  000000010000001000000011 (2) [1997.7]压缩 BCD 码=0001 1001 1001 0111. 0111 [1997.7]非压缩 BCD 码=0000 0001 0000 1001 0000 1001 0000 0111. 0000 0111
第二章 2.4 解: RST:复位引脚,当 RST 引脚端出现≥10ms 的高电平时,单片机复位,各 寄存器恢复默认值。 ALE:地址锁存使能输出,当访问外部存储器时,P0 口输出的低八位地址 由 ALE 输出的控制信号锁存到片外地址锁存器,ALE 高电平期间,P0 口上一般出 现地址信息,在 ALE 下降沿时,将 P0 口上地址信息锁存到片外地址锁存器,在 ALE 低电平期间 P0 口上一般出现指令和数据信息。平时不访问片外存储器时, 该端也以六分之一的时钟频率固定输出正脉冲。因而亦可作系统中其它芯片的时 钟源。ALE 可驱动 8 个 TTL 门。 /EA :内部和外部程序存储器选择信号,在使用 8051 时,当/EA 引脚接高 电平时,4 KB 以内的地址在片内 ROM,大于 4KB 的地址在片外 ROM 中,两者 共同构成 64KB 空间;当/EA 引脚接低电平时,片内 ROM 被禁用,全部 64KB 地址都在片外 ROM 中。使用 8031 单片机时,由于 8031 单片机无片内 ROM, /EA 应接地。 2.6 什么是堆栈?堆栈有何作用?在 MCS-51 单片机应用系统程序设计时,有时 为什么要对堆栈指针 SP 重新赋值?如果CPU 在操作中要使用两组工作寄存 器,试问 SP 的初值应如何设定? 答:堆栈是在内存 RAM 中开辟的一个特定的存储区,专门用来暂时存放数据或 存放返回地址,并按照“后进先出”的原则进行操作。 因为 SP 的默认值为 07H,当工作寄存器组选为组 1、组 2、组 3 时,堆栈区 会与工作寄存器组发生冲突,因此要对 SP 重新赋值。 如果 CPU 在操作中要使用 0、1 这两组作为工作寄存器组,SP 的初值最小 为 0FH。 2.7 MCS-51 设置 4 组工作寄存器有什么特点?开机复位后,CPU 使用的是哪组 工作寄存器?他们的地址如何?CPU 如何指定和改变当前工作寄存器组? 答: MCS-51 单片机共 4 组工作寄存器组,每组寄存器均可选作 CPU 当前使用 的工作寄存器组,其余各组只能作为数据缓冲器使用。 开机复位后,CPU 使用组 0 工作寄存器 它们的地址 R0~R7:00H~07H CPU 通过改变 PSW 中的 RS1、RS0 的值指定当前工作寄存器组。 2.10 2.12
第三章 3.4 解:机器码为 F8A7 C8 C4 C8 程序执行完后 R0 的内容为 7A。 3.5 3.6 3.8 3.11 试分析下面程序段执行后,A=? (30H)=? MOV MOV MOV MOV ANL ORL SWAP CPL XRL ORL 30H , #0A4H A , #0D6H R0 , #30H R2 , #51H A A A A A 30H , A , R2 , @R0 , #0FEH 解:A=6EH (30H)=0EEH 3.12 下述程序执行后,SP=? A=? B=? 2000H SP , #40H A , #30H SUBR A , #10H B , A L1 ORG MOV MOV LCALL ADD MOV L1:SJMP 2000H 2003H 2005H 2008H 200AH 200BH 200EH 2011H 2013H SUBR: MOV PUSH PUSH DPTR , #200AH DPL DPH
2015H RET 解:A=B=30H SP=42H 3.13 两个 4 为 BCD 码数相加,设被加数和加数分别存于片内 RAM 的 40H~41H、 45H~46H 单元中,和数存于 50H、51H 单元中(均是低位在前,高位在后), 试编写程序。 解: ORG MOV ADD DA MOV MOV ADDC DA MOV 2000H A , 40H A , 45H A 50H , A A , 41H A , 46H A 51H , A 3.19 若 A=80H,指令 CJNE A,#8DH,—50H 的第一个字节地址为 0150H,试问指 令执行后,转移的目标地址为多少? 解:转移的目标地址为:0100H 3.22 把累加器 A 中的内容与立即数 24H 相加,若结果不等于 80H,则程序跳转 8 个字节后继续执行,否则顺序执行,试编写程序。 解: 3.23 ORG ADD CJNE 2000H A , #24H A , #80H , 08H 3.24 设 R0=20H , R1=25H , (20H)=80H , (21H)=90H , (22H)=A0H , (25H)=A0H , (26H)=6FH , (27H)=76H ,下列程序执行后,结果如何? CLR MOV LOOP:MOV ADDC MOV INC INC DJNZ JNC MOV SJMP NEXT:DEC SJMP C R2 , #3 A , @R0 A , @R1 @R0 , A R0 R1 R2 , LOOP NEXT @R0 , #01H $ R0 $ 解:A=17H R0=23H R1=28H (20H)=20H (21H)=00H (22H)=17H (23H)=01H
(25H)=0A0H (26H )=6FH (27H)=76H 3.25 设片内 RAM (30H)=0EH,执行下面程序后,A=?指出该程序的功能。 MOV MOV RL MOV RL RL ADD R0 , #30H A , @R0 A B , A A A A , B 解:A=8CH,该程序功能:将 30H 中存储的数据乘以 10,结果装入累加器 A 中。 3.27 第四章 4.13 试编程吧以 2040H 为首地址的连续 10 个单元的内容按升序排列,存到原来 的存储区中。 ; 大循环次数 ;小循环次数 解: ORG 2000H DATAA EQU 2040H MOV R2, #09H SORT: MOV A, R2 MOV R3, A MOV DPTR, # DATAA LOOP:MOVX A,@DPTR MOV R4, A INC DPTR MOVX A, @DPTR MOV R5, A MOV A, R4 CLR C SUBB A, R5 JC NEXT MOV A, R4
MOVX @DPTR, A MOV RO, DPL DEC R0 MOV DPL, R0 MOV A, R5 MOVX @DPTR, A INC DPTR NEXT: DJNZ R3, LOOP DJNZ R2, SORT HERE: SJMP $ 4.14 试编一查表程序,已知数据块的首地址为 2100H,数据块以-1 作为结束, 现要求找出 ASCII 码 A,并将其地址存入 21A0H 和 21A1H 单元中,若未 找到,则 21A0H 和 21A1H 单元中村 FFH。 解: ORG SJMP 0000H MAIN R0, #09 MAIN: MOV SORT: MOV A, R0 R1, A DPTR, #2040H A, @DPTR R2, A DPTR A, @DPTR C A, R2 EXCHANGE NEXT MOV MOV LOOP: MOVX MOV INC MOVX CLR SUBB JC SJMP EXCHANGE: MOVX MOV DEC MOVX XCH MOVX INC MOV MOVX DJNZ DJNZ END NEXT: A,@DPTR R3, A DPL ;注意!!!DEC 指令不能对 DPTR 进行操作, ;但可以对 DPH、DPL 进行操作 A, @DPTR A, R3 @DPTR, A DPTR A, R3 @DPTR, A R1, LOOP R0, SORT
4.21 在 2030H 单元和 2031H 单元中各有一个小于 16 的数,试编程求这两个数 的平方差,用调用子程序方法实现,结果存在 2040H 单元中 解: ORG 0000H LJMP START 1000H ORG START: MOV DPTR, #2031H MOVX A, @DPTR LCALL SQURSUB MOV MOV MOVX A,@DPTR LCALL SQURSUB CLR SUBB MOV MOVX @DPTR,A SJMP C A,R0 DPTR,#2040H R0,A DPTR,#2030H OVER SQURSUB:MOV B,A ;平方函数,参数是 A MUL AB RET SJMP END $ OVER: 第五章 5.7 试用 74LS138 译码器一个译码电路,分别选中 4 片 2764 和 2 片 6264,且列 出各芯片所占的地址空间。 解:74LS138 的接法不唯一。给出了图示接法的地址范围答案。
分享到:
收藏