单片机课后练习答案 下载本文

内容发布更新时间 : 2024/5/2 7:44:52星期一 下面是文章的全部内容请认真阅读。

答:(1000H)=‘M’(1001H)=‘A’(1002H)=‘I’(1003H)=‘N’(1004H)=34H

(1005H)=12H (1006H)=00H (1007H)=30H (1008H)=70H (1009H)=00H

4.5 设计子程序时注意哪些问题?

答:在编写子程序时应注意以下问题:

(1)子程序的第一条指令的地址称为子程序的入口地址。该指令前必须有标号。

(2)主程序调用子程序,是通过主程序或调用程序中的调用指令来实现的。

(3)注意设置堆栈指针和现场保护,因调用子程序时,要把断点压入堆栈,子程序返回执 行RET指令时再把断点弹出堆栈送入PC指针,因此子程序结构中必须用堆栈。

(4)子程序返回主程序时,最后一条指令必须是RET指令,它的功能是在执行调用指令时, 把自动压入堆栈中的断点地址弹出送入PC指针中,从而实现子程序返回主程序断点处继续 执行主程序。

(5)子程序可以嵌套,即主程序可以调用子程序,子程序又可以调用另外的子程序,通常 情况下可允许嵌套8层。

(6)在子程序调用时,还要注意参数传递的问题。

4.6 试编写1个程序,将内部RAM中45H单元的高4位清0,低4位置1。

解: MOV A,45H

ANL A,#0FH

ORL A,#0FH

4.7 已知程序执行前有A=02H,SP=42H,(41H)=FFH,(42H)=FFH。下述程序执行后,

POP DPH POP DPL

MOV DPTR,#3000H RL A MOV B,A

MOVC A,@A+DPTR

PUSH A MOV A,B INC A

MOVC A,@A+DPTR PUSH A ORG 3000H

DB 10H,80H,30H,80H,50H,80H

A=80H SP=40H (41H)=50H (42H)=80H PC=8050H。

4.8 计算下面子程序中指令的偏移量和程序执行的时间(晶振频率为12MHZ)。

7B0F MOV R3,#15 ;1个机器周期

7CFF DL1: MOV R4,#255 ;1个机器周期

8B90 DL2: MOV P1,R3 ;2个机器周期

DC DJNZ R4,DL2 ;2个机器周期

DB DJNZ R3,DL ;2个机器周期

22 RET ;2个机器周期

解:程序执行的时间为15.346μs。

4.9 假定A=83H,(R0)=17H,(17H)=34H,执行以下指令:

ANL A,#17H

ORL 17H,A

XRL A,@R0

CPL A

后,A的内容为(0CBH)

4.10 试编写程序,查找在内部RAM的30H~50H单元中是否有0AAH这一数据。若有,则 将51H单元置为“01H”;若未找到,则将51H单元置为“00H”。

ORG 0000H MOV R0,#30H MOV R2,#21H LOOP: MOV A,@R0 CJNE A,#0AAH,NOT MOV 51H,#01H

SJMP DEND NOT: INC R0 DJNZ R2,LOOP MOV 51H,#00H DEND: SJMP DEND

4.11 试编写程序,查找在内部RAM的20H~40H单元中出现“00H”这一数据的次数。并 将查找到的结果存入41H单元。

ORG 0000H MOV R0,#20H MOV R2,#21H

MOV 41H,#00H LOOP: MOV A,@R0 CJNE A,#00H,NOTE INC 41H

NOTE: INC R0 DJNZ R2,LOOP END

4.12 若SP=60H,标号LABEL所在的地址为3456H。LCALL指令的地址为2000H,执行 如下指令: 2000H LCALL LABEL后,堆栈指针SP和堆栈内容发生了什么变化?PC 的值等于什么?如果将指令LCALL直接换成ACLAA是否可以?如果换成ACALL指令, 可调用的地址范围是什么?

答:堆栈指针SP的内容为62H,堆栈内容(61H)=03H,(62H)=20H;PC值为3456H, 不能将LCALL换为ACALL,因为LCALL可调用64KB范围内的子程序,而ACALL所调 用的子程序地址必须与ACALL指令下一条指令的第一个字节在同一个2KB区内(即16位 地址中的高5位地址相同。如果换为ACALL,可调用的地址范围为2002H-27FFH。

第五章 MCS-51的中断系统

5.1 什么是中断系统?

答:能够实现中断处理功能的部件称为中断系统。

5.3 什么是中断源?MCS-51有哪些中断源?各有什么特点?

答:产生中断的请求源称为中断源。MCS----51中断系统共有5个中断请求源:(1)外部中

断请求0,中断请求标志为IE0。(2)外部中断请求1,中断请求标志为IE1。(3)定时器/

计数器T0溢出中断请求,中断请求标志为TF0。(4)定时器/计数器T1溢出中断请求,中 断请求标志为TF1。(5)串行口中断请求,中断请求标志为TI或RI。特点:2个外部中断 源,3个内部中断源。

5.4外部中断1所对应的中断入口地址为(0013H)。

5.5下列说法错误的是:(A,B,C)

(A)各中断源发出的中断请求信号,都会标记在MCS-51系统的IE寄存器中。

(B)各中断源发出的中断请求信号,都会标记在MCS-51系统的TMOD寄存器中。

(C)各中断源发出的中断请求信号,都会标记在MCS-51系统的IP寄存器中。

(D)各中断源发出的中断请求信号,都会标记在MCS-51系统的TCON和SCON寄存器中。

5.6 MCS-51单片机响应外部中断的典型时间是多少?在哪些情况下,CPU将推迟对外部中 断请求的响应?

答:典型时间是3-8个机器周期。在下列三种情况下,CPU将推迟对外部中断请求的响应:

(1)CPU正在处理同级的或更高级优先级的中断

(2)所查询的机器周期不是当前所正在执行指令的最后一个机器周期

(3)正在执行的指令是RETI或是访问IE或IP的指令。

5.7 中断查询确认后,在下列各种8031单片机运行情况中,能立即进行响应的是(D)

(A)当前正在进行高优先级中断处理

(B)当前正在执行RETI指令

(C)当前指令是DIV指令,且正处于取指令的机器周期

(D)当前指令是MOV A,R3

5.8 8031单片机响应中断后,产生长调用指令LCALL,执行指令的过程包括:首先把(PC) 的内容压入堆栈,以进行断点保护,然后把长调用指令的16位地址送(PC),使程序执行 转向(响应中断请求的中断入口的地址)中的中断地址区。

5.9 编写出外部中断1为跳沿触发的中断初始化程序。

ORG 0000H AJMP MAIN ORG 0013H AJMP PINT1 ORG 0100H

MAIN: SETB IT1 SETB EX1 SETB EA

HERE: AJMP HERE PINT1: RETI END

5.10 在MCS-51中,需要外加电路实现中断撤除的是(D)

(A)定时中断

(B)脉冲方式的外部中断

(C)外部串行中断

(D)电平方式的外部中断

5.11 MCS-51有哪几种扩展外部中断源的方法?

答:扩展外部中断源的方法有:定时器/计数器作为外部中断源的使用方法;中断和查询结

合的方法。

5.12 下列说法正确的是(C D)

(A)同一级别的中断请求按时间的先后顺序顺序响应。

(B)同一时间同一级别的多中断请求,将形成阻塞,系统无法响应。

(C)低优先级中断请求不能中断高优先级中断请求,但是高优先级中断请求能中断低优先 级中断请求

(D)同级中断不能嵌套。

5.13 中断服务子程序返回指令RETI和普通子程序返回指令RET有什么区别?