CC2530的中断系统和定时器原理
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2021/2/4
7
计算机中的中断概念:
CPU正在执行程序时,单片机外部或内部发生的某 一事件,请求CPU迅速去处理。CPU暂时中止当前 的工作,转到中断服务处理程序处理所发生的事 件。处理完该事件后,再回到原来被中止的地方, 继续原来的工作,这称为中断。 CPU处理事件的过程,称为CPU的中断响应过程。 对事件的整个处理过程,称为中断处理(或中断 服务)。
•
LEDFlag = !LEDFlag;
•
}
•
}
2021/2/4
if(LEDFlag)
{
LED2 = LED1;
LED3 = !LED2;
LED1 = !LED1; LED灯闪烁一下
// 每 1s
LEDFlag = !LEDFlag; // 闪 烁标志变量置0
}
}
}
百度文库
24
谢谢
机周时间与主振频率有关:机周时间=12/fosc fosc=12MHZ时,1机周=1S; fosc=6MHZ 时,1机周=2S。
2021/2/4
5
STC89C51
• 启动重新赋值:清零
2021/2/4
6
中断系统
日常生活中中断的例子:
你正在专心看书,突 然电话铃响,于是你记下正 在看的书的页数,去接电话, 接完电话后再回来接着看书。
2021/2/4
12
中断使能寄存器0
2021/2/4
13
中断使能寄存器1
2021/2/4
14
中断使能寄存器2
2021/2/4
15
中断处理
• 当中断发生时,CPU 就指向中断向量地址。一旦中断服务 开始,就只能够被更高优先级的中断打断。中断服务程序 由中断指令 RETI终止,当 RETI 执行时,CPU 将返回到中 断发生时的下一条指令。
22
CC2530定时中断代码例程
• void InitialT1test(void)
• #include <ioCC2530.h>
•{
• #define uint unsigned int
•
//初始化LED控制端口P1
• #define uchar unsigned char
•
P1DIR = 0x03; //P10 P11 为输出
2021/2/4
11
使能中断步骤: 1 清除中断标志。 2 如果有,则设置 SFR 寄存器中对应的各中断使能位为 1 3 设置寄存器 IEN0 、 IEN1 和 IEN2 中对应的中断使能 位为1 4 设置 IEN0 中的 EA 位为 1 使能全局中断。 5 在该中断对应的向量地址上,运行该中断的服务程序。
CC2530的中断系统和定时器原理
CC2530及STC89C51芯片对比
STC89C51
•定时器个数:2 •工作模式:
•
计数器工作模式
定时器工作模式
•工作方式:4种工作方式(方 式0-方式3)
CC2530
•定时器个数:4
•工作模式:
•
自由运行模式
模模式
正计数/倒计数模式
通道模式控制
输入捕获模式
输出比较模式
• uint LEDFlag; //标志是否要闪烁
•
T1CTL = 0x05;
• void InitialT1test(void); //初始化函 •
T1STAT= 0x21;
//通道0,中断有
数声明
效,8分频;自动重装模式(0x0000->0xffff)
•}
2021/2/4
23
• void main()
• 当中断发生时,不管该中断使能或禁止,CPU 都会在中断 标志寄存器中设置中断标志位。如果当设置中断标志时中 断使能,那么在下一个指令周期,由硬件强行产生一个 LCALL 到对应的向量地址,运行中断服务程序。
• 中断的响应需要不同的时间,取决于该中断发生时 CPU
202的1/2/状4 态。
16
中断响应时间
• #define LED1 P1_0
•
P0DIR = 0x10; //P04为输出
• #define LED2 P1_1
• #define LED3 P0_4
• uint counter=0; 次数
• • //统计溢出 • •
LED1 = 1; LED2 = 1; LED3 = 1; //初始化计数器1
• 指令周期用于探测中断,其余 6 个用来执行 LCALL。
2021/2/4
17
中断标志寄存器4
2021/2/4
18
中断标志寄存器5
2021/2/4
19
中断优先级
•中断组合成为 6 个中断优先组,每组的优先级通过设置寄 存器 IP0 和 IP1 实现。为了给中断(也就是它所在的中断 优先组)赋值优先级,需要设置 IP0 和 IP1 的对应位,如 表 2-6 所示。。
2021/2/4
8
CPU处理事件的过程,称为CPU的中断响应过程。 对事件的整个处理过程,称为中断处理(或中断服务)。
将能引起中断的事件称为中断源。 CPU现行运行的程序称为主程序。 处理随机事件的程序称为中断服务子程序。
2021/2/4
9
STC89C51
中断源个数:5个 外部输入中断源INT0(P3.2) 外部输入中断源INT1(P3.3) 片内定时器T0的溢出 片内定时器T1的溢出 片内串行口发送或接收中断源
CC2530
CPU 有18个中断源。每个中 断源都有它自己的位于一系 列 SFR 寄存器中的中断请 求标志。相应标志位请求的 每个中断可以分别使能或禁 用。
2021/2/4
10
每个中断请求可以通过设置中断使能 SFR 寄存器的中 断使能位 IEN0 , IEN1 或者 IEN2 使能或禁止。
注意某些外部设备有若干事件,可以产生与外设相关的 中断请求。这些中断请求可以作用在端口 0 、端口 1 、 端口 2 、定时器 1 、定时器 2 、定时器 3 、定时器 4 和无线电上。对于每个内部中断源对应的 SFR 寄存 器,这些外部设备都有中断屏蔽位。
2021/2/4
20
中断优先级及其赋值的中断源显示在表 2-7 中。每组赋值 为 4 个中断优先级之一。当进行中断服务请求时 ,不允许 被较低级别或同级的中断打断。
2021/2/4
21
当同时收到几个相同优先级的中断请求时, 采取如同表 28 所列的轮流探测顺序来判定哪个中断优先响应 。
2021/2/4
2021/2/4
2
STC89C51 •工作方式的设置:
CC2530 工作方式的设置:
2021/2/4
3
STC89C51
CC2530
2021/2/4
4
STC89C51
计算定时/计数初值
89C51定时/计数初值计算公式:
CC2530
初始化
其中: N与工作方式有关: 方式0时,N=13; 方式1时,N=16; 方式2、3时,N=8。
•
•{
•
• InitialT1test(); //调用初始化函 •
数
•
• while(1) //查询溢出
•
•{
•
•
if(IRCON > 0)
•
{
•
•
•
IRCON = 0; //清溢出标志 •
•
counter++;
•
if(counter==15) //中断计数,
约0.25s
•
{
•
counter =0;
• 中断的响应需要不同的时间,取决于该中断发生时 CPU 的状态。当 CPU 正在运行的中断服务程序,其优
• 先级大于或等于新的中断时,新的中断暂不运行,直至新 的中断的优先级高于正在运行的中断服务程序。在其
• 他情况下,中断响应的时间取决于当前的指令,最快响应 一个中断的时间是 7 个机器指令周期,其中 1 个机器