




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2023/1/141第5章80C51的中断系统及定时/计数器80C51单片机的中断系统5.180C51单片机的中断处理过程5.280C51单片机的定时/计数器5.380C52的定时/计数器25.42023/1/1425.1
80C51单片机的中断系统5.1.180C51中断系统的结构
CPU进行工作A时发生了事件B,请求CPU马上处理
CPU暂时中断当前工作A,转去处理事件B
事件B处理完后,回到工作A被中断的地方继续处理A工作
中断的概念中断源中断请求
中断服务中断返回中断系统中断的优点:
CPU利用率高
控制实时性强系统可靠性好2023/1/14380C51中断系统的结构5个中断源、2个优先级2023/1/144中断源5.1.280C51的中断源外部中断0(INT0)外部中断1(INT1)T0溢出中断(TF0)T1溢出中断(TF1)串行口中断(RI或TI)2023/1/145触发方式设置及中断标志
76543210TCONTF1TR1TF0TR0IE1IT1IE0IT0字节地址:88H电平方式(ITx=0),INTx引脚低电平时IEx=1,响应中断后IEx不自动清0(INTx引脚状态)。边沿方式(ITx=1),INTx引脚负跳变时IEx=1,响应中断后IEx自动清0。外部中断标志IE1、IE0(用IEx表示)2023/1/146两种触发方式比较:
电平方式时,INTx低电平必须保持到响应时,否则就会漏掉;在中断服务结束前,INTx低电平必须撤除,否则中断返回之后将再次产生中断。
例,8255的中断请求线在接受读或写操作后即被复位,因此以其去请求电平触发方式的中断比较方便。边沿方式时,采样到有效下降沿后,在IEx中将锁存一个1。若CPU暂时不能响应,申请标志也不会丢失,直到响应时才清0。
例,ADC0809的转换结束信号EOC为正脉冲,经反相后就可以作为80C51的INTx信号。2023/1/147溢出中断标志TF1、TF0(用TFx表示)
溢出中断请求标志TFx,Tx启动后就开始由初值进行加1计数,直至最高位产生溢出使TFx=1向CPU请求中断。CPU响应中断后TFx自动清0。
SCON的中断标志76543210SCONTIRI字节地址:98HRI:串口接收中断标志,响应中断时不能自动清除
TI:串口发送中断标志,响应中断时不能自动清除
2023/1/1485.1.380C51中断的控制中断允许控制中断源的开放和屏蔽由IE控制(1,开放;0,禁止)
76543210IEEAESET1EX1ET0EX0字节地址:A8HEX0:外中断0允许ET0:T0中断允许
EX1:外中断1允许ET1:T1中断允许ES:串口中断允许
EA:CPU中断允许2023/1/149中断优先级控制中断优先级由IP控制(1,高级;0,低级)
76543210IPPSPT1PX1PT0PX0字节地址:B8HPX0:外中断0优先级
PT0:T0中断优先级PX1:外中断1优先级PT1:T1中断优先级PS:串口中断优先级同一优先级的自然顺序:自高至低:INT0、TO、INT1、T1、串口。
2023/1/1410中断优先级遵循的原则几个中断同时申请,先响应高级的中断正进行的中断服务,同级或低级中断不能对其中断,但可以被高级中断所中断。
为此,中断系统内设有对应高、低2个优先级状态触发器(用户不能寻址)。状态触发器的复位由中断返回指令RETI控制。2023/1/14115.2
80C51单片机中断处理过程5.2.1中断响应条件和时间中断响应条件有中断请求
相应的中断允许位为1CPU开中断(即EA=1)
遇下面情况之一将不被响应(此间中断条件失效,中断丢失)
正在处理同级或高级中断
当前选择周期不是所执行指令的最后一个机器周期
正在执行RETI或访问IE或IP
的指令
2023/1/1412中断响应时间中断响应至少需要3个完整的机器周期(3~8个)!受阻时要附加3~5个机器周期(无同级或高级中断正进行)
排序周期不是指令的最后机器周期(如MUL,5个)排序周期恰逢RETI类指令(要再跟指令,若是MUL,8个)2023/1/14135.2.2中断响应过程
CPU响应中断过程将相应优先级状态触发器置1(阻断后来同级或低级中断)执行硬件LCALL指令(PC入栈,中断服务程序入口址送PC
)执行中断服务程序
编写中断服务程序注意中断服务程序入口存放指令LJMP或AJMP现场保护与现场恢复2023/1/14145.2.3中断返回中断服务程序最后指令必须是RETI,其功能:将断点从堆栈弹送PC,CPU从原断点继续执行将相应优先级状态触发器清0,恢复原来工作状态注意不能用RET代替RETI
中断服务程序中PUSH和POP必须成对使用2023/1/14155.2.4中断程序举例【例5-1】单外部中断源示例voidEx0()interrupt2
{Flag=~Flag;}main(){while(1){if(Flag==0)//左移{ScanNum=_crol_(ScanNum,1);P0=ScanNum;}else//右移{ScanNum=_cror_(ScanNum,1);P0=ScanNum;}DelayMs(500);}}2023/1/1416【例5-2】如图所示,编写程序实现:系统上电后,数码管显示“P”。按下S0键则数码管进行加计数,S1键则数码管进行减计数。计数值显示在数码管上。voidt0Isr()interrupt1
{if(Flag0==0)Flag0=1;Flag1=0; }voidEx1Isr()interrupt2{ if(Flag1==0)Flag1=1;Flag0=0; }
2023/1/14175.3
80C51单片机的定时/计数器结构基本型:T0,定时、计数。T1,定时、计数、串口波特率发生器。增强型:增加了T2。见5.3.4节。5.3.1定时/计数器的结构和工作原理TH1、TL1TH0、TL0TCONTMOD2023/1/1418工作原理---实质是16位加1计数器定时器模式时,对内部机器周期计数。定时时间=计数值*机器周期计数器模式时,是对外部脉冲计数。脉冲由T0(P3.4)或T1(P3.5)引脚输入。
注意:(若计数值为N,计数初值为X)溢出信号使TF0或TF1置1,并发出中断请求,16位时有:X=65536-N12MHz晶振时,计数频率低于0.5MHz
2023/1/14195.3.2定时/计数器的控制工作方式寄存器TMOD
76543210TMODGATEC/TM1M0GATEC/TM1M0字节地址:89HGATE:门控位。GATE=0时,只要TRx为1,就可启动计数器工作;GATA=1时,定时器的启动还要加上INTx引脚为高电平这一条件。
C/T:模式选择位。清0为定时模式,置1为计数方式。M1M0:工作方式设置位。可设置四种工作方式(见下页)。2023/1/1420M1M0工作方式说明00方式013位定时/计数器01方式116位定时/计数器10方式28位自动重装定时/计数器11方式3T0分成两个独立的8位定时/计数器;T1此方式停止计数注意:TMOD不能进行位寻址
2023/1/1421控制寄存器TCON
76543210TCONTF1TR1TF0TR0字节地址:88HTFx:Tx溢出标志位。响应中断后TFx有硬件自动清0。用软件设置TFx可产生同硬件置1或清0同样的效果。TRx:Tx运行控制位。置1时开始工作;清0时停止工作。TRx要由软件置1或清0(即启动与停止要由软件控制)。2023/1/14225.3.3定时/计数器的工作方式T0有方式0、1、2、3;T1有方式0、1、2。以T0为例说明。方式0:13位方式
2023/1/1423C/T=1时,则为计数模式,有:
X=213-N=8192-NC/T=0时,则为定时模式,有:
X=213-N=8192-N,N=t/Tcy【例5-3】若计数个数N为2,求计数初值。公式法计算:X=8192-2=8190=1FFEH求补法计算:对0000000000010B取反加1为:
1111111111110B(1FFEH)初值计算:公式法
求补法:X=对N求补2023/1/1424门控位作用当GATE=0时仅由TR0控制与门的开启。与门输出1时,控制开关接通,计数开始;当GATE=1时与门的开启由INT0和TR0共同控制。这种方式可以用来测量INT0引脚上正脉冲的宽度。
注意:方式0的计数初值高8位和低5位确定麻烦
,实际应用中常由16位的方式1取代。2023/1/1425方式1:16位方式
X=216-N=65536-N计数范围:1~65536
计数初值要分成2个字节分别送入TH0、TL02023/1/1426【例5-4】若要求定时器T0工作于方式1,定时时间为1ms,当晶振为6MHz时,求送入TH0和TL0的计数初值各为多少?应怎样送入TH0和TL0?由于晶振为6MHz,所以机器周期Tcy为2µS,因此:N=t/Tcy=1×10-3/2×10-6=500X=216-N=65536-500=65036=FE0CH也可以利用以下2条语句完成:
TH0=(65536-500)/256;
商为计数初值的高字节
TL0=(65536-500)%256;余数为计数初值的低字节分别将FEH送入TH0中,0CH送入TL0中即可。2023/1/1427方式2:8位自动重装方式
X=28-N=256-N计数范围:1~256
特别适合与脉冲信号发生器2023/1/1428方式3:(仅T0有此方式,T1的方式3将停止计数)
TL0进行8位定时/计数TH0进行8位定时(T1方式2时,可出借TR1、TF1)2023/1/14295.3.4定时/计数器应用举例初始化程序应完成:对TMOD赋值,以确定T0和T1的工作方式;求初值,并写入TH0、TL0或TH1、TL1;中断方式时,要对IE赋值,开放中断;使TR0或TR1置位,启动定时/计数器工作。2023/1/1430计数应用【例5-3】有一包装流水线,产品每计数24瓶时发出一个包装控制信号。试编写程序完成这一计数任务。用T0完成计数,用P1.0发出控制信号。确定方式字:T0在计数的方式2时:M1M0=10,GATE=0,C/T=1方式控制字为06H
求计数初值X:N=24X=256-24=232=E8H应将E8H送入TH0和TL0中2023/1/1431while(1){
if(Flag==1){Flag=0;P37=0;P0=SegCode[Counter];DelayMs(20);P37=1; }}主程序(部分)
中断服务程序
voidC0Isr()interrupt1{Flag=1;Counter++;
if(Counter==13)Counter=0;}2023/1/1432定时应用
定时时间较小时(小于70ms)。晶振为11.0592MHz时,Tcy为1.085µS。可直接采用方式1完成定时任务。
【例5-4】利用定时/计数器T0的方式1,产生10ms的定时,并使P2.7引脚上输出周期为20ms的方波,采用中断方式,设系统的晶振频率为11.0592MHz。确定方式字:T0在定时的方式1时:M1M0=01,GATE=0,C/T=0方式控制字为01H
求计数初值X:Tcy为1.085µSN=10ms/1.085µS=9216X=65536-9216=DC00H应将DC送TH0,00H送TL0
2023/1/1433voidmain(void){TMOD=0x01;TL0=0xDC;TH0=0x00;IE=0x82;TR0=1;while(1); }主程序
中断服务程序
voidT0Isr()interrupt1{P27=~P27;TL0=0xDC;TH0=0x00;}2023/1/1434
定时时间较大时(大于70ms)。实现方法:一是采用1个定时器定时一定的间隔(如20ms),然后用软件进行计数;二是采用2个定时器级联,其中一个定时器用来产生周期信号(如20ms为周期),然后将该信号送入另一个计数器的外部脉冲输入端进行脉冲计数。
【例5-5】编写程序,实现用定时/计数器T0定时,使P2.7引脚输出周期为1s的方波。设系统的晶振频率为11.0592MHz。确定方式字:T0在定时的方式1时:M1M0=01,GATE=0,C/T=0方式控制字为01H
求计数初值X:Tcy为1µSN=20ms/12/11.0592=18432X=65536-18432=B800H应将B8送TH0,00H送TL0
采用定时20ms,然后再计数25次的方法实现2023/1/1435voidmain(void){TMOD=0x01; TL0=0x00;TH0=0xB8;IE=0x82;TR0=1;while(1); }voidT0Isr()interrupt1{staticucharCounter;Counter++;
if(Counter==25){P27=~P27;Counter=0; } TL0=0x00;TH0=0xB8;}主程序
中断服务程序
2023/1/1436门控位的应用【例5-6】测量INT0引脚上出现的正脉冲宽度,并将结果(以机器周期的形式)存放在30H和31H两个单元中。
将T0设置为方式1的定时方式,且GATE=1,计数器初值为0,将TR0置1。
INT0引脚上出现高电平时,加1计数器开始对机器周期计数。INT0引脚上信号变为低电平时,停止计数然后读出TH0、TL0的值
单定时器产生多定时间隔(略)2023/1/1437while(1){TMOD=0x09;TL0=0;TH0=0;while(P32);TR0=1;while(!P32);while(P32);TR0=0;Low=TL0;High=TH0;}
主程序(部分)
5.4
80C52的定时/计数器T2T2矢量地址002BH;T2还增加了16位自动重装、捕获及加减计数方式;1.0为计数输入(T2),还可输出脉冲;P1.1(T2EX)有捕获/重装方式触发和检测功能。5.4.1T2的相关控制寄存器工作方式寄存器T2MOD
76543210T2MODT2OEDCEN字节地址:C9HT2OE:输出允许位。为1时,允许定时时钟从P1.0输出。DCEN:计数方向控制使能位。为1时,计数方向与P1.1有关,P1.1为1时,为减计数,P1.1为0时,为加计数。控制寄存器T2CONTF2:溢出标志位。不自动清0(与TF0和TF1不同)。EXF2:T2外部中断标志位。在捕捉和自动重装
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 上海空调清洗维保合同范本
- 个人旧车买卖合同范本
- 出口cip贸易合同范本
- 亮化耗材采购合同范本
- 半成品供货合同范本
- 农村环卫劳务合同范本
- 化妆品oem合同范本
- 仓库分拣合同范本
- 修路收费合同范本
- 主管绩效合同范本
- 北京市丰台区2024-2025学年高二上学期期末英语试题
- 电力安全一把手讲安全课
- 2025年湖南理工职业技术学院高职单招职业技能测试近5年常考版参考题库含答案解析
- 人教版小学数学三年级下册第一单元位置与方向一单元测试
- 雅礼中学2024-2025学年初三创新人才选拔数学试题及答案
- 《草船借箭》课本剧剧本-4篇
- 数学原来这么有趣
- 中国传媒大学《当代电视播音主持教程》课件
- 2022新教科版六年级科学下册全一册全部教案(共28节)
- 档案室建设要求参考技术要求规范
- 公园设计规范CJJ4892
评论
0/150
提交评论