《单片机课件第二章单片机系统.ppt》由会员分享,可在线阅读,更多相关《单片机课件第二章单片机系统.ppt(76页珍藏版)》请在三一办公上搜索。
1、,2-4 定时器/计数器,定时器/计数器是单片机系统中的重要部件,在检测、控制及智能仪器等应用中,常用定时器作实时时钟,实现定时检测、定时控制。还可用定时器产生毫秒宽的脉冲,驱动步进电机一类的电气机械。计数器主要用于外部事件的计数。,51子系列:2个16位 C/T:T0,T152子系列:3个16位 C/T:T0,T1,T2,一、定时器/计数器 0、1 的结构:(P52 图 2-9),组成:加法计数器 T0:TH0.TL0 T1:TH1.TL1SFR:TMOD 方式控制寄存器 控制工作方式TCON 控制寄存器控制T0、T1的运行含T0.T1的溢出标志和INT0.INT1的中断申请标志。,通过对T
2、H0、TL0、TH1、TL1的初始化编程,控制计数初值;对TMOD、TCON的初始化编程,选择工作方式和控制T0、T1计数。,定时器计数器方式控制寄存器TMOD(89H),T1 T0,M1 M0 工作方式选择:0 0 13位C/T 0 1 16位C/T 1 0 常数自动装入的 8位C/T 1 1 分为 2个 8位C/T,(仅适用于T0),C/T 定时计数选择:0定时、计数信号Tcy(fosc的12分频)1计数、T1脚(P3.5)输入脉冲计数,GATE 选通控制门:1受外部电平控制 INT10时,封锁T1 0不受INT1的控制,、定时器计数器控制寄存器TCON(88H),TR1(TR0):运行控
3、制(软件设置)GATE0GATE1 1启动T1计数TR1INT11 启动 0禁止T1计数TR1INT10禁止,TF1(TF0):溢出中断标志 1T1溢出,请求中断 0中断请求已清除(也可由程序置位和清零,软件中断),二、定时器计数器0、的四种工作方式,、工作方式(P54 图 2-10),M1M0=0013位C/T,由TH 8位和TL低 5位构成T1计数的启动与停止受B点信号的控制:,GATE=0A=1B=TR11:闭合电子开关,允许计数0:断开电子开关,禁止计数GATE=1A=INT1B=TR1INT11:闭合,计数值:N213 X X是TH1、TL1初值定时时间:T(213 X)Tcy819
4、2Tcy最大定时时间:T213Tcy8192Tcy,若:Fosc=12MHZ,则Tcy1us、Tmax8192us8.192ms Fosc=6MHZ,则 Tcy=2us、Tmax=16.38ms,例:应用 T0 产生 1ms 定时,并使 P1.0 输出周期为 2ms 的方波,设晶振为 6MHZ。,1)求计数初值X:(TH0,TL0初值计算)因为 fosc6MHZ,所以 Tcy2us(6106)=210-6s=2us(213X)210-610-3X7692(11110000 01100)B(TH0)=F0H(TL0)=0CH2)方式字TMOD(TMOD)00H,3)程序,用查询 TF0 的状态来
5、控制 P1.0 的输出,在 P1.0 端得到周期为 2ms 的方波。,START:MOV TMOD,#00H;不必MOV TL0,#0CH;置初值MOV TH0,#0F0HSETB TR0;启动T0计数LOOP:JBCTF0,PTF0AJMP LOOPPTF0:MOV TL0,#0CHMOV TH0,#0F0HCPLP1.0;P1求反AJMP LOOP,2、工作方式1(P54 图2-10),M1M001 16位C/T,TH和TL都是8位计数值:N216X65536X定时时间:T(216X)TcyTmax216Tcy65536Tcy,例:上例中要求用方式实现)TH0,TL0初值计算(216X)2
6、10-610-3XFE0CH所以(TH0)0FEH;(TL0)0CH)TMOD设置(TMOD)01H)程序,工作方式(P56 图 2-11),M1M01 0常数自动装入的 8 位C/TTL1:8位加法计数器TH1:初值寄存器计数值:N28X256X定时时间:T(28X)Tcy(256X)Tcy,例:若从T0引脚输入低频负脉冲信号,要求0每次发生负跳变时,从 P1.0 输出一个 500us的同步脉冲,设fosc6MHZ,T1定时500us,T0计数初值FFH,T0计数,T1定时,1)TH0.TL0.TH1.TL1初值设定T0:计数方式,使发生负跳变时加计数溢出,程序查询到TF0=1时启动T1定时
7、,故初值应为FFH。T1:定时500us(256X)210-650010-6 X06H所以(TH1)(TL1)06H2)TMOD(TMOD)26H,3)程序:START:MOV TMOD,#26HMOV TH1,#06HMOV TL1,#06HMOV TH0,#0FFHMOV TL0,#0FFHSETB TR0LOOP1:JBCTF0,PTF01AJMP LOOP1,PTF01:CLR P1.0SETB TR1 LOOP2:JBCTF1,PTF02AJMP LOOP2PTF02:SETB P1.0CLR TR1AJMP LOOP1,工作方式(P56 图 2-12),图 2-12 定时器/计数器
8、0工作方式3结构图,M1M011 T0分为两个独立的 8 位计数器,TL0使用C/T.GATE.TR0.INT0.TF0.可定时.计数TH0使用T1的TR1和TF1只能用作定时。,当T0被用作为方式时,T1可选择方式 012,但由于TR1和TF1被TH0借用,不能产生溢出中断请求,所以只用作串行口的波特率发生器。,门控位的应用,门控位为“”时,使定时器的启动计数受外部输入电平的影响利用这个特性可测试外部输入脉冲的宽度。,被脉冲输入INT1(P3.3),T1定时器方式,GATE(TMOD.7)程控为1,测试原理如图所示(本例中脉冲高电平时间应小于65535个机器周期)。,T1从0开始计数,停止T
9、1计数读出T1值,90HTMOD1TR1,定时器计数器的飞读,不终止计数,读出数值,核对准确性,三定时器计数器,80328052:T2可定时计数,有三种工作方式:,16位自动重装载C捕捉方式串行口波特率发生器方式,T2结构:(P58图2-13,P59图2-14),T2由TH2TL2RCAP2HRCAP2LT2CON等电路组成:,TH2.TL2位加法器,RCAP2HRCAP2L位寄存器,自动装载:初值寄存器,捕捉:T2EX下降沿取TH2.TL2值,(一)的工作控制寄存器T2CON(),TF2 EXF2 RCLK TCLK EXEN2 TR2 C/T2 CP/RL2,CT2:功能选择位定时计数,T
10、R2:运行控制位,1、启动计数,禁止计数,CPRL2:捕捉重装载标志;,TCLK:串口发送时钟标志;决定T2的工作方式,RCLK:串口接收时钟标志;,RCLKTCLKCPRL2工作方式(P60 表2-9),位重载方式,1位捕捉方式,X波特率发生器,T2的溢出脉冲作串口发送时钟,X波特率发生器,T2的溢出脉冲作串口接收时钟,X波特率发生器,T2的溢出脉冲作串口发送接收时钟,)TF2:溢出中断标志,捕捉与重装载方式中,溢出时硬件置,申请中断,响应中断后不清除,必须由程序清零。,波特率发生器方式,溢出时不置,不会提出中断请求。,)EXEN2:外部允许标志;,EXF2:T2的外部中断标志;,当EXEN
11、2时,捕捉方式:T2EX下降沿时TH2.TL2RCAPH.L,EXF2=1,重装载:T2EX下降沿重装初值,EXF2=1,申请中断,中断响应后,EXF2未被硬件清除,必须用程序清零。,当EXEN20时,,T2EX(P1.1)引脚上电平变化对T2没有影响。,自动重装载工作方式,RCLK0TCLK0CPRL20,自动重装载及捕捉工作方式结构图(P58 图2-13),CPRL2024封锁8打开,ATF21:打开13使T2重装,0:封锁13,EXEN21 经门5,7,8使A1,打开13使T2提前开始新的计数周期,T2EX 1置EXF2为1,向CPU发出中断请求,TR20 封锁10,T2停止工作。,32
12、的捕捉工作方式,RCLK0TCLK0CPRL21,CPRL21 A0封锁13,EXEN2=0 封锁24RCAP2HRCAP2L不起作用,同T0。,T1方式1:CT20定时CT21计数,,TF2=1中断请求,TH1.TL2初值必须重新设定。,EXEN2=1 捕捉方式,T2EX 打开24,将TH2,TL2当前值捕捉到,RCAP2HRCAP2L寄存器,同时置EXF2=1,发出中断请求。,波特率发生器工作方式,T2CON中的RCLKK或TCLK被置1。,波特率发生方式结构图(P59 图2-14),TH2TL2为16位加法计数器;,RCAP2HRCAP2L为16位初值寄存器。,CT2=1 对T2(P1.
13、0)外部脉冲加法计数,CT2=0 对fosc2脉冲加法计数,计数溢出,打开1.3,重装初值,溢出脉冲是连续产生的周期脉冲溢出脉冲经16分频后作为串口的发送脉冲或接收脉冲,(2,3)。,RCLK=0 T1溢出脉冲 作为串口接收波特率,RCLK=1 T2溢出脉冲,TCLK=0 T1溢出脉冲 作为串口发送波特率,TCLK=1 T2溢出脉冲,T2处于波特率工作方式时,TF2不置位,不产生中断请求;EXEN2=1时,也不会发生重装载或捕捉的操作。,可利用EXEN2=1得到一个附加的外部中断:,T2EX:外部中断输入脚,EXEN2=0禁止中断,EXEN2=1允许中断,当T2EN时,EXF2=1,向CPU申
14、请中断,EXEN2,注意:,在波特率发生器工作方式下,若T2正在工作,则CPU不能访问TH2TL2;,对于RCAP2HRCAP2L只能读入,不能改写。,(60表2-10T2的各种工作状态),2-5 并行输入输出接口(P 60),I/O接口电路的功能,数据锁存:由于外围设备与计算机工作速度不同,在数据传递过程中会出现等 待,因此I/O口设有锁存器,将数据存入暂存,待计算机适时读取;,信息转换:a、并行、串行转换;b、A/D、D/A转换;,电平转换:转换成TTL电平;,地址译码:每个外设都应有一地址,译码器根据地址找到指定的设备;,缓冲,传送联络信息,端口地址,存储器单元与接口电路统一编址;存储器
15、单元与接口电路端口分别编址。,数据传送方式,无条件传送方式,查询传送方式,中断传送方式,直接数据通道传送方式(DMA),48 P0.P1.P2.P3.输出具有锁存功能;输入没有锁存功能;每位都能独立的输入或输出。P0 三态双向口 P1.P2.P3 准双向口(输入方式:口锁存器必须为”1”),图 2-15 P1口1位结构原理图,一.P1口 准双向口 功能:I/O,1.输出 MOV P1,#data(执行写P1口的指令)若写“1”.V1截止,P1.i由内部上拉电阻拉成高电平。输出“1”。若写“0”.V1导通,P1.i为低电平,输出“0”。2.输入 MOV A,P1(读P1口指令)必须先写“1”,使
16、V1截止,P1.i被拉成高电平,也可被 外部输入源拉成低电平。,3.CPU读 P1口的两种情况:读 P1口的锁存器状态值(端口操作)“读修改写”指令,打开三态门2:(ANL.ORL.JBC.CPL.INC.DEC.DJNZ.)读 P1口的引脚,打开三态门1,读P1口的输入状态。(MOV A,P1)4.8032/8052的P1.0,P1.1具有二重功能:P1.0(T2),P1.1(T2EX)外部控制输入端 5.负载能力 输出:可驱动 4个LSTTL负载(400uA)输入:可被任何TTL电路和MOS电路所驱动,即使是 集电极开路电路或漏极开路电路也无需外接上拉电阻。,二.P3口 准双向、双功能口,
17、功能:1)准双向I/O:操作同P1,第二功能输出线为高电平。,2)第二功能:输出:口线锁存器必须为“1”,此时门3的输出状态由第二功能线确定,P3.i状态取决于第二功能线的电平。输入:RXD、INTO、INT1、T0、T1经缓冲器4输入,直接进入芯片内部。P3口的每一位都可独立地定义为第一I/O功能,或第二 I/O功能。负载能力同P1。,三.P0口:三态双向口,功能:1.I/O 2.地址数据总线口 功能选择:由多路开关 MUX控制,I/O:控制信号“0”.MUX Q端,V2截止写入“1”:V1也截止,P0.i高阻态(外加提升电阻)“0”:V1导通,输出“0”地址/数据:控制信号“1”,MUX
18、地址/数据端,分时输出外部存储器低 8 位地址 A0 A7 和数据。“1”:V1截止,V2导通,输出“1”“0”:V1导通,V2截止,输出“0”地址由ALE下降沿锁存,地址信息来自于片内的R0,R1,PCL,DPL。8031/8032,P0口只能作为地址/数据总线口用。输出可驱动 8个 LSTTL电路。,四.P2口 准双向口,功能:1.I/O 2.地址总线口,输出8位A8A15地址。MUX控制同P0口 地址信息来源于PCH,DPH。8031/8032 一般作为地址总线口使用。负载能力:驱动4个LSTTL电路。,五.P0、P2口的地址/数据总线功能(P134 图4-1),2-6 串行输入输出接口
19、,计算机与外界的信息交换称为通信。并行通信:各位同时传送,通过并行接口实现;口线位数=数据宽度,快、距离20M;串行通信:数据各位顺序传送,占用口线少,距离远、慢。串行通信速度:“数据信号传送率”,单位:bit/s。单工通信:信息只能单方向传送;半双工:能双向传送,但不能同时进行;全双工:能同时双向传送(双方都有独立的接收器和发送器,只需2根线)(P63 图 2-19)。,一.基本概念,通信方式:异步通信(起止式同步方式):以字符为单位传送,每个字符加上起始位“0”,终止位“1”,字符间间隔可变,间隔用“1”填充,实现简单,灵活,速率较低。(P64 图 2-20 异步通信格式),同步通信:以数
20、据块为单位传送信息,在数据块前后加同步字符,数据间没有间隔,可连续发送,块与块之间以同步字符填充。,1.功能:双机,多机通信。口线:RXD(P3.0);TXD(P3.1)2.结构:(P.66.图 2-22)发送缓冲器(只写不读);接收缓冲器(只读不写);发送、接受控制门,发送、接收控制器,输入和移位寄存器;SCON和PCON控制串行口的工作方式以及波特率;T1、T2波特率发生器,改变串行通信的定时。,MCS-51 串行I/O接口的基本工作:发送:将CPU送来的数据转换成一定格式的串行数据,从引脚TXD上按规定波特率逐位输出。接收:监视RXD,一旦出现起始位“0”,就将外围设备送来的一定格式的串
21、行数据转换成并行数据,等待CPU读入。,二.串行接口的功能与结构:,1)串行口控制寄存器SCON(98H),SM0 SM1串口工作方式选择位 0 0 方式0 移位寄存器方式(用于I/O口扩展)0 1 1 8位UART 波特率可变 1 0 2 9位UARTfosc2SMOD64 1 1 3 9位UART 波特率可变UART 通用异步收发器(universal asynchronous transmitter-receiver)REN 允许串行接受位“1”允许接收;“0”禁止接收。软件置“1”,清“0”TB8方式2、3里发送的第 9 位数据;软件设置RB8方式2、3里接收的第9位数据;方式1 接收
22、到的停止位。,TI 发送中断标志 硬件置“1”,软件清“0”。方式0:串行发送到第8位结束时置“1”;其它:串行发送到停止位开始时置“1”。RI 接收中断标志 硬件置“1”,软件清“0”。方式0:接收到第8位结束时置“1”;其它:接收到停止位中间时置“1”。RI.TI.引起中断入口地址 0023H SM2多机通讯控制位 1 方式 2.3 RB8=0 时不激活RI,接收数据无效 RB8=1且 RI=0 时,硬件置RI为1 方式1只有收到有效的停止位时才会激活RI 0 只要接收到一帧信息,都置 RI=1 方式0 SM2=0 多机通讯时,SM2必须置1,双机通讯,通常SM2=0,复位时 00H,2)
23、PCON(电源控制器)87H,三.串行口的工作方式,1)方式0.SM0=0.SM1=0.移位寄存器方式 fosc12 方式0输出 RXD.TXD端接74LS164串行输入并行输出移位寄存器当一个数据写入串行口发送缓冲器以后,就启动一次发送,输出一个字节所必需的基本指令:MOV SCON,#00H MOV A,#nn MOV SBUF,A;启动发送 WAIT:JNB TI,WAIT;送完8位数据后,置1 TI CLR TI,方式0输入 RXD.TXD端接74LS165 并行输入串行输出移位寄存器,置位REN后启动串行接收数据。,接收一个字节的基本指令:MOV SCON,#10 H;置1 REN,
24、启动接收 WAIT:JBC RI,WORK;收到8位数据时,置 1 RI AJMP WAITWORK:MOV A,SBUF(输入输出 P67 图 2-23),2)方式1 SMO=0,SM1=1 8位UART 波特率可变:T1溢出率2SMOD32 RXD:接收,TXD:发送。一帧信息 10 位,其中起始位“0”,8位数据,停止位“1”方式 1 输出:TXD数据输出端 数据写入SBUF 便启动发送,送完一帧信息,置“1”TI。方式 1 输入:RXD 数据输入端 REN置“1”后,允许接收,接收时采样速率是所建波特率的16倍。,当在RXD端检测到“1”到“0”的跳变时,启动接收,并复位内部16分频计
25、数器,以便实现时间同步,计数器的 16 个状态把一位的时间等分成16份,在每位的 7,8,9 个计数状态,位检测器采样RXD的值,接收的值是3次采样中取至少二次相同的值,以排除噪声干扰。若在起始位收到的值不是0,则起始位无效,复位接收电路,在检测到另一个“1”到“0”的跳变时,重新启动接收器。若收到的值为0,则起始位有效,开始接收本帧其余信息。8位数据收齐后,若 RI=0,SM2=1,停止位=1;RI=0,SM2=0;则:8位数据 SBUF,停止位 RB8,置位RI中断标志。,其它情况:RI=0,SM2=1,停止位=0;RI=1则:接收数据丢失。(方式1时序 P68 图 2-25),3)方式2
26、和方式39位UART,传送一帧信息为 11位 其中 1位起始位,8位数据位,1位附加位,可程控为 1或 0,1位停止位。方式 2和方式 3的差别仅仅是波特率不同:方式2:固定 fosc2SMOD64方式3:可变 T1溢出率2SMOD32,发送:TXD数据输出端,第9位数据是SCON中的TB8,执行一条数据写入SBUF的指令,启动发送,发送完,置“1”TI。(MOVSBUF,A)接收:(同方式1类似)9位数据收齐后,若:RI=0,SM2=1,第9位=1;RI=0,SM2=0;则:数据 SBUF和RB8,并置位RI;若:RI=1;SM2=1,第 9位=0 则:接收的一帧信息被丢失。,四.多机通信:
27、(P70 图 2-27),一个主机,多个从机,从机有各自的地址。距离近,直接连接:TXD RXD,RXD TXD,以 TTL电平通信。TB8 为地址/数据识别位:TB8=1 地址,TB8=0 数据,各从机的SM2必须置1。主机发地址:RI=0,SM2=1,RB8=1,所有从机接收;主机发数据:RI=0,SM2=0,RB8=0,某地址从机接收;其他从机 RI=0,SM2=1,RB8=0.数据丢失。双机通信 SM2=0 第 9位数据作奇偶校验位。,远距离:用 RS-232-C 串行接口“0”“1”51串口TTL电平 0.3v3.8v RS-232-电平+12v-12v 电平转换器:MC1488 发
28、送器:TTLRS-232-C MC1489 接收器:RS-232-CTTL,1.T1构成波特率发生器方式 0fose12 方式 2fosc2SMOD64方式 1,3T1的溢出率2SMOD32 T1的溢出率与T1工作方式、计数初值,晶振频率有关。,五.波特率设计,1)T1的溢出率计算:溢出率=1/定时时间,2)方式1.3的波特率设计 方法:先设定串口波特率和T1的工作方式,然后计算计数初值。例:设波特率为 2400 bit/s,fosc为 11.0592 MHZ,T1选方式 2,SMOD=0。则:2400=T1溢出率32 T1溢出率=76800又:T1溢出率=1/定时时间定时时间1/76800=
29、(256-x)11.0592106/12 x=242=F2H,2.T2构成波特率发生器 1)当 C/T2=0 时 波特率=fosc(216)65536-(RCAP2H.RCAP2L)-1 2)当 C/T2=1 时 波特率=外部时钟频率1665536-(RCAP2H.RCAP2L)-1 外部时钟的最高频率为 fosc24,六、串行接口应用举例,例:由串行接口发送带偶校验位的ASC码数据块。设数据位于内部RAM 30H3FH单元,fosc=12M,串行口采用方式1,T1用作波特率发生器,SMOD=0,发送的波特率要求为 1200 b/s.1)T1初值计算:波特率=2SMODT1溢出率32,X=20
30、4=CCH,2)发送程序 TSTART:MOV TMOD,#20H;T1方式2、定时器方式MOV TL1,#0CCH;置T1初值MOV TH1,#0CCHMOV SCON,#40H;置串行口方式1MOV R0,#30H;R0地址指针,指向首址MOV R7,#10H;R7计数器,置字节数SETB TR1;启动T1 LOOP:MOV A,R0;取待发送的一个字节MOV C,P;取奇偶标志,奇“1”偶“0”MOV A.7,C;加偶校验位MOV SBUF,A;启动发送 WAIT:JNB TI,WAIT;等发送完毕CLR TI;清TI标志,准备下次发送INC R0;指向下一字节地址DJNZ R7,LOO
31、P;未发完继续RET,3)接收程序 RSTART:MOV TMOD,#20H;T1方式2、定时器方式MOV TL1,#0CCH;置T1初值MOV TH1,#0CCHMOV R0,#40H;R0地址指针,指向首址MOV R7,#10H;R7计数器,置字节数SETB TR1;启动T1 LOOP:MOV SCON,#50H;置方式1,并启动接受 WAIT:JNB RI,WAIT;等接受完毕MOV A,SBUF;取已接受字节到AMOV C,P;取奇偶标志JC ERROR;若有错,转出错处理程序ANL A,#7FH;未出错,去偶校验位 MOV R0,A;存接受的字节CLR RI;清RI标志,准备下次接受
32、INC R0;指向下一字节地址DJNZ R7,LOOP;未接受完继续RET,2-7 中断系统,中断系统是为了使处理机具有对外界异步事件的处理能力而设置的,良好的中断系统能提高计算机实时处理能力,扩大应用范围。,一.中断请求源,51子系列5个外 2 INT0(P3.2)、INT1(P3.3)I/O设备中断请求.掉电故障等异常事件;内 3 TF0,TF1,TI 或 RI 52子系列6个,增加 TF2或 EXF2 由 SFR TCON 和 SCON 的相应位锁存。,TF1T1(TF0T0)的溢出中断标志:溢出时硬件置“1”,CPU响应中断时硬件清“0”,也可由查询软件清“0”。IE1INT1(IE0
33、 INT0)的请求源:1向CPU请求中断,边沿触发方式下CPU响应中断时硬件清“0”IT1INT1(IT0 INT0)外部中断源触发方式控制位:0电平触发方式,低电平请求中断,硬件不锁存,不撤消,需在用户系统中采取维持和撤消措施。1边沿触发方式,CPU在每个机器周期的S5P2采样INT1的输入电平,若相继两次采样有“1”“0”的变化,则置“1”IE1,直到中断被CPU响应时,才由硬件清“0”IE1。外部中断源输入的高电平和低电平时间必须保持12个振荡周期以上,才能保证CPU检测到由高到低的负跳变。,发送和接收中断标志,置位情况如2-6节,必须由用户中断服务程序清“0”。,二、中断控制,1、中断
34、使能控制,“0”禁止中断“1”允许中断,片内有二个不可寻址的优先级状态触发器 中断优先级寄存器 IP(B8H),2、中断源优先级控制,“0”低优先级“1”高优先级,例如:已知(IP)09H,请写出中断源优先级从高到低的顺序。,解:INT0,T1,T0,INT1,串口,1、中断源的查询 CPU在每个机器周期顺序检查每一个中断源,在S5采 样并按优先级处理所有被激活的中断请求。如果没有被下述条件所阻止,将在下一个机器周期的S1响应激活了的最高级中断请求。CPU正在处理相同或更高级的中断;现行的机器周期不是所执行指令的最后一个机器周期;正在执行的指令是RETI,或是访问IE或IP。若上述条件中有一个
35、存在,CPU将丢弃中断查询的结果。,三、中断响应的过程,2、CPU响应中断:置位相应的优先级状态触发器;清除中断请求标志(TI、RI除外);(PC)压入堆栈;把中断源相应入口地址装入PC,开始执行中断服务子程序直到RETI。中断源入口地址 INT0 0003H T0 000BH INT1 0013H T1 001BH 串口 0023H T2 002BH,3、中断返回(执行RETI后)清零优先级状态触发器.;弹出(PC)、从断点处继续执行主程序。由此可见:中断打断程序,不打断指令;末尾必须有RETI;CPU现场保护和恢复必须由用户的中断服务程序实现。,4、中断请求的撤除(电平触发方式)例:中断程
36、序设计(电平触发方式)注意:低电平保持足够时间,直到中断实际发生为止;低电平时间又不能太长,中断返回之前必须撤消。解决办法之一:在INT0(INT1)端增加一个触发器作为中断请求标志,中断请求发生时置该触发器为零,使INT0为低电平,响应中断后,利用软件发出复位脉冲,使该触发器置1,撤消中断请求。,主程序:ORG0000H;上电复位入口地址AJMPMAINORG 0003H;外部中断 0入口地址AJMPWBINTORG0100HMAIN:SETBP3.0;令P3.0为1,开放74LS74 CLR IT0;设INT0为电平触发方式 SETB EX0;对INT0开中断 SETB EA;CPU开中断
37、HERE:AJMP HERE;踏步等待中断,中断服务程序:ORG 0110HWBINT:CLR P3.0;清INT0中断申请MOV A,#0FFHMOV P1,A;设P1口为输入方式MOV A,P1;读开关所设的数SWAP A;(A)高低四位互换MOV P1,A;置有关灯泡发光SETB P3.0;开放D触发器,准备接RETI;受下次申请,INT0、INT1在 S5P2被采样并锁存到IE0、IE1中,下 一个机器周期被查讯电路查到。若满足条件被激活,转到入口,需两个机器周期。从请求到执行至少需要三个完整的机器周期。若正在同级、高级中断:取决于处理程序的长短;若不在最后机器周期:不会多于 3个机器
38、周期;若正在执行RETI或访问IE,IP:不会多于5个机器周期。因此在单一中断系统中,响应时间总是在 3-8 个机器周期之间。,四、外部中断响应时间,1、定时器中断作为外部中断使用:选计数方式,初值FFH,外源接入T0(T1)脚,负跳变时加 1 溢出,请求中断。2、中断和查询结合的方法:多个中断源线或后接入INT1或INT0,同时把请求信号引入I/O口,以便查询转而执行相应的处理程序,查询的次序决定其优先级。,五、多外中断源系统设计,2-8 MSC-51的复位和复位电路,时钟电路工作后,在RST端出现10ms以上的高电平,单片机被初始化复位。,一、复位后的初始状态,P.76 表2-12 SFR和PC复位后的状态PC0000HTCON00HA 00HT2CON00HB 00HTH000HPSW 00HTL000HSP 00HTH100HDPTR0000HTL100HP0P3 FFHSCON00HIP 000000BSBUF HIE 0000000BPCON00000BTMOD 00H,通电瞬间,RC电路充电过程中 RST端出现正脉冲(10ms以上),R.C 参数由实验调整。当 fosc=6MH Cr 22uf Rr 1K Rr1 200 左右 fosc=12MH Cr 10uf Rr 8.2K,二、复位电路:(P77 图 2-30),