单片机学习经验——interrupt

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

单片机中断

一、Interrupt 0——外部中断:

初始化为:EA=1;(开启中断)

IT=0;(电平触发方式,IT=1表示下降沿等边沿式触发)

EX0=1;(允许中断)

例子:

#include

#include

sbit P3_0=P3^0;

int i;

void main( ){

… …

IT0=0; //设为电平触发方式

EA=1; //CPU开放中断

EX0=1; //允许中断

… …

}

void int_0( ) interrupt 0 {

P3_0=0; //由P3.0输出0

_nop_( );

_nop_( );

P3_0=1; //由P3.0输出1,撤除

i=P1; //输入数据

… …

}

二、Interrupt 1——定时器T0溢出:

1、初始化:

1)、TR0=1;(启动定时器T0)

EA=1;(开启中断)

ET0=1;(允许T0中断)

2)、对于时间的计算:

对于晶振为12Mhz的单片机,其一个周期为1微秒。

方式0:

TCON D7D0

所以这是由十三位计数器组成的,计算方法为:

)t/N (213周期注:=-=N X TMOD=OX00;

方式1:

所以这是由16位计数器组成的,其计算方法为: 例:

TMOD=OX01;

TH0=(N -65536)/256; TL0=(N -65536)%256; 同理N=t/晶振周期 方式2:

TCON D7D0

TCON D7D0

16X=2-N

这是8位计数器,计算方法如下:N

=82(N=t/晶振周期)

X-

方式2特别适合于较精确的脉冲信号发生器。此时TMOD=OX06;

例如,利用T0扩展一个外部中断源。将T0设置为计数器方式,按方式2工作,TH0、TL0的初值均为0FFH,T0允许中断,CPU开放中断。

程序为:TMOD=0x06;//置T0为计数器方式2

TL0=0x0FF;//置计数初值

TH0=0x0FF;

TR0=1;//启动T0工作

EA=1;//CPU开中断

ET0=1;//允许T0中断

对于方式3一般不用所以这里暂不介绍了。

三、interrupt 2 -——外部中断1;

其原理和interrupt 0相似,这里简要介绍其算法:

初始化:EA=1;(开启中断)

IT1=0;(电平触发方式,IT1=1表示下降沿等边沿式触发)

EX1=1;(允许中断)

四、interrupt 3——定时器1:

其原理和用法和interrupt 1相似:

初始化:TR1=1;(启动定时器T1)

EA=1;(开启中断)

ET1=1;(允许T1中断)

方式0:TMOD=OX00;

TH1=2^13-N;

TL1=2^13 -N;

方式1:TMOD=OX01;

TH1=2^16-N;

TL1=2^16-N

方式2;TMOD=OX06;

TH1=2^8-N;

TL1=2^8-N;

相关文档
最新文档