LJMP START ORG 0100H
START : MOV DPTR, #1000H ACALL AGI SJMP $
ORG 0200H
AGI: MOVC A, @DPTR
XRL DPH, #30H;调整DPTR1000H 2000H MOVX @DPTR, A;传送
XRL DPH, #30H;调整DPTR2000H 1000H INC DPTR; 调整DPTR MOV A, DPL
CJNE A, NUM,AGI;DPL 4-9 用位操作指令实现下面的逻辑方程。 (1)P1.2=ACC.1·P1.4·PSW.1+20H·21H (2)PSW.1=(PSW.2+20H+P3.3)·ACC.3+P1.2·P2.1 (1) ORG 0100H MOV C, ACC.1 ANL C, P1.4 ANL C, /PSW.1 MOV 22H, C;暂存结果 MOV C, 20H ANL C, 21H ORL C, 22H MOV P1.2, C;结果输出 SJMP $ (2) ORG 0100H MOV C, /PSW.2 ORL C, 20H ORL C, P3.3 ANL C, ACC.3 MOV 21H, C;暂存结果 MOV C, P1.2 ANL C, P2.1 ORL C, 21H CPL C MOV PSW.1, C SJMP $ 习题五 5-1 8031单片机内设有几个定时/计数器?它们是由哪些专用计时器构成,其地址分别是多少? 8031单片机内设有2个定时/计数器T0,T1 T0由TH0和TL0组成 T1由TH1和TL1组成 TH0地址:8CH TL0地址:8AH TH1地址:8DH TL1地址:8BH 5-2 试说明定时器方式寄存器TMOD中GATE位的作用。如何用 GATE位测量外部脉冲的宽度? GATE位的作用: GATE=0时,由TRX 控制TX启停,常用. GATE=1时,只有TRX和INTX都为1,才可启动TX. 测量外部脉冲宽度方法:使GATE=1,TRX=1, 外部脉冲接于INTX引脚,当INTX由0变1时,TX开始计数(方式0或1), 当INTX由1变0时,TX停止计数(设初值TC=0 即THX=0,TLX=0),检测TX常数的变化量(ΔTC,即THX,TLX). 脉冲宽度=ΔTC*T机器 5-3 设单片机的ΦcLK=12MHz,要求用T0定时150μs,分别计算采用 定时方式0、定时方式1和定时方式2的定时初值。 ΦcLK=12MHz, T机器=1μs 方式0:TC=213-150/1=8192-150=8042=1F6DH=11111011 01101B TH0 TL0低5位 所以初值TH0=FBH,TL0=0DH 方式1:TC=216-150/1=65536-150=65386=FF6AH 所以初值TH0=FFH,TL0=6AH 方式2:TC=28-150/1=256-150=106=6AH 所以初值TH0=TL0=6AH 5-4 单片机ΦCLK=6MHz,问定时器处于不同工作方式时,最大定时范 围分别是多少? ΦcLK=6MHz, T机器=12/6MHz =2μs, Tmin=2μs 方式0:Tmax=213*2μs=16.384ms 方式1: Tmax=216*2μs=131.072ms 方式2.3: Tmax=28*2μs=0.512ms 5-5 什么叫中断源?MCS-51有哪些中断源?各有什么特点? 中断源---中断请求的来源 MCS-51有5个中断源:2个外部中断源INT0,INT1 3个内部中断源T0,T1,TI/RI 特点: INT0,INT1由P3.2,P3.3端口引入,低电平或下降沿引起中断 T0,T1定时/计数器中断,由T0,T1回零溢出引起中断 TI/RI串行I/O中断,串行端口一帧字符发送/接收后引起中断 这些中断由中断允许寄存器IE(A8H)和中断优先寄存器IP(B8H)控制 复位后,IP清零,自然的中断优先顺序: INT0 T0 INT1 T1 TI/RI 中断服务程序入口地址分别为: 0003H 000BH 0013H 001BH 0023H 5-6 什么叫中断嵌套?什么叫中断系统?中断系统的功能是什么? 中断嵌套就是在中断响应的过程中又有更高一级的中断申请到来,则在中断响应的过程中再响应中断(中断中套中断) 中断系统:为了实现中断功能而设置的各种硬件和软件的统称 中断系统的功能:1. 实现中断及返回 2. 实现优先权排队 3. 高级中断源能中断低级中断源的中断处理 5-7 8031的五个中断标志位代号是什么?位地址是什么?它们在什么 情况下被置位和复位? 五个中断标志位代号是: IE0 TF0 IE1 TF1 RI/TI 位地址是: 89H 8DH 8BH 8FH 98H/99H 有中断申请时中断标志位被置位,CPU响应中断后,一般 IE0(INT0) TF0(T0) IE1(INT1) TF1(T1)可被自动复位,但当INT0,INT1为低电平触发时,不能自动复位,此种情况应保证在中断服务程序结束之前将低电平触发信号变为高电平,否则将再次响应中断.RI/TI中断标志也不能自动复位. 5-8 中断允许寄存器IE各位定义是什么?请写出允许T1定时器溢出 中断的指令? 中断允许寄存器IE各位定义: EA ES ET1 EX1 ET0 EX0 全局 串口 T1 INT1 T0 INT0 相应各位为”1”时,开相应中断, 为”0”时, 关相应中断 允许T1定时器溢出中断: MOV IE, #88H 或:SETB EA SETB ET1 5-9 MCS-51响应中断是有条件的,请说出这些条件是什么?中断响应 的全过程如何? 响应中断条件:无下列条件时,中断将被响应 1. CPU正在执行一个同级或高一级的中断服务程序 2. 当前执行的那条指令还未执行完 3. 当前执行的指令是RETI或IE IP寄存器读/写指令,执行这 些指令后,至少再执行一条指令,才会响应中断。 中断响应的全过程:中断响应后,一般自动清除中断请求标志(串口中断请求标志,要用软件清除),由硬件自动将PC内容(断点地址)压入栈中保护,然后将对应的中断矢量装入PC,使程序转向中断矢量地址单元去,执行中断服务程序,中断服务程序执行完成,断点地址出栈装入PC,从断点继续执行程序。 5-10 在MCS-51中,哪些中断可以随着中断被响应而自动撤除?那些中 断需要用户来撤除?撤除的方法是什么? 一般T0 T1 INT0 INT1中断可以随着中断被响应而自动撤除,串行中断RI/TI不能自动撤除,需要用户来撤除,撤除的方法是在中断服务程序中清RI或TI 5-11 试写出INT0为边沿触发方式的中断初始化程序。 SETB IT0;下降沿触发 SETB EA;也可MOV IE, #81H;开中断 SETB EX0 ; 5-12 若8031单片机的ΦCLK =6MHz,请利用定时器TO定时中断的方 法,使P1.0输出如下图所示的矩形脉冲 1ms 2ms T0方式1 定时1ms T机器=12/6MHz =2μs TC=216-1ms/2μs=65536-500=FE0CH ORG 0000H LJMP MAIN ORG 000BH LJMP TOINT MAIN: MOV TMOD, #01H;T0 方式1 MOV TH0, 0FEH MOV TL0, #0CH;定时1ms MOV IE, #82H;开T0中断 MOV R0, #00H;计数初值 SETB TR0;启动T0 SJMP $ TOINT: MOV TH0, #0FEH MOV TL0, #0CH;重置初值 MOV C, P1.0 JC LOW; 测出”1”, 则置”0” INC R0; 测出”0”, 则计数值加1 CJNE R0,#01H,RR; 计数值为1,则”0”持续, 为2,则变为”1” AJMP RRR; ”0”持续 RR: SETB P1.0; 变为”1” MOV R0, #00H AJMP RRR LOW: CLR P1.0; 置”0” RRR: RETI