CC2530的中断系统和定时器原理_第1页
CC2530的中断系统和定时器原理_第2页
CC2530的中断系统和定时器原理_第3页
CC2530的中断系统和定时器原理_第4页
CC2530的中断系统和定时器原理_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

CC2530的中断系统

和定时器的定时原理

CC2530及STC89C51芯片对比

STC89C51定时器个数:2工作模式:

计数器工作模式

定时器工作模式工作方式:4种工作方式(方式0-方式3)CC2530定时器个数:4工作模式:自由运行模式模模式正计数/倒计数模式通道模式控制输入捕获模式

输出比较模式

STC89C51工作方式的设置:

CC2530高4位控制T1低4位控制T0门控位计数/定时方式选择工作方式选择门控位计数/定时方式选择工作方式选择GC/TM1M0GC/TM1M0工作方式的设置:STC89C51CC2530M1M0工作方式功能00方式013位计数器01方式116位计数器10方式2两个8位计数器,初值自动装入11方式3两个8位计数器,仅适用T0STC89C51计算定时/计数初值89C51定时/计数初值计算公式:CC2530其中:N与工作方式有关:方式0时,N=13;

方式1时,N=16;

方式2、3时,N=8。

机周时间与主振频率有关:机周时间=12/fosc

fosc=12MHZ时,1机周=1

S;

fosc=6MHZ

时,1机周=2

S。初始化STC89C51启动重新赋值:清零

你正在专心看书,突然电话铃响,于是你记下正在看的书的页数,去接电话,接完电话后再回来接着看书。日常生活中中断的例子:中断系统计算机中的中断概念:CPU正在执行程序时,单片机外部或内部发生的某一事件,请求CPU迅速去处理。CPU暂时中止当前的工作,转到中断服务处理程序处理所发生的事件。处理完该事件后,再回到原来被中止的地方,继续原来的工作,这称为中断。CPU处理事件的过程,称为CPU的中断响应过程。对事件的整个处理过程,称为中断处理(或中断服务)。CPU处理事件的过程,称为CPU的中断响应过程。对事件的整个处理过程,称为中断处理(或中断服务)。将能引起中断的事件称为中断源。CPU现行运行的程序称为主程序。处理随机事件的程序称为中断服务子程序。

STC89C51中断源个数:5个外部输入中断源INT0(P3.2)外部输入中断源INT1(P3.3)片内定时器T0的溢出片内定时器T1的溢出片内串行口发送或接收中断源CC2530CPU有18个中断源。每个中断源都有它自己的位于一系列SFR寄存器中的中断请求标志。相应标志位请求的每个中断可以分别使能或禁用。每个中断请求可以通过设置中断使能SFR寄存器的中断使能位IEN0

,IEN1

或者

IEN2使能或禁止。注意某些外部设备有若干事件,可以产生与外设相关的中断请求。这些中断请求可以作用在端口0、端口1、端口2、定时器1、定时器2、定时器3、定时器4和无线电上。对于每个内部中断源对应的SFR寄存器,这些外部设备都有中断屏蔽位。使能中断步骤:1清除中断标志。2如果有,则设置SFR寄存器中对应的各中断使能位为13设置寄存器IEN0、IEN1和IEN2中对应的中断使能位为14设置IEN0中的EA位为1使能全局中断。5在该中断对应的向量地址上,运行该中断的服务程序。中断使能寄存器0中断使能寄存器1中断使能寄存器2中断处理当中断发生时,CPU就指向中断向量地址。一旦中断服务开始,就只能够被更高优先级的中断打断。中断服务程序由中断指令RETI终止,当RETI执行时,CPU将返回到中断发生时的下一条指令。当中断发生时,不管该中断使能或禁止,CPU都会在中断标志寄存器中设置中断标志位。如果当设置中断标志时中断使能,那么在下一个指令周期,由硬件强行产生一个LCALL

到对应的向量地址,运行中断服务程序。中断的响应需要不同的时间,取决于该中断发生时CPU的状态。中断响应时间中断的响应需要不同的时间,取决于该中断发生时CPU的状态。当CPU正在运行的中断服务程序,其优先级大于或等于新的中断时,新的中断暂不运行,直至新的中断的优先级高于正在运行的中断服务程序。在其他情况下,中断响应的时间取决于当前的指令,最快响应一个中断的时间是7个机器指令周期,其中1个机器指令周期用于探测中断,其余6个用来执行LCALL。中断标志寄存器4中断标志寄存器5中断优先级中断组合成为6个中断优先组,每组的优先级通过设置寄存器IP0和IP1实现。为了给中断(也就是它所在的中断优先组)赋值优先级,需要设置IP0和IP1的对应位,如表2-6所示。。中断优先级及其赋值的中断源显示在表2-7中。每组赋值为4个中断优先级之一。当进行中断服务请求时,不允许被较低级别或同级的中断打断。当同时收到几个相同优先级的中断请求时,采取如同表2-8所列的轮流探测顺序来判定哪个中断优先响应。CC2530定时中断代码例程#include<ioCC2530.h>#defineuintunsignedint#defineucharunsignedchar#defineLED1P1_0 #defineLED2P1_1#defineLED3P0_4 uintcounter=0; //统计溢出次数uintLEDFlag; //标志是否要闪烁voidInitialT1test(void);//初始化函数声明voidInitialT1test(void){ //初始化LED控制端口P1 P1DIR=0x03;//P10P11为输出P0DIR=0x10;//P04为输出 LED1=1; LED2=1; LED3=1; //初始化计数器1 T1CTL=0x05; T1STAT=0x21;//通道0,中断有效,8分频;自动重装模式(0x0000->0xffff)}voidmain(){InitialT1test();//调用初始化函数while(1)//查询溢出{if(IRCON>0){IRCON=0;//清溢出标志counter++;if(counter==15)//中断计数,约0.25s{counter=0;LEDFlag=!LEDFlag;}

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论