MOV A,@R1 SJMP LOOP2
MOV A,R3 DJNZ R2, LOOP
LOOP1: LOOP2:
MOV @R0,A RET
10.答:
(1)SP=SP+1=61H
SP=SP+1=62H
(61H)=PC的低字节=03H (62H)=PC的高字节=20H
(2)PC=3456H (3)不可以
(4)2KB=2048 Byte
11.答:可对程序做如下修改:
ORG 0100H MOV R7, #200
MOV R6, #123 DJNZ R6, DEL2
;增加的指令
;将原来的立即数125改为123
DEL: DEL1: DEL2:
NOP DJNZ R7, DEL1 RET
程序修改后的延时时间为:1+(1+123*2+1+2)*200+2=50003us=50.003ms
第5章 AT89S51的中断系统
参考答案
1.答:0013H;001BH 2.答:外部中断1,定时器T1
3. 答:RETI指令在返回的同时清除相应的优先级触发器,以允许下次中断,而RET指令则没有这个操作。除了这一点两条指令不同外,其它操作都相同。
4.答:D
5. 答:在一个单一中断的系统里,AT89S51单片机对外部中断请求的响应时间总是在3~8个机器周期之间。
在下述三种情况下,AT89S51将推迟对外部中断请求的响应: (1)AT89S51正在处理同级或更高优先级的中断。
(2)所查询的机器周期不是当前正在执行指令的最后一个机器周期。 (3)正在执行的指令是RETI或是访问IE或IP的指令。
如果存在上述三种情况之一,AT89S51将丢弃中断查询结果,将推迟对外部中断请求的响应。
6.答:D
7.答:PC、PC、程序存储器 8.答: 参考程序段如下:
SETB IT1
SETB EX1 SETB EA
9.答:(A)
10.答:一个中断源的中断请求被响应,必须满足以下必要条件: (1)总中断允许开关接通,即IE寄存器中的中断总允许位EA=1。 (2)该中断源发出中断请求,即该中断源对应的中断请求标志为“1”。 (3)该中断源的中断允许位=1,即该中断被允许。 (4)无同级或更高级中断正在被服务。 11.答:(A)、(C)、(D)
12.答:参见电路如图5-10,参考程序如下:
ORG 0000H LJMP MAIN ORG 0013H LJMP INT_EX1 ORG 0030H CLR
IT0
;采用电平触发,低电平有效中断 ;允许外部中断1
MAIN:
SETB EX1 SETB EA
;插入一段用户程序
WAIT: MOV PCON,#01H ;单片机进入休眠方式等待中断
NOP LJMP WAIT
;以下为外部中断1服务子程序 INT_EX1:
JB P1.2,NEXT1
;判断是不是3号中断
LJMP INT_IR3 ;跳转到3号中断处理程序
NEXT1: JB P1.1,NEXT2
LJMP INT_IR2
;判断是不是2号中断 ;跳转到2号中断处理程序 ;跳转到1号中断处理程序
NEXT2: LJMP INT_IR1
ORG 1000H
INT_IR3: 相应中断处理程序
RETI
;中断返回
ORG 1100H
INT_IR2: 相应中断处理程序
RETI
;中断返回
ORG 1200H
INT_IR1: 相应中断处理程序
RETI
;中断返回
第6章 AT89S51的定时/计数器
参考答案
1.答:(A)对;(B)错;(C)错;(D)错; 2.答:因为机器周期:
1212 Tcy???4(?s)6fOSC3?10
所以定时器/计数器工作方式0下,其最大定时时间为
TMAX?213?TC?213?4?10?6?8.192(ms)
同样可以求得方式1下的最大定时时间为262.144ms;方式2下的最大定时时间为1024ms。
3.答:定时/计数器作定时时,其计数脉冲由系统振荡器产生的内部时钟信号12分频后提供。定时时间与时钟频率和定时初值有关。