第七讲 单片机内部资源的编程
《单片机内部资源》课件
掌握不同类型的PWM,如单通道PWM和多通道PWM,并了解它们在各种应用中的使用方法。
PWM的使用方法
学习PWM的编程方法,以生成精确的脉冲信号和控制外部设备。
总结
- 单片机内部资源的重要性 - 如何正确使用单片机内部资源 - 发挥单片机性能的秘诀
《单片机内部资源》PPT课件
# 单片机内部资源 ## 概述 - 什么是单片机内部资源? - 为什么要了解单片机内部资源?
了解CPU模块
CPU的功能
CPU是单片机的核心组件, 负责执行指令和控制整个系 统的运行。
CPU指令集
掌握不同单片机的指令集, 能够编写高效的程序以实现 各种功能。
寄存器组成
了解不同类型的寄存器及其 在单片机内部资源中的作用。
Hale Waihona Puke ADC的种类2以实现模拟信号的采集和处理。
掌握不同种类的ADC,如逐次逼近型和
Sigma-Delta型,并了解它们的特点和适用
场景。
3
ADC的使用方法
学习ADC的编程方法,以实现模拟信号的 转换和数据获取。
了解PWM模块
PWM的作用
了解脉冲宽度调制(PWM)的作用和原理,以实现模拟信号的生成和控制。
了解存储模块
存储器种类
存储器分类
掌握不同种类的存储器,如RAM、 ROM和EEPROM,并了解其特点 和应用场景。
了解存储器的分类,如片内存储 器和外部存储器,以及它们之间 的区别。
存储器的使用方法
学习如何正确使用存储器,以存 储程序代码和数据。
了解输入输出模块
1
输入输出的通用原理
2
学习输入和输出的基本原理,如数据传
输和信号处理。
第3章_单片机的内部资源及编程
教学目的 了解AT89C52的P0~P3端口的结构 理解AT89C52的P0~P3端口的功能 掌握AT89C52的P0~P3端口的应用规则 了解定时器/计数器的应用规则 了解串行口应用规则 了解中断应用规则
3.1 P0~P3端口的结构与功能
P0端口的结构与功能 P1端口的结构与功能
北京航空航天大学出版社
5
2、端口操作(*)
4单片机的I/O口及proteus简介
P0口
介绍图中元器件。图中为P0口的一位结构。它包含1个输 出锁存器、2个三态缓冲器、1个输出驱动电路和1个输出控 制电路。输出驱动电路由一对FET(场效应管)组成。模拟 开关的位置由来自CPU的控制信号决定。 P0口的输出级可以驱动8个LS TTL输入,但在开漏状态下, 为了驱动NMOS输入端,需接外部上拉电阻。
北京航空航天大学出版社
13 4.1 P0~P3端口的结构与功能
P1端口的结构与功能
4单片机的I/O口及proteus简介
表3.1 AT89S52单片机P1口引脚的第二功
能
口线 P1.0 P1.1 P1.5 P1.6 P1.7 第二功能 T2 T2EX MOSI MISO SCK 信号名称 定时器/计数器2的外部计数输入或时钟 输出 定时器/计数器2的捕捉/重载触发信号和 方向控制 SPI主机输出/从机输入,在线编程时使 用 SPI主机输入/从机输出,在线编程时使 用 SPI时钟,在线编程时使用
P
工作过程(*):
3)作为输入口时: b、读锁存器:CPU通过读锁存器使图中上方的三 态门打开, 就将Q的值读入内
部总线上。不直接
读引脚上的数而读 锁存器Q端上的数 是为了避免可能错 读引脚上的电平信号。
No3 8051内部资源的C编程(2010.6)
常熟理工学院 物理与电子工程学院 2011.4
Chap8 8051内部资源
• 8.1 外部中断:INT0、INT1 • 8.2 定时/计数器:T0、T1 • 8.3 串行口:RXD、TXD
8.1 外部中断
8051外部中断
• • • • 中断 中断源 中断优先级 中断嵌套
8051外部中断
y1=32.82+17.34*x1(us) y2=41.79+26.01*x2(uS)
8051 定时/计数器
• 8051单片机内部有2 个16位可编程的定 时/计数器,即T0 和T1(8052提供3个, 这第三个称为T2)。 • 什么是内部定时、外部计数? • 8051计数器的计数方式?递增、溢出
8051外部中断
• 中断优先级:当几个中断源同时请求中断时,CPU应优 先响应最需紧急处理的中断请求。为此,需要规定各 个中断源的优先级。在优先级高的中断请求处理完了 以后。再响应优先级低的中断请求。 • 中断嵌套:当CPU正在处理一个优先级低的中断请求的 时,如果发生另一个优先级比它高的中断请求,CPU能 暂停当前处理的中断,转去处理优先级高的中断请求, 待处理完以后,再回到原来正在处理的低级中断程序, 这种高级中断源能中断低级中断源的中断处理称为中 断嵌套。
IE:中断允许寄存器
D7 EA D6 D5 ET2 D4 ES D3 ET1 D2 EX1 D1 ET0 D0 EX0
• • • • • • •
EA: 使能标志位。 1:所有中断使能;0:禁止所有中断 ET2:T2中断使能 ES: 串行通信中断使能 ET1:T1中断使能 EX1:INT1中断使能 ET0:T0中断使能 EX0:INT0中断使能
delay(n) unsigned char(uS) unsigned int(uS) 0 34 43.6 1 49.9 67.2 2 67.2 93 3 84.7 120 4 102 146 5 119.4 172 6 136.7 197 7 154.1 224 8 171.4 249 9 188.8 276 10 206.1 302 11 223.5 327 12 240.9 354 13 258.2 380 14 275.6 406 15 293 432 16 310.2 458 17 327.6 484 18 345 510 19 362.4 536 20 379.8 562
8、9、10 第七章 51单片机内部资源及编程
在单片机实验箱上实现。
只须把P1口的内容读出后,通过P0口输出即可。 汇编程序: ORG 0000H MOV P0,#0FFH LOOP: MOV A,P0 MOV P1,A SJMP LOOP
C语言程序: # include <reg51.h> void main(void) { unsigned char i; P0=0xff; for( ; ; ) { i=P0; P1=i; } }
M1 0 0 1 1 M0 0 1 0 1 工作方式 0 1 2 3 方式说明 13位定时/计数器 16位定时/计数器 8位自动重置定时/计数器 两个8位定时/计数器(只有T0有)
C/T:定时或计数方式选择位,当C/T=1时工作于计数方式;当 C/T=0时工作于定时方式。 GATE:门控位,用于控制定时/计数器的启动是否受外部中断请求信号 的影响。
四、MCS-51中断系统的逻辑结构
IT0=0 或 IE0 IE EX0 EA IP PX0 查询硬件 查 询 顺 高优先级中 序 ( 断 识 别 中断入口地 ) 址
INT0
IT0=1
TF0
ET0 IT1=0 或 EX1 IE1
PT0
INT1
IT1=1
TF1 TI RI TF2 EXF2 或
PX1
ET1
三.中断优先权控制 每个中断源有两级控制:高优先级和低优先级。通过由内部的 中断优先级寄存器IP来设置.中断优先级寄存器IP的字节地址为B8H, 可以进行位寻址.
IP D7 D6 D5 D4 D3 D2 D1 D0
(B8H)
PT2
PS
PT1
PX1
PT0
PX0
PT2:定时器/计数器T2的中断优先级控制位,只用于52子系列。 PS: 串行口的中断优先级控制位。 PT1:定时器/计数器T1的中断优先级控制位。 PX1:外部中断INT1的中断优先级控制位。 PT0:定时器/计数器T0的中断优先级控制位。 PX0:外部中断INT0的中断优先级控制位。 如果某位被置“1”,则对应的中断源被设为高优先级;如果某位 被清“0”,则对应的中断源被设为低优先级。对于同级中断源,系 统有默认的优先权顺序,
Chap4_2 8051内部资源的C编程
– 若若INT0中断未允许,则程序不能跳转到INT0中断入口,不执行
中断服务程序(中断标志IE0不能自动清0)。
• 问提:中断标志IE0的产生与精中选断课使件p能pt 是否有关?
10
INT0中断方式执行流程
#include "reg51.h"
unsigned char i=0; /**********int0中断服务程序**********/
void main (void)
{ IT0=1;
EX0 = 1; EA = 1; // 打开中断源
while (1) ;
//等待中断
精选课件ppt
20
}
中断服务函数与寄存器的定义
• 为了满足在C语言源程序中直接编写中断服务程序的 要求,C51编译器对函数的定义进行了扩展,增加了 一个扩展关键字interrupt。它是函数定义时的一个选 项,加上这个选项即可将一个函数定义成中断服务函 数。
I=0 delay(500);
}
IE0=0;
//手动清精选中课断件标pp}t志
12
8051中断系统
精选课件ppt
13
与中断有关的SFR
SFR *IP *IE TMOD *TCON SCON
PCON
D7 EA GATE TF1 SM0
D6 -
C/T# TR1 SM1
D5 D4 D3 PT2 PS PT1 ET2 ES ET1 M1 M0 GATE TF0 TR0 IE1 SM2 REN TB8
精选课件ppt
17
IP:中断优先级寄存器
D7 D6 D5 D4 D3 D2 D1 D0
-
- PT2 PS PT1 PX1 PT0 PX0
第四章_1 MCS-51单片机的内部资源及其编程IOzxl
第四章 MCS-51单片机的内部资
源及其编程
8051内部资源及其编程
I/O口
输入:键盘 输出:LED显示
定时/计数器 外部中断 串行口
4-1、 I/O口
8051单片机有4组8位双向I/O端口(P0、P1 、P2、 P3) 各端口功能
•
P0:通常用作地址/数据总线,即低8位地址与数据线分 时复用;同时P0口也可用作I/O,可位寻址 P1:通常用作I/O,可位寻址 P2:通常用作扩展系统的高8位地址,与P0一起组成16位 地址总线;同时P2也可用作I/O,可位寻址 P3 :双功能口。作第一功能使用时,其功能同 P1 口,其 第二功能见下。
行列式键盘的控制(扫描法)
按键编码
为了识别按键,必须对键盘中的按键进行编码,每一个按键都有 一个确定的按键代码。如果使用非编码键盘,按键的编码方式可以 由用户自由定义。
如:
0x11 0x21 0x12 0x41 0x13 0x81 0x14
0x12 0x21
0x14 0x31 0x18 0x41
行列式键盘的控制
键盘是多按键输入设备,键盘输入信息的主要过程如下:
1、判断是否有键按下;
2、确定按下的是哪一个键; 3、把此键代表的信息翻译成计算机所能识别的代码,
如ASCII或其他特征代码。 编码键盘和非编码键盘
上述2、3步主要由硬件完成,称为编码键盘;
单片机完成和键盘的通讯编程;
写字节
8051 I/O口操作
I/O位操作(sfr P1=0x90; sbit P1_0=P1^0;)
单片机原理及应用第七讲.ppt
2、中断查询确认后,在下列各种8031单片机运 行中,能立即进行响应的是:
(1)当前正在进行高优先级中断处理 (2)当前正在执行RETI指令 (3)当前指令是DIV指令,且正处于取指令的机器周期 (4)当前指令是MOV A,R3
这些指令后,再执行一条指令才能响应新的中断请求。
第七讲
第五章 MCS-51的中断系统
中断入口地址:
中断响应后,CPU将当前PC值压入堆栈(先压PCL, 后压PCH),保护断点,并将该中断的入口地址装入PC, 从而使CPU执行中断服务程序。
外部中断0 定时器/计数器T0 外部中断1 定时器/计数器T1 串行口中断
硬件置位或清零。
第七讲
第五章 MCS-51的中断系统
3、SCON 字节地址为98H
特殊功能寄存器,为串行口控制寄存器。 其格式如下:
SCON SM0 SM1 SM2 REN TB8 RB8 TI RI 位地址 9FH 9EH 9DH 9CH 9BH 9AH 99H 98H
此控制寄存器中有2位中断请求标志: TI或 RI。
第七讲
第5章 MCS-51的中断系统
第七讲
一、中断的概念
第五章 MCS-51的中断系统
单片机对内、外随机发生的事件的处理是采用查询 和中断两种方式。查询方式:方便、简捷、不增添硬件 电路,但会大量占用CPU 的工作时间。中断方式:增加 了一定的硬件电路,但提高了对突发事件的响应速度, 且不占用CPU工作时间。
什么是中断?中断响应过程? 中断服务(中断服务程序)? 中断系统、中断源、中断请求(中断申请)以及中断返 回、断点保护等基本概念。
8051内部资源C编程
EXF2 RCLK TCLK EXEN2 TR2
2.2 定时器/计数器的工作方式
1、方式0 为13位的T/C,TH由高8位提供,TL由低5位提供, 满计数值为2的13次方; C/T=0时,T/C定时器用,振荡源的12分频的信号 作为计数脉冲;当C/T=1,T/C为计数器,对外部 脉冲输入端T0或T1输入的脉冲计数; 当GATE=0,TR=1,则T/C启动;当GATE=1,启 动受TR和INT双重控制;
1.2 中断的控制
中断允许寄存器IE
EA
ET2 ES
ET1 EX1 ET0 EX0
1、中断的控制管理通过寄存器IE和IP编程实现 中断允许寄存器IE: EX0,EX1:外部中断0,1的中断允许位;1—开 中断,0—关中断; ET0,ET1:定时器/计数器0,1溢出中断允许位, 1—开中断,0—关中断;
2.2 定时器/计数器的工作方式
1、方式0 当13位计数满时,TH向高位进位,此进位将中断 溢出标志TF置1,产生中断请求,表示定时时间到 或是计数次数到; 若T/C开中断,且CPU开中断,当CPU响应中断服 务程序后,TF自动清零;
2.2 定时器/计数器的工作方式
2、方式1 方式1与方式0基本相同,唯一区别在于计数寄存器 的位数是16位的,由TH和TL寄存器各提供8位,满 计数值为2的16次方;
2.1 与T/C有关的特殊功能寄存器
TR1 TR0
2)定时器/计数器控制寄存器TCON TR0,TR1,T/C启动控制位,1—启动,0—停 止; TCON复位后清零,T/C需受软件控制才能启动, 当计数满溢出时,产生向高位进位TF—溢出中 断请求标志;
2.1 与T/C有关的特殊功能寄存器
GATE
C/T2
《单片机原理及应用》教学课件 第7章-单片机C语言编程基础知识
7.1.2 C51 数据类型
3. sfr16
sfr16也是一种扩充数据类型,它定义的变量占用两个 内存单元。sfr16和sfr一样用于操作特殊功能存放器,不同 的是,sfr16定义的变量可访问16位特殊功能存放器,sfr16 类型变量的取值范围为0~65535。
该数据类型的定义格式如下: sfr16 变量名=变量地址; 此处的变量地址为16位地址中的低8位地址。通过sfr16 类型变量访问16位特殊功能存放器时,先读低字节数据,后 读高字节数据;对特殊功能存放器写入数据时,先写入高字 节地址,再写入低字节地址。
要在数字后面加上字母L,如104L,034L,7850L等。
〔2〕浮点型常量
浮点型常量可分为十进制和指数两种表示形式。
① 十进制浮点型常量由数字和小数点组成,整数或小数局部为0时可以省略,
但必须要保存小数点,如,,,.25,300.等。
② 指数浮点型常量表示形式为:[±]数字[.数字]e[±]数字。[]中的内容为可选
C语言程序本身不依赖于硬件开发平台,程序不做修改或做少量修改就可以移植到 不同的单片机中。目前,使用C语言进行程序设计已经成为单片机软件开发的主流。
基于单片机的C语言又称为C51语 言。和标准C语言所不同的是,C51语 言运行于单片机平台上,并根据单片 机的硬件特点扩展了局部关键字。以 下关于C语言的描述都是基于单片机的, 后面不再强调这一点。
项,如125e3,7e9,−3.0e−3等。
15
7.1.3 常量与变量
〔3〕字符型常量 将单个字符放在单引号内的常量就是字符型常量,如'a''d'等。有一类字符型常量专 门用来表示控制字符,如回车符、换行符等,它们被称为转义字符,其表示方式为在字 符前面加上一个反斜杠“\〞,如'\n'。常用转义字符如表7-3所示。
第7章 51单片机的内部资源及编程1
1.能实现中断及返回
响应 中断
保护 现场
将断点处的PC值压入堆栈 将相关寄存器内容压入堆栈
返回 断点
恢复 现场
将断点处的PC值弹回→RETI 将相关寄存器的值弹回→软件
2.能实现中断屏蔽 3.能进行中断优先级排队
中断系统的功能
3.能实现中断嵌套
主 程 序
中
断
服
务
断点
程
序
继 续 执 行 主 程 序
第7章 51单片机的内部资源及编程
第7章 51单片机的内部资源及编程 主要内容: 本章介绍51单片机内部集成的并行接 口、定时/计数器接口、串行接口和中 断接口的结构、原理和编程使用。
1
第7章 51单片机的内部资源及编程
章节
7.1 并行输入/输出接口 7.2 定时/计数器接口 7.3 串 行 接 口 7.4 中 断 系 统
第7章 51单片机的内部资源及编程
在边沿触发方式时,若第一个机器周期采样到P3.2 (或P3.3)引脚为高电平,第二个机器周期采样到P3.2 (或P3.3)引脚为低电平时,由IE0(或IE1)置1,向CPU 请求中断。 CPU响应后能够由硬件自动将IE0(或IE1)清 零。
关于中断请求标志位IE0(IE1)。
为避免这种情况,只有在中断服务程序返
回前撤消P3.2(或P3.3)的中断请求信号, 即使P3.2(或P3.3)为高电平。通常通过 下图所示外电路来实现 .
INTx 8051
P1.0
QD
S CLK<
外部中断 请求信号
INTx
外部中 断源
第7章 51单片机的内部资源及编程
外部中断请求信号通过D触发器加到单片机P3.2(或 P3.3)引脚上。当外部中断请求信号使D触发器的CLK 端发生正跳变时,由于D端接地,Q端输出0,向单片机 发出中断请求。CPU响应中断后,利用P1.0作应答线。
MCS-51单片机内部资源及编程
⒉ 中断嵌套
当CPU正在执行某个中断服务程序时,如果发生更高一 级的中断源请求中断,CPU可以“中断”正在执行的低优先 级中断,转而响应更高一级的中断,这就是中断嵌套。 中断嵌套只能高优先级“中断”低优先级,低优先级不 能“中断”高优先级,同一优先级也不能相互“中断”。 中断嵌套结构类似与 调用子程序嵌套,不同 的是: ① 子程序嵌套是在程序 中事先按排好的;中断 嵌套是随机发生的。 ② 子程序嵌套无次序限 制,中断嵌套只允许高 优先级“中断”低优先 级。
P1.0
LED0
D0 Q0
+5V
……
8051
P1.7
74LS240
D7 Q7
……
LED7
8路反相驱动器
图
LED闪烁电路
#include<reg51.h> void delay(void) { unsigned int n; for(n=0;n<30000;n++) ; }
void main(void) { unsigned char i; while(1) { P1=0x80; delay(); for(i=0;i<8;i++) { P1=P1>>1; delay(); } } }
六. 中断优先控制和中断嵌套
⒈ 中断优先控制
80C51中断优先控制首先根据中断优先级,此外还规定了 同一中断优先级之间的中断优先权。其从高到低的顺序为: INT0、INT1、T0、T1、串行口。 中断优先级是可编程的,而中断优先权是固定的,不能设 置,仅用于同级中断源同时请求中断时的优先次序。 80C51中断优先控制的基本原则: ① 高优先级中断可以中断正在响应的低优先级中断,反之 则不能。 ② 同优先级中断不能互相中断。 ③ 同一中断优先级中,若有多个中断源同时请求中断,CPU 将先响应优先权高的中断,后响应优先权低的中断。
单片机的编程技术完整PPT
这种在源程序中出现,通知汇编程序应该如何完成汇编 工作的指令,就是伪指令。
下面介绍80C51单片机常用的伪指令。
第十四页
1. ORG(Origin)汇编起始命令
格式为:ORG 16位地址或标号
该命令总是出现在源程序的开始位置。用来规定目标程序(即此命令后面的程序或 数据块)的起始地址。ORG后面通常是16位地址,也可以是已定义的标号地址或表 达式。如ORG 1000H。 在程序中如果不用ORG规定起始地址,则汇编得到的目标程序将从0000H开始存放。 在一个源程序中,ORG指令可以多次使用,但要求地址值要由小到大依序排列,且 不能出现空间上的重叠。
图3-2 单片机汇编语言程序的生成过程
第十二页
2. 汇编
计算机只能识别机器语言,但程序编制人员通常以汇编语言或 高级语言编制源程序。这样,要让计算机能听从程序编制人员的指 挥,就必须要将汇编语言或高级语言转换成机器语言,供计算机识 别,这个过程称为汇编(或编译)。
汇编工作常由汇编软件来完成。汇编软件通常具有指令的错误 识别与提示能力,为编程者迅速查找源程序中的错误提供了方便。 在汇编过程中,我们只能发现源程序中的语法错误和一般性的逻辑 错误,但不能检查程序结构上的错误。如果有错误,汇编软件会报 告,指出错误位置及错误类型。程序错误被纠正后,要重新进行编 译调试,直至程序汇编无误为止。
➢不能使用汇编语言已经定义了的符号作为标号,如指令 助记符MOV、伪指令记忆符END以及寄存器的符号名 称R1等。
➢标号后边必须跟冒号。 ➢同一标号在一个程序中只能定义一次,不能重复定义。
第八页
2.操作码
《单片机c编程》课件
C语言在单片机编程中的应用
C语言是一种高级编程语言,具有高效、灵活、可移植性强的特点。
在单片机编程中,C语言可以用来编写系统软件、应用程序等,提高编程效率和代码质量。
单片机C编程的优势与限制
优势
C语言可读性强、可移植性好,能够 实现复杂的功能和控制,提高系统性 能和可靠性。
限制
单片机资源有限,C语言编程对硬件资 源要求较高,需要合理分配资源,避 免资源浪费和冲突。
串行通信的分类
同步通信和异步通信。
串行通信在单片机中的应用
实现单片机之间的数据交换,或者单片机与计算机之间的数据交换 。
THANKS
感谢观看
02
单片机C编程基础知识
数据类型与运算符
数据类型
介绍C语言中的基本数据类型,如int、float、char等,以及它们在单片机编程中的应 用。
运算符
详述C语言中的算术运算符(如+、-、*、/)、比较运算符(如==、!=、>、<、>= 、<=)和逻辑运算符(如&&、||)。
程序结构
01
顺序结构
描述如何按照代码的顺序执行程 序。
定时器是单片机内部的重要资源,通过定时器可以实现精确的时间控制和定时 任务执行。在单片机C编程中,定时器的使用可以提高程序的效率和准确性。
定时器应用
实现步骤
1
2
1. 选择合适的定时器资源,并配置定时器模式;
3
2. 在主程序中启动定时器,并设置定时时间间隔 ;
定时器应用
3. 在定时器中断服务程序中执行相应 的操作或调用其他函数;
按键输入程序
01
实现步骤
02
1. 确定按键连接的单片机I/O端口;
第七章 8051内部资源的C编程
# include <reg51.h> unsigned char status; ; bit flag; ; void service_int1( ) interrupt 2 using 2 /* INT1中断服务程序,用ቤተ መጻሕፍቲ ባይዱ 组工作寄存器 */ 中断服务程序, 中断服务程序 用第2组工作寄存器 { flag=1; ; status=p1; ; } /* 设置标志 */ /* 存输入口状态 */
课程: 教材:单片机的C语言应用程序设计 课程:单片机技术 教材:单片机的 语言应用程序设计
例:如图所示是利用优先权解码芯片,在单片机8031的一 如图所示是利用优先权解码芯片,在单片机8031的一 8031 个外部中断INT1上扩展多个中断源的原理电路图。 个外部中断INT1上扩展多个中断源的原理电路图。图中是以开 INT1上扩展多个中断源的原理电路图 关闭合来模拟中断请求信号。当有任一中断源产生中断请求, 关闭合来模拟中断请求信号。当有任一中断源产生中断请求, 能给8031的INT1引脚送一个有效中断信号, P1的低3 能给8031的INT1引脚送一个有效中断信号,由P1的低3位可得对 8031 引脚送一个有效中断信号 的低 应中断源的中断号。多个中断源的处理。 应中断源的中断号。多个中断源的处理。 在中断服务程序中仅设置标志,并保存I/O口输入状态。 在中断服务程序中仅设置标志,并保存I/O口输入状态。 I/O口输入状态 C51编译器提供定义特定80C51系列成员的寄存器头文件。 C51编译器提供定义特定80C51系列成员的寄存器头文件。 编译器提供定义特定80C51系列成员的寄存器头文件 80C51头文件为reg51.h。 80C51头文件为reg51.h。 头文件为reg51.h C51程序如下: C51程序如下: 程序如下
8051 内部资源的C 编程
5.1 中 断 概 述
• 这里还有个问题,值得读者注意:每个中断向量地址之间只间隔了8 个单元,如0003H~000BH,在如此少的空间中如何完成中断服务子 程序呢?通常情况下,编程人员会在中断处放一条长转移指令LJMP, 这样就可以使中断服务子程序被灵活地安排在64 KB 程序存储器的任 何地方了。
断请求触发器(标志位)来实现记忆。这些中断源请求标志位分别由 特殊功能寄存器TCON 和SCON 的相应位进行锁存。
上一页 下一页 返回
5.1 中 断 概 述
• 1. 定时器/计数器控制寄存器TCON • 特殊功能寄存器TCON、锁存定时器/计数器T0 与定时器/计数器T1
的溢出中断标志和外部中断0 与外部中断1 的中断标志,与中断有关 的各位定义如下:
• (4)片内定时器/计数器1 溢出中断。当片内定时器/计数器1 发生溢 出时,置位TF1,并向CPU 申请中断。
• (5)片内串行口发送/接收中断。当串行口发送完一帧串行数据时置 位TI 或者当串行口接收完一帧串行数据时置位RI,并向CPU 申请中 断。
• 二、中断请求标志位 • 为了确定上述中断源是否产生中断请求,中断系统对应设置了多个中
第5 章 8051 内部资源的C 编程
• 5.1 中断概述 • 5.2 定时器/计数器(T/C) • 5.3 串行口
返回
5.1 中 断 概 述
• 5.1.1 中断相关的概念
• 一、中断的概念 • 1. 什么是中断 • 我们从一个生活中的例子引入。你正在家中看书,突然电话铃响了,
你放下书本,去接电话,和来电话的人交谈,然后放下电话,回来继 续看书。这就是生活中的“中断”现象,就是正常的工作过程被外部 的事件打断了。仔细研究一下生活中的中断,对于我们学习单片机的 中断也很有好处。
第7章 51单片机的内部资源及编程
7.2.3 定时/计数器的方式和控制寄存器
一.定时/计数器的方式寄存器TMOD
TMOD (89H) D7 GATE D6 C/T D5 M1 D4 M0 D3 GATE D2 C/T D1 M1 D0 M0
←
定时器1
→
←
定时器0
→
其中: M1、M0为工作方式选择位 ,用于对T0的四种工作方式,T1的三种工作 方式进行选择,选择情况如下 M1 0 0 1 M0 0 1 0 工作方式 0 1 2 方式说明 13位定时/计数器 16位定时/计数器 8位自动重置定时/计数器
7.2.4 定时/计数器的工作方式
一.方式0
振荡器 12 S1
13位定时/计数器方式
Tcy C/T S2 TLx THx (低5位) (高8位) 与 中断请 求 TFx
Tx TRx
GATE INTx
或
计数值为N和初值X关系:
X=8192-N
上次计数完,计数器值为0,要重复计数需重置初值。
第7章 51单片机的内部资源及编程
C51语言程序:
#include <reg51.h> void main(void) { unsigned char i; P1=0xff; for(;;) { i=P1;P0=i; } }
第7章 51单片机的内部资源及编程
7.2 定时/计数器接口
7.2.1 定时/计数器的主要特性 1.MCS-51系列中51子系列有两个16位的可编程定时/计 数器:定时/计数器T0和定时/计数器T1,52子系列有三个, 还有一个定时/计数器T2。 2.每个定时/计数器既可以对系统时钟计数实现定时,也 可以对外部信号计数实现计数功能,通过编程设定来实现。 3.每个定时/计数器都有多种工作方式,其中T0有四种 工作方式;T1有三种工作方式,T2有三种工作方式。通过 编程可设定工作于某种方式。 4.每一个定时/计数器定时计数时间到时产生溢出,使相 应的溢出位置位,溢出可通过查询或中断方式处理。
第七章 单片机内资源编程
第七章单片机内资源编程7.1外部中断7.1.1中断的概述中断是处理器(一般是我们常说的CPU)处理外部突发事件的一个重要技术。
它能使处理器在运行过程中对外部事件发出的中断请求及时地进行处理,处理完成后又立即返回断点,继续进行处理器原来的工作。
引起中断的原因或者说发出中断请求的来源叫做中断源。
根据中断源的不同,可以把中断分为硬件中断和软件中断两大类,而硬件中断又可以分为外部中断和内部中断两类。
对于单片机来说,中断是单片机的一个重要功能之一,是学习单片机必须掌握的一个知识点。
51单片机有五个中断源,即有五种情况发生时单片机会产生中断。
为了助于大家理解中断这个概念,我们举个生活中的例子。
你烧上一壶水,然后去洗衣服,洗衣过程中忽然听到水开了的壶哨声,你要先停下洗衣服的动作去关火,然后把水放在暖壶中,灌完开水后还要接着去洗衣服。
这个停下一件事去干另一件事的过程就是一次中断的发生过程,其流程图如图7-2所示。
因为CPU在一个时间内只能处理一件事,对于单片机来讲, CPU在执行A时间时,应中断源要求(中断发生)CPU停止当前工作(中断响应)去执行B事件(中断服务),待B 执行完后接着返回执行A事件(中断返回)这一过程称为中断,其流程图如图7-1所示。
图7-1单片机中断过程图7-2生活中的中断事例再回来看前面讲的生活事例,与单片机中断结合分析,你的主任务是洗衣服,水开报警这是一个中断请求,这一时刻相当于断点处,你响应中断去关火,然后将开水灌入暖水瓶中,这一动作实际上就是处理中断程序,灌完开水后再回去继续洗衣服,相当于处理完中断程序后再返回主程序继续执行主程序。
这里需要注意的是,水开是随时都有可能的,但是无论什么时候开,只要一开你将立即去处理它,处理完后再回来继续接着洗刚才那件衣服。
单片机在执行程序时,中断也随时有可能发生,但无论何时发生,只要一旦发生,单片机将立即暂停当前程序,赶去处理中断程序,处理完中断程序后再返回刚才暂停处接着执行原来的程序。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
●定时器/计数器方式控制寄存器TMOD
TMOD格式如下表: 位
D7 D6 D5 D4 D3 D2 D1 D0
含义 GATE C/T M1 M0 GATE C/T M1 M0
在TMOD中,高4位用于对T1的方式控制,低4位用于对T0的方式控制。 其各位功能描述如下:
M1M0:定时器工作方式选择位。 M1M0=00,定时器工作于方式0(13位的定时/计数工作方式); M1M0=01,工作于方式1(16位的定时/计数方式); M1M0=10,工作于方式2(8位自动重装方式); M1M0=11,工作于方式3(T0分成2个8位计数器,T1则只工作于方式2)。 C/T:定时器/计数器选择位。 C/T=1,工作于计数方式; C/T=0,工作于定时方式。 GATE:门控位。由GATE、软件控制位TR(1/0)和INT(1/0)共同决定定时器/计数 器的打开或关闭。
例 如右图所示,80C51单片机的P3.2引脚接有按钮或开关,P1.0引脚接有LED灯。
程序如下: #include “reg51.h” sbit P1_0=P1^0; void main( ) { IT0=1;
EA=1; EX0=1; for( ; ; ) {;} } void Int0( ) interrupt 0 { P1_0=~P_0; }
EX1(IE.2):外部中断1中断允许为。EX1=1,允许中断,EX1=0,禁止中断。
ET0(IE.1)和EX0(IE.0):分别为定时器T0和外部中断0的允许控制位,其功能与 ET1和EX1相同。
对IE中各位的状态,可利用指令分别进行置1或清0,实现对所有中断源的中断开放控制 和对各中断源的独立中断开放控制。
工作方式0为13位计数器工作方式,由TL(1/0)的低5位和TH(1/0)的8位构成 13位计数器。
从上图可看出,当C/T=0时,为定时器;当C/T=1时,为计数器。
T1/T0能否启动工作,取决于TR1/TR0、GATE和引脚INT1/INT0状态。
定时器/计数器启动后,定时或计数脉冲加到TL1/TL0的低5位,然后对已预置好的定 时器/计数器初值不断加1。在TL1/TL0计满后,进位给TH1/TH0;
TR1/TR0:T1/T0运行控制位。可用指令对TR1或TR0进行置位或清0,即可启动或关 闭T1或T0的运行。
2.3 定时器/计数器的4种工作方式
T0或T1的定时器功能可由TMOD中的C/T位选择,而T0,T1工作方式的选择则由 TMOD中的M1M0共同确定。在M1M0确定的4种工作方式中,方式0,1和2 对T0和T1 完全相同,但方式3为T0所独有。 ●工作方式0 下图为工作方式0的逻辑电路结构图。
位 D7 D6 D5 D4 D3 D2 D1 D0
功能 TF1 TR1 TF0 TR0 -
-
-
-
TCON高4位的功能如下:
TF1/TF0:T1/T0溢出标志位。当T1或T0产生溢出时,由硬件自动置位中断触发器 TF(1/0),并向CPU申请中断。如果用中断方式,则CPU在响应中断并进入中断服 务程序后,TF(1/0)被硬件自动清0。如果用软件查询方式对TF(1/0)进行查询, 则在定时器/计数器回0后,应用指令将TF(1/0)清0。
1.3 80C51的中断控制
●中断允许寄存器IE
在80C51中断系统中中断的允许或禁止是由片内可进行位寻址的8位中断允许寄存器IE 来控制的。它分别控制CPU对所有中断源的开放或禁止,以及对每个中断源的开放/禁 止状态。IE中各位的定义和功能如下表:
IE EA 位地址 AFH -
- ES ET1 EX1 ET0 EX0 - ACH ABH AAH A9H A8H
位地址 -
-
- BCH BBH BAH B9H B8H
IP各位的功能描述如下: PS(IP.4):串行口中断优先级控制位。 PT1(IP.3):定时器T1中断优先级控制位。 PX1(IP.2):外部中断1中断优先级控制位。 PT0(IP.1):定时器T0中断优先级控制位。 PX0(IP.0):外部中断0中断优先级控制位。
IE各位的功能描述如下:
EA(IE.7):CPU中断允许标志位。
EA=1,CPU开放所有中断;EA=0,CPU禁止所有中断。
ES(IE.4):串行口中断允许位。ES=1,允许串行口中断;ES=0,禁止串行口中断。
ET1(IE.3):定时器T1中断允许位。 ET1=1,允许T1中断; ET1=0,禁止T1中断。
TF1:与TF0类似,它是定时器T1的溢出中断请求位。
TI:串行口发送中断请求标志位。CPU在每发送完一帧串行数据后,由硬件置位TI。 在CPU响应中断时不清除TI,而在中断服务程序中由软件对TI清0。
RI:串行口接收中断请求标志。串行口每接收完一帧串行数据后,由硬件置位RI。同 样,在CPU响应中断时不会清除RI,而必须用软件清0。
●工作方式3 工作方式3是两个独立的8位计数器,且仅T0有这种工作方式。如果将T1置为工作方 式3,T1将处于关闭状态。 当T0置为工作方式3时,TL0构成8位计数器可工作于定时/计数状态,并使用T0的控 制位和TF0的中断源。TH0则只能工作于定时器状态,使用T1中的TR1和TF1的中断 源。
2.4 定时器/计数器的定时/计数方式下初值的计算
IE0:INT0中断请求标志位。当INT0引脚上出现中断请求信号时(低电平或负跳变), 由硬件置位IE0。在CPU响应中断后,再由硬件将IE0清0。
IT1,IE1:其功能于IT0,IE0相似,它们对应于外部中断源INT1。
●内部中断请求源
TF0:定时器T0的溢出中断请求为。当T0计数产生溢出时,由硬件置位TF0。当CPU 响应中断后,再由硬件将TF0清0。
1.5 寄存器组的切换
在中断发生时,通常需要进行中断的现场保护。80C51单片机除了可采用堆栈技术 来保护现场外,还可采用寄存器组的方式。在80C51中一共有4组名称均为R0~R7 的工作寄存器,中断产生时可以通过简单地设置RS0,RS1(PSW寄存器的2个位) 来切换工作寄存器组,这样保护现场工作非常简单和快速。
在TL1/TL0和TH1/TH0都计满后,置位TF1/TF0,表明定时时间/计数次数已到。
当满足中断条件时,定时器/计数器向CPU申请中断。若需继续进行定时或计数,则 应用指令对TL1/TL0和TH1/TH0重置时间常数;否则下一次计数将从0开始。
●工作方式1
工作方式1匙16位计数器方式,由TL1/TL0,TH1/TH0共同构成16位计数器。其工作 过程与方式0相似,只是定时/计数范围更宽。
T0和T1的结构如下图:
当T0或T1用作定时器时,将外接晶振产生的振荡信号进行12分频后,提供给计数器 作为计数的脉冲输入。计数器对输入的脉冲进行计数直至产生溢出。
当T0或T1用作对外部事件计数的计数器时,通过80C51外部引脚T0或T1对外部脉冲 信号进行计数。当加载T0或T1引脚上的外部脉冲信号出现一个由1到0的负跳变时, 计数器加1。如此反复直至计数器产生溢出。
1.2中断源的自然优先级与中断服务程序入口地址
80C51中的5个独立中断源可分别被设置成不同的优先级。若都被设置成同一优先级, 这5个中断源会因硬件的组成不同而形成不同的内部序号,从而构成不同的自然优先 级。其排列顺序如下:
80C51的5个独立中断源有相应的中断服务程序。这些程序有固定的存放位置,这样产 生了相应的中断以后,可转到相应的位置去执行。这5个中断源所对应的矢量地址(入 口地址)如下图:
●中断优先级控制寄存器IP
80C51的中断系统有2个中断优先级,对每个中断源的中断请求都可通过对IP中有关位 的状态设置。编程时设置为高优先级中断或低优先级中断,以实现CPU响应中断过程 的二级中断嵌套。IP是一个可位寻址的8位特殊功能寄存器,其各位定义如下表:
IP
-
-
- PS PT1 PX1 PT0 PX0
第七讲 单片机内部资源 的编程
1. 中断编程
80C51中断系统结构图
由与中断有关的特殊功能寄存器、中断入口、顺序查询逻辑电路等组成。 包括5个中断请求源,5个中断源有两个优先级,每个中断源可以在编程设 为高优先级或低优先级;5个中断源有对应的5个固定中断入口地址(矢量 地址)。
1.1中断请求源
5个中断请求源中,有2个为外部中断请求源
位 D7 D6 D5 D4 D3 D2 D1 D0
功能 -
-
-
- IE1 IT1 IE0 IT0
TCON的字节地址为88H,其中各位地址从D0开始分别为88H~8FH。
TCON中D0~D3位的功能描述如下:
IT0:INT0触发方式控制位,可由软件进行置位或复位。IT0=0时,INT0为低电平触 发方式;IT0=1时,INT0为负跳变触发方式。
不论T0或T1 工作与定时方式还是计数方式,它们对内部时钟或外部事件进行计数时 都不占用CPU时间,直到定时器/计数器产生溢出为止。因此,计数器/定时器是与 CPU”并行“工作的,不会影响CPU的其他工作。
2.2 定时器/计数器的控制字
T0和T1有2个8位控制寄存器TMOD和TCON,分别用来设置各个定时器/计数器的工 作方式,选择定时或计数功能,控制启动运行以及作为运行状态的标志等。当80C51 系统复位时,TMOD和TCON所有位都清0。
●工作方式2
方式2是自动再装入时间常数的8位计数器方式。
方式2 中由TL1/TL0构成8位计数器,TH1/TH0仅用来存放TL1/TL0初次置入的时间常 数。在TL1/TL0计数满后,即置位TF1/TF0,向CPU申请中断;同时存放在TH1/TH0 的时间常数自动装入TL1/TL0,然后重新开始定时或计数。
2.1 定时器/计数器基本结构及工作原理
80C51定时器中的T0和T1分别是由TH0,TL0和TH1,TL1各自2个8位计数器构成的 16位计数器。这2个16位计数器都是16位的加1计数器。