定时器中断c语言程序
定时器中断c语言解析interrupt      x      using      y   
interrupt 表示中断优先级,using表示所用工作寄存器组。
interrupt      x      using      y   
    跟在interrupt      后面的xx      值得是中断号,就是说这个函数对应第几个中断端口,一般在51中   
    0      外部中断0     
    1      定时器0   
    2      外部中断1   
力拔山兮气盖世    3      定时器1   
    4      串行中断   
    其它的根据相应得单片机有自己的含义,实际上c在编译的时候就是把你这个函数的入
口地址放到这个对应中断的跳转地址   
    using      y      这个y是说这个中断函数使用的那个寄存器组就是51里面一般有4个      r0      --      r7寄存器,如果你的终端函数和别的程序用的不是同一个寄存器组则进入中断的时候就不会将寄存器组压入堆栈返回时也不会弹出来 节省代码和时间
外部中断INT0
void intsvr0(void) interrupt 0 using 1
定时/计数器T0
void timer0(void) interrupt 1 using 1
外部中断INT1
void intsvr1(void) interrupt 2 using 1
定时/计数器T1
娱乐园
void timer1(void) interrupt 3 using 1
串口中断
void serial0(void) interrupt4 using 1
单片机的C语言
HNBCC培训
电话:137****9808
一,中断的概念
中断:当计算机执行正常程序时,系统中出现某些急需处理的异常情况和特殊请求.
中断的执行:当CPU正在执行某一程序时,若有中断响应,则CPU转而执行中断服务程序,当中断服务程序执行完毕后,CPU自动返回原来的程序继续执行.
中断服务程序的语句写法与函数的写法完全相同,所以,中断服务程序也是函数,只在函数头
部有不同(后续).
中断服务程序的执行与函数的执行不同:函数的执行是有固定位置的,是通过函数的调用来完成的;而中断服务程序的执行是不固定位置的,只要有中断响应,在一定条件下都会去响应中断,即执行中断服务程序.
二,中断源
中断源:任何引起计算机中断的事件,一般一台机器允许有许多个中断源.
8051系列单片机至少有5个可能的中断(8052有6个,其它系列成员最多可达15个).下面以5个中断源为例.
8051单片机的五个中断源是:
外部中断请求0,由INT0(P3.2)输入;
外部中断请求1,由INT1(P3.3)输入;
片内定时器/计数器0溢出中断请求;
片内定时器/计数器1溢出中断请求;
片内串行口发送/接收中断请求.济南旅游景点介绍
三,与中断有关的寄存器
1,定时/计数器控制寄存器TCON
TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
D7 D6 D5 D4 D3 D2 D1 D0
. IT0,IT1:外部中断0,1触发方式选择位,由软件设置;
1→下降沿触发方式,INT0/INT1管脚上高到低的负跳变可引起中断;
0→电平触发方式, INT0/INT1管脚上低电平可引起中断.
. IE0,IE1:外部中断0,1请求标志位;
当外部中断0,l依据触发方式满足条件,产生中断请求时由硬件置位 (IE0/IE1=1);当CPU响应中断时由硬件清除(IE0/IE1= 0).
. TR0,TR1: 启动定时/计数器0,1.
. TF0,TF1:定时器/计数器0,1(T/C0,T/C1)溢出中断请求标志;
当T/C0,1计数溢出时由硬件置位(TF0/TF1=l);
当CPU响应中断由硬件清除(TFO/TF1=0).
三,与中断有关的寄存器
2,串行口控制寄存器SCON
TI RI
D7 D6 D5 D4 D3 D2 D1 D0
. RI:串行口接收中断请求标志位;
当串行口接收完一帧数据后请求中断,由硬件置位(RI=1)
RI必须由软件清"0".
. TI:串行口发送中断请求标志位.
当串行口发送完一帧数据后请求中断,由硬件置位(TI=1)
TI必须由软件清"0".
三,与中断有关的寄存器
3,中断允许寄存器IE
EA ET2 ES ET1 EX1 ET0 EX0
D7 D6 D5 D4 D3 D2 D1 D0
. EX0,EX1:外部中断0,1的中断允许位;
l→外部中断0,1开中断;0→外部中断0,1关中断.
. ET0,ET1:定时器/计数器0,1(T/C0,T/C1)溢出中断允许位;
1→T/C0,T/Cl开中断;0→T/C0,T/Cl关中断.
. ES:串行口中断允许位;
1→串行口开中断;0→串行口关中断.
. ET2:定时器/计数器2(T/C2)溢出中断允许位;
1→T/C2开中断;0→T/C2关中断.
. EA:CPU开/关中断控制位.
1→CPU开中断.0→CPU关中断.
8051复位时,IE被清"0",此时CPU关中断,各中断源的中断也都屏蔽
三,与中断有关的寄存器
4,中断优先级寄存器IP
PS PT1 PX1 PT0 PX0
D7 D6 D5 D4 D3 D2 D1 D0
. PX0,PX1:外部中断0,1中断优先级控制位;
1→高优先级;0→低优先级.
. PT0,PT1:定时器/计数器0,1中断优先级控制位;
1→高优先级;0→低优先级.
. PS:串行口中断优先级控制位;
1→高优先级;0→低优先级.
8051复位时,IP被清"0",5个中断源都在同一优先级,其内部优先级的顺序从高到低为: 外部中断0(IE0)
定时器/计数器0(TF0)
外部中断1(IE1)
定时器/计数器1(TF1)
串行口中断(RI+TI)
四,中断响应
8051的CPU在每个机器周期采样各中断源的中断请求标志位,如果没有下述阻止条件,将在下一个机器周期响应被激活了的最高级中断请求:
1.CPU正在处理同级或更高级的中断;
2.现行机器周期不是所执行指令的最后一个机器周期;
3.正在执行的是RETI或是访问IE或IP的指令.
CPU在中断响应后完成如下的操作:
1.硬件清除相应的中断请求标志;
2.执行一条硬件子程序,保护断点,并转向中断服务程序人口
3.结束中断时执行RETI指令,恢复断点,返回主程序.
8051的CPU在响应中断请求时,由硬件自动形成转向与该中断源对应的服务程序入口地址,这种方法为硬件向量中断法.
五,中断服务程序的入口地址
编号 中断源 人口地址
0 外部中断0 0003H
1 定时器/计数器0 000BH
2 外部中断1 0013H
3 定时器/计数器1 001BH
4 串行口中断 0023H
各中断服务程序入口地址仅间隔8个字节,编译器在这些地址放入无条件转移指令跳转到服务程序的实际地址.
六,中断服务程序的语法规则
中断服务程序的语法规则如下:
函数的返回值 函数名([参数]) interrupt n [using m]
{
函数体;
}
对中断程序而言,函数的返回值和参数一般为void.
创佛录interrupt n 中n的取值为0~31的常数,不允许用表达式,表示中断向量的编号.
using m 中m的取值为0~3的常数,不允许用表达式,表示内部RAM中的工作寄存器.
七,中断说明
中断不允许用于外部函数,它对函数目标代码影响如下z
·当调用函数时,SFR中的ACC,B,DPH,DPL和PSW(当需要时)入钱;
.如果不使用寄存器组切换,甚至中断函数所需的所有工作寄存器都入钱;
.函数退出前,所有的寄存器内容出钱;
·函数由8051的指令"RETI"终止.
中断服务程序使用的任何程序也使用同一寄存器组.
八,中断例子
#include 〈reg51.h〉
unsigned char status;电视剧排行榜韩剧
bit flag;风起洛阳电视剧什么时候上映
void service_int() interrupt 2 using 2
{ flag=1;
status=P1;
}
void main(void)
{
IP=0x04; IE=0x84;
for(;;){
if(flag){
switch(status){
case 0: break;
case 1: break;
case 2: break;
case 3: break;
default: ;}
flag=0;
}
}
}
图见书中P148
习题
试设计满足下列要求的电路图:
1 单片机采用89C51,时钟11.0592MHz;
2 有4个指示灯表示状态;
3 外接12位A/D芯片AD574;
4 有4 * 4的键盘;
5 有字符型LCD(画成插座形式,12Pin插座,管脚接法见书P253);
6 有串行接口与计算机连接;
7 设置8位二进制的地址,地址范围可表示为0~255;
8 外接EEPROM.
定时器/计数器(T/C)
8051系列单片机至少有两个16位内部定时器/计数器,8052有三个定时器/计数器,其中有两个是基本定时器/计数器是定时器/计数器.它们既可以编程为定时器使用,也可以编程为计数
器使用.
若是计数内部晶振驱动时钟,它是定时器;若是计数,8051的输入管脚的脉冲信号,它是计数器.
当T/C工作在定时器时,对振荡源12分频的脉冲计数,即每个机器周期计数值加1,计数率=1/12f osc.例当晶振为12MHz时,计数率=1000kHz,即每1μs计数值加1.
当T/C工作在计数器时,计数脉冲来自外部脉冲输入管脚T0(P3.4)或T1(P3.5),当T0或T1脚上负跳变时计数值加1.识别管脚上的负跳变需两个机器周期,即24个振荡周期.所以T0或T1脚输入的可计数外部脉冲的最高频率为1/24fosc,当晶振为12MHZ时,最高计数率为500kHz,高于此频率将计数出错.
一,与T/C有关的SFR
1,计数寄存器Th和TL
T/C是16位的,计数寄存器由TH高8位和TL低8位构成.
在特殊功能寄存器(SFR) 中,
对应T/C0为TH0和TL0;

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。