答:
手工汇编:通过查指令的机器代码表(表3-2),逐个把助记符指令“翻译”成机器代码,再进行调试和运行。这种人工查表“翻译”指令的方法称为“手工汇编”。
机器汇编:借助于微型计算机上的软件(汇编程序)来代替手工汇编。通过在微机上运行汇编程序,把汇编语言源程序翻译成机器代码。
反汇编:将二进制的机器码程序翻译成汇编语言源程序的过程称为“反汇编”。 3. 设计子程序时应注意哪些问题?
答:编写子程序时应注意以下问题: ? ?
子程序的第一条指令前必须有标号。
主程序调用子程序,有如下两条子程序调用指令:
① 绝对调用指令ACALL addr11。被调用的子程序的首地址与绝对调用指令的下一条指令的高5位地址相同,即只能在同一个2KB区内。
② 长调用指令LCALL addr16。addr16为直接调用的目的地址,被调用的子程序可放置在64KB程序存储器区的任意位置。
? ? ?
子程序结构中必须用到堆栈,用来保护断点和现场保护。 子程序返回时,必须以RET指令结束。 子程序可以嵌套,但要注意堆栈的冲突。
4. 为什么对基本型的8051子系列单片机,其寄存器间接寻址方式(例如MOV A,@R0)中,规定R0或R1的内容不能超过
7FH?而对增强型的8052子系列单片机,R0或R1的内容就不受限制?
答:基本型的8051子系列单片机,由于其片内RAM的地址范围为00H~7FH,而80H~FFH为特殊功能寄存器区,而对特殊功能寄存器寻址,只能使用直接寻址方式。对片内RAM寻址,当使用寄存器间接寻址是采用R0或R1作为间接寻址的,因此R0或R1的内容不能超过7FH。
增强型的8052子系列单片机,片内RAM的地址范围为00H~FFH,因此作为间接寻址寄存器的R0或R1的内容就不受限制。
第4章 思考题及习题4参考答案
一、填空
1.外部中断1的中断入口地址为。定时器T1的中断入口地址为。
答:0013H;001BH
2.若(IP)=00010100B,则优先级最高者为,最低者为。
第 11 页 共 11 页
答:外部中断1,定时器T1
3.AT89S52单片机响应中断后,产生长调用指令LCALL,执行该指令的过程包括:首先把的内容压入堆栈,以进行断点保护,
然后把长调用指令的16位地址送入,使程序执行转向中的中断地址区。 答:PC、PC、程序存储器
4.AT89S52单片机复位后,中断优先级最高的中断源是。
答:外部中断0
5.当AT89S52单片机响应中断后,必须用软件清除的中断请求标志是。
答:串行中断、定时器/计数器T2中断 二、单选
1.下列说法错误的是( )。
A. 同一级别的中断请求按时间的先后顺序响应
B. 同一时间同一级别的多中断请求,将形成阻塞,系统无法响应
C. 低优先级中断请求不能中断高优先级中断请求,但是高优先级中断请求能中断低优先级中断请求 D. 同级中断不能嵌套 答:B
2.在AT89S52的中断请求源中,需要外加电路实现中断撤销的是( )。
A. 电平方式的外部中断请求 B.跳沿方式的外部中断请求 C.外部串行中断 D.定时中断 答:A
3.中断查询确认后,在下列各种AT89S52单片机运行情况下,能立即进行响应的是( )。
A.当前正在进行高优先级中断处理 B.当前正在执行RETI指令 C.当前指令是MOV A,R3
D.当前指令是DIV指令,且正处于取指令的机器周期 答:C
4.下列说法正确的是( )。
A. 各中断源发出的中断请求信号,都会标记在AT89S52的IE寄存器中 B. 各中断源发出的中断请求信号,都会标记在AT89S52的TMOD寄存器中
第 12 页 共 12 页
C. 各中断源发出的中断请求信号,都会标记在AT89S52的IP寄存器中
D. 各中断源发出的中断请求信号,都会标记在AT89S52的TCON、SCON以及T2CON寄存器中 答:D 三、判断对错
1.定时器T0中断可以被外部中断0中断。错
2. 必须有中断源发出中断请求,并且CPU开中断,CPU才可能响应中断。错 3.AT89S52单片机中的同级中断不能嵌套。对
4.同为高中断优先级,外部中断0能打断正在执行的外部中断1的中断服务程序。错 5.中断服务子程序可以直接调用。错
6.在开中断的前提下,只要中断源发出中断请求,CPU就会立刻响应中断。错 四、简答
1.中断服务子程序与普通子程序有哪些相同和不同之处?
答:RETI指令在返回的同时自动清除相应的不可寻址的优先级触发器,以允许下次中断,而RET指令则没有这个操作。除了这一点两条指令不同外,其它操作都相同。
2.AT89S52单片机响应外部中断的典型时间是多少?在哪些情况下,CPU将推迟对外部中断请求的响应?
答:在一个单一中断的系统里,AT89S51单片机对外部中断请求的响应时间总是在3~8个机器周期之间。 在下述三种情况下,AT89S51将推迟对外部中断请求的响应: (1)AT89S52正在处理同级或更高优先级的中断。
(2)所查询的机器周期不是当前正在执行指令的最后一个机器周期。 (3)正在执行的指令是RETI或是访问IE或IP的指令。
如果存在上述三种情况之一,AT89S52将丢弃中断查询结果,将推迟对外部中断请求的响应。 3.中断响应需要满足哪些条件?
答:一个中断源的中断请求被响应,必须满足以下条件: (1)总中断允许开关接通,即IE寄存器中的中断总允许位EA=1。 (2)该中断源发出中断请求,即该中断源对应的中断请求标志为“1”。 (3)该中断源的中断允许位=1,即该中断被允许。 (4)无同级或更高级中断正在被服务。
4.编写外部中断1为跳沿触发的中断初始化程序段。
答: 参考程序段如下:
第 13 页 共 13 页
?? SETB IT1
SETB EX1 SETB EA
??
5.某系统有三个外部中断源IR1、IR2和IR3,当某一中断源发出的中断请求使INT1引脚变为低电平时(参见图4-11),便要求CPU进行处理,它们的优先处理次序由高到低为IR3、IR2、IR1,中断处理程序的入口地址分别为1000H,1100H,1200H。试编写主程序及中断服务子程序(转至相应的中断处理程序的入口即可)。
答:参见电路如图4-11,参考程序如下:
ORG
0000H
LJMP MAIN ORG
0013H
LJMP INT_EX1 ORG CLR
0030H IT0
;采用电平触发,低电平有效中断
MAIN:
SETB EX1 SETB EA
;允许外部中断1
;插入一段用户程序 WAIT:
AJMP
WAIT
;单片机等待中断
;以下为外部中断1服务子程序 INT_EX1: JB
P1.2,NEXT1 ;判断是不是IR3中断
;跳转到IR3中断处理程序
LJMP INT_IR3
JB
NEXT1:
P1.1,NEXT2 ;判断是不是IR2中断
;跳转到IR2中断处理程序
;跳转到IR1中断处理程序
LJMP INT_IR2
NEXT2:
LJMP INT_IR1
1000H
ORG
INT_IR3: 相应中断处理程序
RETI
;中断返回
ORG 1100H
第 14 页 共 14 页
INT_IR2: 相应中断处理程序
RETI
;中断返回
ORG 1200H
INT_IR1: 相应中断处理程序
RETI
;中断返回
第5章 思考题及习题5参考答案
一、填空
1.如果采用晶振的频率为3MHz,定时器/计数器Tx(x=0,1)工作在方式0、1、2下,其方式0的最大定时时间为 ,方式1的最大定时时间为,方式2的最大定时时间为。 答:32.768ms,262.144ms,1024μs
2.定时器/计数器用作计数器模式时,外部输入的计数脉冲的最高频率为系统时钟频率的。 答:1/24
3.定时器/计数器用作定时器模式时,其计数脉冲由提供,定时时间与有关。 答:系统时钟信号12分频后,定时器初值
4.定时器/计数器T1测量某正单脉冲的宽度,采用方式可得到最大量程?若时钟频率为6MHz,求允许测量的最大脉冲宽度为 。
答:方式1定时,131.072ms。
5. 定时器T2 有3种工作方式:、和,可通过对寄存器中的相关位进行软件设置来选择。 答:捕捉,重新装载(增计数或减计数),波特率发生器,T2CON
6. AT89S52单片机的晶振为6MHz,若利用定时器T1的方式1定时2ms,则(TH1)=,(TL1)=。 答:FCH,18H。 二、单选
1.定时器T0工作在方式3时,定时器T1有 种工作方式。
A.1种
B.2种 C.3种
D.4种
答:C
2. 定时器T0、T1工作于方式1时,其计数器为 位。
A.8位 B.16位 C.14位 D.13位 答:B
3. 定时器T0、T1的GATEx=1时,其计数器是否计数的条件。
A. 仅取决于TRx状态 B. 仅取决于GATE位状态 C.是由TRx和INTx两个条件来共同控制 D. 仅取决于INTx的状态
第 15 页 共 15 页