单片机定时与中断讲解
第05章 MCS-51单片机的中断与定时(1-4)

2
1
TH0
;P1.0输出“0” ;P1.0输出“1”
5.2 MCS-51单片机的中断系统
五、外中断应用举例
1. 中断初始化程序
设置外中断源的触发方式 设置中断允许寄存器IE 设置中断优先级寄存器IP
2. 中断服务程序
保护现场 中断处理 恢复现场
23/65
5.2 MCS-51单片机的中断系统
【例5-3】 设外部中断0为下降沿触发方 式,高优先级,试编写中断初始化程序
5.2 MCS-51单片机的中断系统
【例5-4】 将单脉冲接到外中断0(INT0)引脚,利 用P1.0作为输出,经反相器接发光二极管。编写程 序,每按动一次按钮,产生一个外中断信号,使发 光二极管的状态发生变化,由亮变暗,或反之
P1.0 单脉冲 发生器 INT0
1
+5V
8031
26/65
5.2 MCS-51单片机的中断系统
串口:0023H
20/65
5.2 MCS-51单片机的中断系统
四、中断请求的撤除
1.定时/计数器中断请求标志TF0/TF1会自动撤除 2.串行口中断请求标志TI/RI要用指令撤除
CLR TI ;清TI标志位 CLR RI ;清RI标志位
3.负脉冲触发的外中断请求标志IE0/IE1会自动撤除 4.低电平触发的外中断请求信号需要外加电路撤除
下次课前请预习5.3节
30/65
5.3 51单片机的定时器/计数器
MCS-51单片机内部有两个16位定时/计数器 T0和T1,简称定时器0和定时器1
在特殊功能寄存器TMOD和TCON的控制下, 它们既可以设定成定时器使用,也可以设定 成计数器使用
定时/计数器有4种工作方式,具有中断功能, 可以完成定时、计数、脉冲输出等任务
单片机中的中断与定时器的原理与应用

单片机中的中断与定时器的原理与应用在单片机(Microcontroller)中,中断(Interrupt)和定时器(Timer)是重要的功能模块,广泛应用于各种嵌入式系统和电子设备中。
本文将介绍中断和定时器的基本原理,并探讨它们在单片机中的应用。
一、中断的原理与应用中断是指在程序执行过程中,当发生某个特定事件时,暂停当前任务的执行,转而执行与该事件相关的任务。
这样可以提高系统的响应能力和实时性。
单片机中的中断通常有外部中断和定时中断两种类型。
1. 外部中断外部中断是通过外部触发器(如按钮、传感器等)来触发的中断事件。
当外部触发器发生状态变化时,单片机会响应中断请求,并执行相应的中断服务程序。
外部中断通常用于处理实时性要求较高的事件,如按键检测、紧急报警等。
2. 定时中断定时中断是通过定时器来触发的中断事件。
定时器是一种特殊的计时设备,可以按照设定的时间周期产生中断信号。
当定时器倒计时完成时,单片机会响应中断请求,并执行相应的中断服务程序。
定时中断常用于处理需要精确计时和时序控制的任务,如脉冲计数、PWM波形生成等。
中断的应用具体取决于具体的工程需求,例如在电梯控制系统中,可以使用外部中断来响应紧急停车按钮;在家电控制系统中,可以利用定时中断来实现定时开关机功能。
二、定时器的原理与应用定时器是单片机中的一个重要模块,可以用于计时、延时、频率测量等多种应用。
下面将介绍定时器的工作原理和几种常见的应用场景。
1. 定时器的工作原理定时器是通过内部时钟源来进行计时的。
它通常由一个计数器和若干个控制寄存器组成。
计数器可以递增或递减,当计数值达到设定值时,会产生中断信号或触发其他相关操作。
2. 延时应用延时是定时器最常见的应用之一。
通过设定一个合适的计时器参数,实现程序的精确延时。
例如,在蜂鸣器控制中,可以使用定时器来生成特定频率和持续时间的方波信号,从而产生不同的声音效果。
3. 频率测量应用定时器还可以用于频率测量。
单片机中断、定时器的应用

80C51中断的控制 80C51中断的控制
一,中断允许控制
CPU对中断系统所有中断以及某个中断源的开放和屏 CPU对中断系统所有中断以及某个中断源的开放和屏 蔽是由中断允许寄存器IE控制的 控制的. 蔽是由中断允许寄存器IE控制的.
EX0(IE.0),外部中断0允许位; EX0(IE.0),外部中断0允许位; ET0(IE.1),定时/计数器T0中断允许位; ET0(IE.1),定时/计数器T0中断允许位 中断允许位; EX1(IE.2),外部中断0允许位; EX1(IE.2),外部中断0允许位; ET1(IE.3),定时/计数器T1中断允许位; ET1(IE.3),定时/计数器T1中断允许位 中断允许位; ES(IE.4),串行口中断允许位; ES(IE.4),串行口中断允许位; EA (IE.7), CPU中断允许(总允许)位. (IE.7), CPU中断允许 总允许) 中断允许(
80C51单片机中断处理过程 80C51单片机中断处理过程
3.2.1 中断响应条件和时间
中断响应条件
中断源有中断请求; 中断源有中断请求; 此中断源的中断允许位为1; 此中断源的中断允许位为1 CPU开中断(即EA=1). CPU开中断 开中断( EA=1).
随着计算机技术的应用, 随着计算机技术的应用,人们发现中断技 术不仅解决了快速主机与慢速I/O设备的数 术不仅解决了快速主机与慢速I/O设备的数 据传送问题,而且还具有如下优点: 据传送问题,而且还具有如下优点: 分时操作.CPU可以分时为多个I/O设备 分时操作.CPU可以分时为多个 可以分时为多个I/O设备 服务,提高了计算机的利用率; 服务,提高了计算机的利用率;
2,SCON的中断标志 SCON的中断标志
RI(SCON.0),串行口接收中断标志位.当允 RI(SCON.0),串行口接收中断标志位. ),串行口接收中断标志位
中断及定时器实验报告

一、实验目的1. 理解中断和定时器的基本概念及工作原理。
2. 掌握51单片机中断系统和定时器的配置方法。
3. 学会使用中断和定时器实现特定功能,如延时、计数等。
4. 培养动手实践能力和问题解决能力。
二、实验原理中断是计算机系统中的一种机制,允许CPU在执行程序过程中,暂停当前程序,转去执行另一个具有更高优先级的程序。
51单片机具有5个中断源,包括两个外部中断(INT0、INT1)、两个定时器中断(定时器0、定时器1)和一个串行口中断。
定时器是51单片机内部的一种计数器,可以用于产生定时中断或实现定时功能。
51单片机有两个定时器,即定时器0和定时器1。
定时器可以工作在模式0、模式1、模式2和模式3。
三、实验内容及步骤1. 实验内容一:外部中断实验(1)实验目的:掌握外部中断的使用方法,实现按键控制LED灯的亮灭。
(2)实验步骤:- 使用Keil for 8051编译器创建项目。
- 根据电路原理图连接电路。
- 编写程序,配置外部中断,实现按键控制LED灯的亮灭。
2. 实验内容二:定时器中断实验(1)实验目的:掌握定时器中断的使用方法,实现LED灯闪烁。
(2)实验步骤:- 使用Keil for 8051编译器创建项目。
- 根据电路原理图连接电路。
- 编写程序,配置定时器中断,实现LED灯闪烁。
3. 实验内容三:定时器与外部中断结合实验(1)实验目的:掌握定时器与外部中断结合使用的方法,实现按键控制LED灯闪烁频率。
(2)实验步骤:- 使用Keil for 8051编译器创建项目。
- 根据电路原理图连接电路。
- 编写程序,配置定时器中断和外部中断,实现按键控制LED灯闪烁频率。
四、实验结果与分析1. 外部中断实验:成功实现了按键控制LED灯的亮灭。
当按下按键时,LED灯亮;松开按键时,LED灯灭。
2. 定时器中断实验:成功实现了LED灯闪烁。
LED灯每隔一定时间闪烁一次,闪烁频率可调。
3. 定时器与外部中断结合实验:成功实现了按键控制LED灯闪烁频率。
单片机中断原理及应用

单片机中断原理及应用单片机中断是一种重要的编程技术,它在嵌入式系统中起到关键作用。
本文将介绍单片机中断的原理以及在实际应用中的一些常见用法。
一、中断的原理中断是一种在程序执行期间由外部事件引发的特殊信号,它会打断正常的程序流程,跳转到中断处理程序进行相应的处理。
单片机中断可以通过硬件或软件触发,根据中断优先级的不同,可以采用优先级编码或轮询方式进行中断请求的处理。
硬件中断通常由外部事件引起,例如按键按下、定时器溢出、串口数据接收等。
当这些事件发生时,单片机会发出中断请求信号,并保存当前的执行状态,然后跳转到相应的中断服务程序进行处理。
处理完毕后,单片机会恢复到被中断的位置继续执行。
软件中断是通过执行特殊的指令触发,常用于在程序中主动请求中断。
软件中断一般用于实现程序间的通信、任务调度等功能。
二、中断的应用1. 外部中断外部中断是单片机中最常见的中断类型之一,它可以响应外部事件的触发。
例如,当用户按下按键时,就可以通过外部中断实现按键检测并进行相应的处理。
外部中断通常用于实现外设的输入功能,如按钮检测、触摸屏输入等。
在外部中断的应用中,首先需要配置外部中断引脚的触发方式和中断服务程序。
当外部事件触发时,单片机会跳转到中断服务程序中执行相应的操作。
在中断服务程序中,可以对输入信号进行处理,如检测按键是否按下、读取触摸屏坐标等,然后根据需求进行相应的响应或操作。
2. 定时器中断定时器中断是单片机中另一个常见的中断类型。
通过定时器中断,可以实现精确的定时任务,如测量时间间隔、产生定时脉冲等。
定时器中断通常用于实现系统时钟、延时、定时采样等功能。
在定时器中断的应用中,首先需要对定时器进行配置以及中断服务程序的编写。
在中断服务程序中,可以进行一系列与时间相关的操作,如更新系统时钟、执行定时任务、控制脉冲输出等。
3. 串口中断串口中断用于处理串口通信中的数据接收或发送中断事件。
单片机通过串口中断可以实现与外部设备的可靠通信,如与PC机的数据传输、与传感器的数据采集等。
单片机定时器 中断

定时/计数器1、定时/计数器的结构定时/计数器T0和T1分别是由两个8位的专用寄存器组成,即定时/计数器T0由TH0和TL0组成,T1由TH1和TL1组成。
此外,其内部还有2个8位的特殊功能寄存器TMOD和TCON,TMOD负责控制和确定T0和T1的功能和工作模式,TCON用来控制T0和T1启动或停止计数,同时包含定时/计数器的状态。
2、定时/计数器的功能选择T0和T1都具有定时和计数两种功能。
在TMOD中,有一个控制位C/T,分别用于选择T0和T1是工作于定时器方式,还是计数器方式。
计数功能里,计数脉冲的频率不能高于振荡脉冲频率的1/24。
定时功能里,计数频率为振荡频率的1/12。
3、工作方式控制寄存器TMODTMOD不能位寻址,只能有用字节传送指令设置其内容。
TMOD的各位定义如下:D7D6D5D4D3D2D1D0 GATE C/T M1M0GATE C/T M1M0定时器1定时器0GATE位:门控位。
该位置位时只有在INTn引脚置高及TRn控制置位时才可打开定时器/计数器,这时可用于测量在INTn引脚出现的正脉冲的宽度。
该位清零时,置位TR1即可打开定时器/计数器。
C/T:计数/定时功能选择位。
控制定时器是用作定时器或计数器,该位清零则用作定时器(从内部系统时钟输入);该位置位则用作计数器(计数脉冲从Tn引脚输入)。
M1和M0:定时器模式选择位:M1M0定时器模式00模式0:TLn中低5位与THn中的8位构成13位计数器01模式1:16位定时器/计数器,无预分频器10模式2:8位自装载定时器,当溢出时将THn存放的值装入TLn11模式3:定时器0此时作为双8位定时/计数器。
TL0作为一个8位定时器/计数器,通过标准定时器0控制位控制。
TH0仅作为一个8位定时器,由定时器1控制位控制。
在这种模式下定时/计数器T1关闭。
4、定时器控制寄存器TCONTCON各位的定义如下:D7D6D5D4D3D2D1D0 TF1TR1TF0TR0IE1IT1IE0IT0 TF1:定时器1溢出标志。
c51单片机中断详解
响应中断请求的条件
一、一个中断请求被响应,需满足以下 必要条件:
(1)IE寄存器中的中断总允许位EA=1。
(2)该中断源发出中断请求,即该中断源对应 的中 断请求标志为“1”。
(3)该中断源的中断允许位=1,即该中断没有 被屏蔽。
(4)无同级或更高级中断正在被服务。
二、中断响应的主要过程
中断源
或者用: MOV 0A8H,#8AH ;A8H为IE寄存器 字节地址
三、中断优先级寄存器IP 两个中断优先级,可实现两级中断 嵌套。如图所示:
每个中断源的中断优先级都是 由中断优先级寄存器IP中的相应位 的状态来控制的。 中断优先级寄存器IP,其字节地址 为B8H。
IP各个位的含义: (1)PS——串行口中断优先级
控制位 1:高优先级中断; 0:低优先级中断。
(2)PT1——定时器T1中断优先级控制位 1:高优先级中断; 0:低优先级中断。
(3)PX1——外部中断1中断优先级控制位 1:高优先级中断; 0:低优先级中断。
(4)PT0——定时器T0中断优先级控制位 1:高优先级中断; 0:低优先级中断。
(5)PX0——外部中断0中断优先级控制位 1:高优先级中断; 0:低优先级中断。
地址是固定的,不能改动。
例
三、中断处理 编写中断中断服务程序即可
四、中断返回
▪中断返回由专门的中断返回指令 RETI来实现。
五、中断请求的撤消 2.外部中断请求的撤消 (1)跳沿方式外部中断请求的撤消 是自动撤消的。 (2)电平方式外部中断请求的撤消。
六、外部中断的响应时间 外部中断的最短的响应时间为3
二、中断允许控制
中断允许控制寄存器IE
CPU对中断源的开放或屏蔽,由片内 的中断允许寄存器IE控制(两级控制)。 字节地址为A8H,可位寻址。格式如下:
单片机定时器中断原理和C语言代码详解
单片机定时器中断原理和C语言代码详解定时器中断原理
定时器中断是单片机中最重要的一种中断,它是一种计时中断,可以用于控制计时器的定时时间间隔,也可用来实现控制结构的计时功能。
由于定时器中断经常用于实现定时触发事件,因此,它是单片机中用于实现定时任务的首选方法。
定时器中断原理是,使用一个计数器,每次计数器计数一次时会发出一个中断请求信号,从而触发中断处理程序,让单片机可以跳转到中断服务程序中来执行相应的处理工作。
定时器中断在单片机中经常被用于计时、调度等功能。
它通常是通过定时器的定时中断使用的,定时器是单片机中在执行特定任务时,用于计时的一种设备,它可以通过设置计数器的计数值来控制定时中断的触发时间,如果计数器的计数值与设置值相等,即可触发定时中断。
定时器中断C语言代码
以下给出的定时器中断C语言代码可以用在支持定时器中断的单片机上,用于执行指定任务:
//定时器中断服务程序
//设置定时器中断服务程序的设置参数
//1.设置定时器的定时中断时间
//设置定时器的定时中断时间,单位是微秒(us)
//中断的时间可以根据设备的性能设置。
单片机实验3 中断、定时器计数器实验
西南科技大学实验报告课程名称:单片机原理及应用A实验名称:中断、定时器/计数器实验姓名:学号:班级:生医1401指导教师:雷华军西南科技大学信息工程学院制实验题目数码管动态扫描显示驱动、键盘动态扫描驱动一、实验目的1、熟练巩固单片机开发环境KEIL界面的相关操作和PROTUES仿真软件的操作,会使用HEX文件进行单片机的仿真。
2、了解定时器的原理和四种工作方式的使用方法,学习定时器的相关应用,包括产生信号和计数,利用定时器进行延时等。
3、进一步掌握熟练单个数码管以及多位数码管的显示原理,学会将0~1000的数字进行显示。
4、掌握利用单片机产生矩形方脉冲的相关原理。
二、实验原理1、定时器结构和原理图①上图①为定时器T0、T1的结构,其中振荡器经12分频后作为定时器的时钟脉冲,T为外部计数脉冲输入端,通过开关K1选择。
反相器,或门,与门共同构成启/停控制信号。
TH 和TL为加1计数器,TF为中断标志。
每接收到一个脉冲,加1计数器自动加1,当计数器中的数被加为0时产生溢出标志,TF将被置1。
计数器工作方式的选择和功能的实现需要配置相应的寄存器TMOD和TCON。
2、定时器工作方式定时器共有四种工作方式分别为方式0——方式3。
方式0:13位计数器,最大计数值为213个脉冲。
方式1:16位计数器,最大计数值为216个脉冲。
方式2:8位自动重装计数器。
该方式下,TL进行计数工作,TH用于存放计数初值,当产生溢出中断请求时会自动将TH中的初值重新装入TL,以使计数器继续工作。
方式3:仅限于T0计数器,在方式3下,T0计数器被分成两个独立的8为计数器TL0和TH0。
3、定时器间隔1ms产生一个脉冲利用单片机1 P3.0口进行脉冲的输出,通过定时器进行端口定时控制,实现每1ms高低电平变换。
就可以实现一个占空比为50%的矩形脉冲输出。
对于定时器的定时功能实现,需要进行定时器模式选择,定时器初值设定。
4、利用中断进行脉冲的计数将单片机1 P3.0口输出的脉冲连接到单片机2的中断INT0口P3.2,通过脉冲的高低电平变换触发中断0,进行脉冲个数的计数。
单片机的延时与中断问题及解决方法
单片机的延时与中断问题及解决方法单片机的延时和中断是在单片机程序设计中经常会遇到的问题,延时和中断的处理直接影响着单片机程序的实时性和稳定性。
正确的处理延时和中断问题对于单片机应用的稳定性和可靠性非常重要。
本文通过详细介绍延时和中断的概念、产生原因以及解决方法,希望能够帮助读者更好地理解和处理单片机程序中的延时和中断问题。
一、延时的概念和产生原因延时在单片机程序设计中是一种常见的操作,通常用来控制某一操作的执行时间。
延时的产生通常有两种情况:一种是为了完成某种特定的操作所需要的时间,例如LED灯闪烁、蜂鸣器鸣叫等;另一种是为了防止快速的外部信号输入导致单片机不能正常处理的情况。
在单片机程序中,常用的延时方法有软件延时和硬件延时两种。
软件延时是通过循环等待的方式来实现一定时间的延时,而硬件延时则是通过单片机内部的定时器来实现。
软件延时的实现简单,但占用了大量的CPU时间,同时由于单片机的工作频率和其他任务的影响,软件延时的精确度往往难以保证。
硬件延时则可以通过单片机的定时器来实现,其精确度和稳定性更高,但需要一定的硬件支持。
在进行延时设计时,还需要考虑到单片机的工作频率和其他任务的影响。
为了提高单片机的实时性和稳定性,我们可以采用中断的方式来实现延时。
通过设置定时器中断,可以在定时器计时达到预设值时触发中断,从而实现精确的延时。
在处理中断时,只需要简单地将延时的操作放在中断服务程序中即可,不会占用过多的CPU时间,从而提高了单片机的实时性。
三、中断的概念和产生原因中断是一种在单片机程序执行过程中,由硬件或软件引起的突发事件,可以打断当前程序的正常执行流程,转去执行中断服务程序。
中断通常由外部设备的输入、定时器溢出等硬件事件引起,也可以由软件通过程序指令触发。
中断的产生是为了及时响应外部事件,保证单片机的实时性和稳定性。
在单片机程序设计中,常见的中断包括外部中断、定时器中断、串口中断等。
外部中断是由外部设备的输入引起的中断,通常用来处理按键、传感器等外部设备的输入。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
定时器的四种工作方式
方式的选择:根据M1,M0来选择。
00:方式0 01:方式1 10: 方式2 11: 方式3
主要特点:
方式0:13位定时器。 TH0的8位+TL0的低5位 方式1:16位定时器。 TH0的8位+TL0的8位 方式2:能重复置初始值的8位定时器 。 TL0和TH0必须赋相 同的值。 方式3:只适用于定时器0,T0被拆成两个独立的8位定时器 TL0,TH0。 其中:TL0与方式0、1相同,可定时或计数。用定时器T0 的 GATE、C/T、TR0、TF0、T0、和INT0控制。 TH0只可用作简单的内部定时功能。占用T1的控制 位TF1、TR1和INT1,启动关闭仅受TR1控制。
定时/计数器
启动定时/计数器
根据设置的定时/计数器启动方式,启动定时/计数器。 如果采用软件启动,则需要把控制寄存器中的TR0或TR1 置1;如果采用硬软共同启动方式,不仅需要把控制寄 存器中的TR0或TR1置1,还需要相应外部启动信号为高
电平。
定时器的方式寄存器TMOD
作用:TMOD用来确定两个定时器的工作方式。低半字节设
1.标准库函数 标准库函数是由C51的编译器提供的,用户不必定义这 些函数,可以直接调用。KEIL C51编译器提供了100多个 库函数供我们使用。常用的C51库函数包括一般I/O口函数、 访问SFR地址函数等,在C51编译环境中,以头文件的形式 给出。 2.用户自定义函数 用户自定义函数是用户根据需要自行编写的函数,它 必须先定义之后才能被调用。
函数调用
函数调用就是在一个函数体中引用另外一个已经定义 的函数,前者称为主调用函数,后者称为被调用函数,函 数调用的一般格式为: 函数名(实际参数列表); 对于有参数类型的函数,若实际参数列表中有多个实 参,则各参数之间用逗号隔开。实参与形参顺序对应,个 数应相等,类型应一致。
函数调用
在一个函数中调用另一个函数需要具备如下条件: (1)被调用函数必须是已经存在的函数(库函数或 者用户自己已经定义的函数。 如果函数定义在调用之后,那么必须在调用之前 (一般在程序头部)对函数进行声明。 (2)如果程序使用了库函数,则要在程序的开头用 #include预处理命令将调用函数所需要的信息包含在本 文件中。如果不是在本文件中定义的函数,那么在程序 开始要用extern修饰符进行函数原型说明。
定时器的方式0、1示意图
8位或 高8位 低5位 中断 TF0 TH0 TL0 控制
12 分频 C/T=0 C/T=1
OSC
T0(P3.4)
+
TR0 GATE INT0 (P3.2)
返回
定时器的方式2示意图
12 分频 TF0 中断 10 8位 控制 C/T=0 C/T=1 OSC
TL0 溢出
T0(P3.4)
举 例2
用定时器工作方式2实现的1秒延时函数如下: void delay1s() { unsigned int i; // i取值范围为0~4000,因 此不能定义成unsigned char TMOD=0x20; // 设置T1为方式2 TH1=6; // 设置定时器初值, 放在for循环之外 TL1=6; for(i=0;i<4000;i++){ // 设置4000次循环次数 TR1=1; // 启动T1 while(!TF1); // 查询计数是否溢出,即定时250s 时间到,TF1=1 TF1=0; // 250s定时时间 到,将定时器溢出标志位TF1清零 } }
1
M1
1
M0 GATE C/T
0 0 0
M1
0
M0
1
即控制字为61H,其指令形式为:
MOV TMOD,#61H
定时器的控制寄存器TCON
作用:TMOD用来控制两个定时器的启动、停止,表明定时
器的溢出、中断情况。
字节地址:88H,可以位寻址。系统复位时,所有位均清零。 格式: D7 D6 D5 D4 D3 D2 D1 D0
什么是中断
中断是指通过硬件来改变CPU的运行方向。计算机在执行
程序的过程中,外部设备向CPU发出中断请求信号,要求 CPU暂时中断当前程序的执行而转去执行相应的处理程序, 待处理程序执行完毕后,再继续执行原来被中断的程序。 这种程序在执行过程中由于外界的原因而被中间打断的 情况称为“中断”。
中断基本概念
TH0 8位
+
TR0 GATE INT0 (P3.2)
定时器的初始值的计算
对于不同的工作方式,计数器位数不同,故最大计数值M也不同: 方式0:M=213=8192
方式1:M=216=65536
方式2:M=28=256 方式3:定时器0分为2个8位计数器,每个M均为256。
因为定时/计数器是作加1计数,并在计满溢出时产生中断,因此初
函数分类和定义
函数定义的一般形式是: 函数类型 函数名(形式参数表) 形式参数说明 { 局部变量定义 函数体语句 } 其中,“函数类型”说明了自定义函数返回值的类型。 “函数名”是自定义函数的名字。 “形式参数表”给出函数被调用时传递数据的形式参数,形式参数 的类型必须要加以说明。ANSI C标准允许在形式参数表中对形式参数 的类型进行说明。如果定义的是无参数函数,可以没有形式参数表, 但是圆括号不能省略。 “局部变量定义”是对在函数内部使用的局部变量进行定义。 “函数体语句”是为程序中,子程序的作用是由函数来实现的,函数是C语言的
基本组成模块,一个C语言程序就是由若干个模块化的函数组成的。
C程序都是由一个主函数main( )和若干个子函数构成,有且只有一 个主函数,程序由主函数开始执行,主函数根据需要来调用其他函数,
其它函数可以有多个。
函数分类和定义
定时/计数器工作方式有四种:方式0、方式1、方式2和方式3。
定时/计数器启动方式有两种:软件启动和硬软件共同启动。除 了从控制寄存器TCON发出的软件启动信号外,还有外部启动信号引
脚,这两个引脚也是单片机的外部中断输入引脚。
定时/计数器
设置计数初值
T0、T1是16位加法计数器,分别由两个8位专用寄存器组成,T0 由TH0和TL0组成,T1由TH1和TL1组成。TL0、TL1、TH0、TH1的访问 地址依次为8AH8DH,每个寄存器均可被单独访问,因此可以被设 置为8位、13位或16位计数器使用。 在计数器允许的计数范围内,计数器可以从任何值开始计数,对 于加1计数器,当计到最大值时(对于8位计数器,当计数值从255 再加1时,计数值变为0),产生溢出。 定时/计数器允许用户编程设定开始计数的数值,称为赋初值。 初值不同,则计数器产生溢出时,计数个数也不同。例如:对于8 位计数器,当初值设为100时,再加1计数156个,计数器就产生溢 出;当初值设为200时,再加1计数56个,计数器产生溢出。
置定时器T0,高半字节设置定时器T1。
字节地址:89H,不可以位寻址。 格式: D7 D6 D5 D4 D3
GATE C/T M1
D2
D1
D0
M0 GATE C/T
M1
M0
定时器1
定时器0
各位的含义:
C/T:功能选择位。0为定时器方式;1为计数器方式。 M1,M0:方式选择位。可以选择为四种工作方式0、1、2、3之1。
中断特点
同步工作 异常处理 实时处理
中断系统的结构
TCON ____ INT0 IT0=0 IT0=1 T0 TF0 ET0 ____ IT1=0 INT1 IT1=1 T1 TX RX IE1 EX1 PT1 TF1 ET1 TI + RI SCON 中断标志 ES 源允许 EA 总允许 PS IE IP PX0 1 EX0 0 PT0 1 0 PX1 1 0 1 0 1 0 优先级 自 然 优 先 级 矢量 地址 硬件查询 低 级 中 断 请 求 PC IE0 自 然 优 先 级 矢量 地址 高 级 中 断 请 求 PC
MCS-51中断系统内 部结构示意图
MCS-51系列单片机中断源
序号 中断源
外部中断0请求
说 明
由P3.2引脚输入,通过IT0位(TCON.0)来决定是低 电平有效还是下降沿有效。一旦输入信号有效,即向 CPU申请中断,并建立IE0(TCON.1)中断标志。任 务9中采用下降沿有效,由按键产生下降沿。 由P3.3引脚输入,通过IT1位(TCON.2)来决定是低 电平有效还是下降沿有效。一旦输入信号有效,即向 CPU申请中断,并建立IE1(TCON.3)中断标志。 当T0产生溢出时,T0溢出中断标志位TF0(TCON.5) 置位(由硬件自动执行),请求中断处理。 当T1产生溢出时,T1溢出中断标志位TF1(TCON.7) 置位(由硬件自动执行),请求中断处理。
(1)中断服务程序:CPU响应中断后,转去执行相应的
处理程序,该处理程序通常称之为中断服务程序。 (2)主程序:原来正常运行的程序称为主程序。 (3)断点:主程序被断开的位置(或地址)称为断点。 (4)中断源:引起中断的原因,或能发出中断申请的来 源,称为中断源。 (5)中断请求:中断源要求服务的请求称为中断请求 (或中断申请。
举 例1
用T1方式0实现任务7中1秒延时函数如下: void delay1s() { unsigned char i; TMOD=0x00; // 置T1为工作方式0 for(i=0;i<0xc8;i++){ // 设置200次循环次数 TH1=0x63; // 设置定时器初值 TL1=0x18; TR1=1; // 启动T1 while(!TF1); // 查询计数是否溢出,即定时5ms时 间到,TF1=1 TF1=0; // 5ms定时时间到, 将定时器溢出标志位TF1清零 } }