《单片机原理及应用》思考题与习题参考答案
NET1:
NET2:
NET3:
2.20解:
MAIN:
LOOP:
LOOP1:
2.21解:
MAIN:
LS:
SJMP NET3 JC NET2 INC R4 INC DPTR
DJNZ R2,LOOP SJMP NET3 INC R5 INC DPTR
DJNZ R2,LOOP SJMP $ END
ORG 0000H LJMP MAIN ORG 0030H MOV DPTR,#1000H MOV A,#22H MOVX @DPTR,A MOV DPTR,#1030H MOV A,#33H MOVX @DPTR,A MOV DPTR,#1000H MOV R2,#31H MOV
R0,#30H
MOVX A,@DPTR MOV @R0,A INC DPTR INC R0
DJNZ R2,LOOP MOV DPTR,#1000H MOV A,#00 MOV R2,#31H MOVX @DPTR,A INC DPTR
DJNZ R2,LOOP1 SJMP $ END
ORG 0000H LJMP MAIN ORG 0100H
MOV DPTR,#2040H MOV R2,#50 CLR 7FH DEC R2
MOVX A,@DPTR MOV 20H,A INC DPTR
MOVX A,@DPTR MOV 21H,A MOV A,20H
CJNE A,21H,LOOP LOOP: JNC LOOP1 MOV A,20H MOVX @DPTR,A DEC DPTR MOV A,21H MOVX @DPTR,A INC DPTR SETB 7FH LOOP1: DJNZ R2,LS JB 7FH,MAIN SJMP $ END
2.22解: ORG 0000H LJMP MAIN ORG 0030H MAIN: LCALL SUBONE AJMP $ ; SUBONE use dptr,a,30h,31h SUBONE: MOV DPTR,#2000H LOOP: MOVX A,@DPTR XRL A,#41H JNZ TT MOV A,30H MOV DPTR,#20A0H MOVX @DPTR,A MOV DPTR,#20A1H MOV A,31H MOVX @DPTR,A RET TT: INC DPTR MOV 30H,DPH MOV 31H,DPL MOV A,31H CJNE A,@00H,LOOP RET END
2.23解: ORG 0000H LJMP MAIN ORG 0030H MAIN: MOV R2,#20 MOV R1,#30H MOV DPTR,#2000H TT: MOVX A,@DPTR CLR C SUBB A,#30H SWAP A MOV 41H,A INC DPTR
第
9 页 By:Westchan Saturday, March 14, 2009
《单片机原理及应用》思考题与习题参考答案
TT1:
2.24解:
MAIN:
LOOP:
MOVX A,@DPTR CLR C
SUBB A,#30H MOV @R1,A MOV A,41H XCHD A,@R1 MOV @R1,A INC R1 INC DPTR DJNZ R2,TT
MOV DPTR,#3000H MOV R1,#30H MOV R2,#0AH MOV A,@R1
MOVX @DPTR,A INC R1 INC DPTR
DJNZ R2,TT1 SJMP $ END
ORG LJMP ORG MOV MOV MOVX MOV MOV MOVX MOV MOV MOV MOV MOV MOV
0000H MAIN 0030H DPTR,#2400H A,#07H @DPTR,A DPTR,@2450H A,#06H @DPTR,A 30H,#24H 31H,#00H 32H,#25H 33H,#00H R2,#51H DPH,30H
2.25解:
MAIN:
SQR:
TAB:
MOV DPL,31H MOVX A,@DPTR MOV DPH,32H MOV DPL,33H MOVX @DPTR,A INC 31H INC 33H
DJNZ R2,LOOP AJMP $ END
ORG 0000H LJMP MAIN ORG 0030H
MOV DPTR,#2030H MOV A,#03H
MOVX @DPTR,A MOV DPTR,#2031H MOV A,#05H
MOVX @DPTR,A MOV DPTR,#2030H MOVX A,@DPTR LCALL SQR MOV R1,A
MOV DPTR,#2031H MOVX A,@DPTR LCALL SQR ADD A,R1
MOV DPTR,#2040H MOVX @DPTR,A AJMP $ INC A
MOVC A,@A+PC RET
DB 0,1,4,9,16,25 DB 36,49,64,81,100 DB 121,144,169,196,225 END
第2章
3.1解:
当CPU正在处理某件事情的时候,外部发生的某一事件请求CPU迅速去处理, CPU暂时中止当前的工作,转去处理所发生的事件,处理完该事件以后,再回到原来被中止的地方,继续原来的工作。这种过程为中断,实现这种服务的部件称为中断系统。
功能:①实时处理,能对外界异步发生的事件作出及时的处理。②完全消除了CPU在查询方式中的等待现象,大大提高了CPU的工作效率。③实现实时控制。 3.2解:
中断优先级是CPU响应中断的先后顺序。中断优先处理的原则是: (1)先响应优先级高的中断请求,再响应优先级低的中断请求。
(2)如果一个中断请求己被响应,同级的其他中断请求将被禁止。
(3)如果同级的多个中断请求同时出现,CPU则按单片机内部的自然优先级顺序响应各中断请求。 单片机内部自然优先级顺序(由高到低)为:
外部中断0→定时器0中断→外部中断l→定时器1中断→串行接口中断。
10 页 第
By:Westchan Saturday, March 14, 2009
《单片机原理及应用》思考题与习题参考答案
3.3解:
(1)80C51有以下中断源:
① ① 外部中断0(INT0)请求,低电平有效。
② ② 外部中断1(INT1)请求,低电平有效。 ③ ③ T0:定时器/计数器0溢出中断请求。 ④ ④ T1:定时器/计数器1溢出中断请求。 ⑤ ⑤ TI/RI:串行接口中断请求。
(2)通过对特殊功能寄存器TCON、SCON、IE、IP的各位进行置位或复位等操作,可实现对各种中断的控制功能。 3.4解:
中断系统的初始化步骤如下: (1)开相应中断源的中断允许; (2)设定所用中断源的中断优先级;
(3)若为外部中断,则应规定中断触发方式(低电平或负边沿触发)。 3.5解:
单片机一旦响应中断请求, 就由硬件完成以下功能:
(1) 根据响应的中断源的中断优先级, 使相应的优先级状态触发器置1;
(2) 执行硬件中断服务子程序调用, 并把当前程序计数器PC的内容压入堆栈,保护断点,寻找中断源; (3) 清除相应的中断请求标志位(串行口中断请求标志RI和TI除外);
(4) 把被响应的中断源所对应的中断服务程序的入口地址(中断矢量)送入PC, 从而转入相应的中断服务程序。 (5)中断返回,程序返回断点处继续执行。 3.6解:
(1)由中断源提出中断请求,由中断控制允许控制决定是否响应中断,如果允许响应中断,则CPU按设定好的优先级的顺序响应中断。如果是同一优先级的中断,则按单片机内部的自然优先级顺序(外部中断0→定时器0中断→外部中断l→定时器1中断→串行接口中断)响应中断。
CPU响应中断请求后,就立即转入执行中断服务程序。保护断点、寻找中断源、中断处理、中断返回,程序返回断点处继续执行。
(2)由中断允许寄存器IE控制开放和禁止中断。欲开放某一中断,则应先开放总中断允许(EA置1),然后开放相应中断的中断允许(相应位置1);若要要禁止中断,则EA置O即可。
(3)由中断优先级控制寄存器IP控制中断优先级,相应位置1,则设为高级中断,置0则为低级。其中:PS为串行中断优先级,PTl(0)为定时中断1(0)优先级,PXl(0)外部中断1(0)优先级。 3.7解:
(1)有中断源发出中断请求。
(2)中断总允许控制位EA=l, CPU开放总中断。
(3)申请中断的中断源的中断允许位为1,即该中断没有被屏蔽。 (4)无同级或更高级中断正在服务。 (5)当前指令周期已经结束。
(6)若现行指令为RETI或访问IE或IP指令时,读指令以及紧接着的另一条指令已执行完毕。 满足以上条件,则CPU响应响应中断元的中断请求。 3.8解:
INT1为低电平触发的中断系统初始化程序如下:
ORG 0000H LJMP MAIN ORG 0013H LJMP INTN1 ORG 0100H MAIN: SETB EA SETB EX1 ; 开INT1中断 CLR PX1 ; 令INT1为低优先级 CLR IT1 ; 令INT1为电平触发 SJMP $ END
3.9解:
中断服务程序的入口地址如下表:
中断源 中断矢量 11 页 第
By:Westchan Saturday, March 14, 2009
《单片机原理及应用》思考题与习题参考答案
外部中断0(INT0) 定时器T0中断 外部中断1(INT1) 定时器T1中断 串行口中断 0003H 000BH 0013H 001BH 0023H 3.10解: (1)符合以下6个条件可响应新的中断请求:
① 有中断源发出中断请求。
② 中断总允许控制位EA=l, CPU开放总中断。
③ 申请中断的中断源的中断允许位为1,即中断没有被屏蔽。 ④ 无同级或更高级中断正在被服务。 ⑤ 当前的指令周期已结束。
⑥ 若现行指令为RETI或访问IE或lP指令时,该指令以及紧接着的另一条指令已执行完。 (2)如果新的中断请求\优先级\低于正在执行的中断请求或与其同级,则不能被响应。 3.11解:
有两种方式:电平触发和边沿触发。
(1)电平触发方式:CPU在每个机器周期的S5P2期间采样外部中断引脚的输人电平。若为低电平,便置IEl(IEO)为“1” ,申请中断;若外部中断引脚为高电平,则IEl(IEO)清零。
(2)边沿触发方式:CPU在每个机器周期的S5P2期间采样外部中断请求引脚的输人电平。如果在相继的两个机器周期采样过程中,一个机器周期采样到外部中断请求为高电平,接着下一个机器周期采样到外部中断请求为低电平,则使IEl(IEO)置1,申请中断;否则,IEl(1E0)置0。 3.12解:
可以。在相应的中断源的中断程序入口地址处,用一条长跳转指令(LJMP Add16),转到相应64K程序存储器的任意地址(Add16)处,执行相应的中断程序。 3.13 解:
将3个中断源的中断请求经过与门连接到MCS-51的外部中断0的输入引脚INT0上。3、2、1中断源的输入引脚分别接到P1.0、P1.1、P1.2引脚上,以备查询。程序如下:
X1 EQU 2000H ;定义中断源1的入口地址 X2 EQU 2100HH ;定义中断源2的入口地址 X3 EQU 2200H ;定义中断源3的入口地址 ORG 0000H
LJMP START ORG 0003H LJMP INT00 START: ?? ??
INT00: JB P1.0, LP1 ;查询中断源,若此中断源无中断则转LP1
LJMP 2200H ;转入相应的中断服务 LP1: JB P1.1, LP2 ;查询中断源,若此中断源无中断则转LP2
LJMP 2100H ;转入相应的中断服务 LP3: LJMP 2000H ;转入相应的中断服务
?? X1: ?? RETI
X2: ?? RETI
X3: ?? RETI
3.14解:
80C51单片机片内设有2个定时器/计数器:定时器/计数器T0和定时器/计数器T1,T0由TH0、TL0组成,T1由TH1、TLl组成。T0、T1由特殊功能寄存器TMOD、TCON控制。 3.15解:
作定时器用时,计数脉冲来自单片机内部,其频率为振荡频率的1/12。作计数器用时,计数脉冲来自单片机的外部,即P3.4(T0)和P3.5(T1)两个引脚的输入脉冲。 3.16解:
12 页 第
By:Westchan Saturday, March 14, 2009

