预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共57页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

本章内容 中断系统 定时/计数器 C语言的函数§4.3中断系统MCS-51单片机的中断系统结构引起CPU中断的根源,称为中断源。中断源向CPU提出的中断请求。CPU暂时中断原来的事务A,转去处理事件B。对事件B处理完毕后,再回到原来被中断的地方(即断点),称为中断返回。实现上述中断功能的部件称为中断系统(中断机构)。随着计算机技术的应用,人们发现中断技术不仅解决了快速主机与慢速I/O设备的数据传送问题,而且还具有如下优点:2、INT1(P3.3)可由IT1(TCON.2)选择其为低电平有效还是下降沿有效。当CPU检测到P3.3引脚上出现有效的中断信号时,中断标志IE1(TCON.3)置1,向CPU申请中断。3、T0(P3.4),片内定时/计数器T0溢出中断请求标志。当定时/计数器T0发生溢出时,置位TF0,并向CPU申请中断。4、T1(P3.5),片内定时/计数器T1溢出中断请求标志。当定时/计数器T1发生溢出时,置位TF1,并向CPU申请中断。5、RX(P3.0)或TX(P3.1),串行口中断请求标志。当串行口接收完一帧串行数据时置位RI或当串行口发送完一帧串行数据时置位TI,向CPU申请中断。二、中断请求标志 1、TCON的中断标志2、SCON的中断标志三、中断的开放和禁止 CPU对中断系统所有中断以及某个中断源的开放和屏蔽是由中断允许寄存器IE控制的。80C51单片机有两个中断优先级,即可实现二级中断服务嵌套。每个中断源的中断优先级都是由中断优先级寄存器IP中的相应位的状态来规定的。同一优先级中的中断申请不止一个时,则有中断优先权排队问题。同一优先级的中断优先权排队,由中断系统硬件确定的自然优先级形成,其排列如所示:80C51单片机的中断优先级有三条原则:4.3.4中断处理过程中断编程:#include<at89x51.h> #include<intrins.h> voidmain() { EA=1; EX1=1; IT1=1; P1=0xfe; while(1); } voidint1()interrupt2using1 { P1=_crol_(P1,1); }任务9:可控霓虹灯控制 正常情况下8个霓虹灯依次顺序点亮,循环显示,时间间隔为1S。当按下控制按钮后,8个霓虹灯同时亮灭一次,时间间隔为0.5S。1、主程序: T0初始化,开中断。 8个霓虹灯依次循环点亮,时间间隔为1S。#include<reg51.h> #defineucharunsignedchar ucharnum; voidmain() { ucharnum1,w; TMOD=0x01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1;ET0=1;EX0=1;IT0=1;PT0=1; TR0=1; while(1) { w=0x01; for(num1=0;num1<8;num1++) { P1=~w; w<<=1; while(num!=20); num=0; } } }§4.1定时器/计数器4.1.1定时/计数器的结构和工作原理二、定时/计数器的工作原理设置为定时器模式时,加1计数器是对内部机器周期计数(1个机器周期等于12个振荡周期,即计数频率为晶振频率的1/12)。计数值N乘以机器周期Tcy就是定时时间t。GATE:门控位。GATE=0时,只要用软件使TCON中的TR0或TR1为1,就可以启动定时/计数器工作;GATA=1时,要用软件使TR0或TR1为1,同时外部中断引脚或也为高电平时,才能启动定时/计数器工作。即此时定时器的启动条件,加上了或引脚为高电平这一条件。 :定时/计数模式选择位。=0为定时模式;=1为计数模式。 M1M0:工作方式设置位。定时/计数器有四种工作方式,由M1M0进行设置。定时器模式时有:N=t/Tcy 计数初值计算的公式为: 定时器的初值还可以采用计数个数直接取补法获得。 计数模式时,计数脉冲是T0引脚上的外部脉冲。定时/计数器的初始化 一、初始化步骤 程序应完成如下工作: 对TMOD赋值,以确定T0和T1的工作方式。 计算初值,并将其写入TH0、TL0或TH1、TL1。 中断方式时,则对IE赋值,开放中断。 使TR0或TR1置位,启动定时/计数器定时或计数。1、求T1的方式控制字TMOD:2、计算计数初值Count:3、开中断 EA=1;ET0=1; 4、启动定时/计数器 TR0=1; 初始化程序: TMOD=0X01; TH0=0XD8; TL0=0XF0; EA=1; ET1=1; TR1=1;定时器的应用举例②计算计数初值 要产生500us的等宽正方波脉冲,只需在P1.0端以250u