您的位置 首页 硬件

51单片机中止学习

一、中断的概念CPU在处理某一事件A时,发生了另一事件B请求CPU迅速去处理(中断发生);CPU暂时中断当前的工作,转去处理事件B(中断响应和…

一、中止的概念

CPU在处理某一事情A时,产生了另一事情B恳求CPU敏捷去处理(中止产生);
CPU暂时中止当时的作业,转去处理事情B(中止呼应和中止服务);
待CPU将事情B处理完毕后,再回到本来事情A被中止的当地持续处理事情A(中止回来),这一进程称为中止

二、中止源

51单片机中有5个中止源

中止号优先级中止源中止进口地址

01(最高)外部中止00003H
12守时器0000BH

23外部中止10013H

34守时器10018H

45串口总段0023H

三、中止寄存器

单片机有10个寄存器主要与中止程序的书写操控有关

1.中止答应操控寄存器IE

2.守时器操控寄存器TCON

3.串口操控寄存器SCON

4.中止优先操控寄存器IP

5.守时器作业办法操控寄存器TMOD

6.守时器初值赋予寄存器(TH0/TH1,TL0/TL1)

寄存器具体阐明:http://blog.sina.com.cn/s/blog_a05b986d0101545c.html

四、寄存器功用与赋值阐明

注:在用到中止时,必需要开总中止EA,即EA=1。//开总中止

1.中止答应操控寄存器IE

EX0(EX1):外部中止答应操控位

EX0=1外部中止0开封闭合//开外部0中止
EX0=0 外部中止0开关断开

ET0(ET1):守时中止答应操控位

ET0=1守时器中止0开封闭合//开内部中止0

ET0=0 守时器中止0开关断开
ES:串口中止答应操控位

ES=1串口中止开封闭合//开串口中止

ES=0 串口中止开关断开

2.守时器操控寄存器TCON//操控外部中止和守时器中止

外部中止:

IE0(IE1):外部中止恳求标志位

当INT0(INT1)引脚呈现有用的恳求信号,此位由单片机主动置1,cpu开端呼应,处理终端,而当入

中止程序后由单片机主动置0.

//外部中止,即外部中止相应的引脚接入低电平或下降沿信号时,中止开端呼应。

IT0(IT1):外部中止触发办法操控位//挑选有用信号

IT0(IT1)=1:脉冲触发办法,下降沿有用。

IT0(IT1)=0:电平触发办法,低电平有用。

内部中止:

TF0(TF1):内部守时器/计数器溢出中止标志位

当守时器、计数器计数溢出的时分,此位由单片机主动置1,cup开端呼应,处理中止,而当进入中

断程序后由单片机主动置0.

//内部中止实际上便是使用内部的计数器,只不过供给计数的脉冲来自单片机本身。

TRO(TR1):守时器/计数器发动位//发动守时器

TRO(TR1)=1; 发动守时器/计数器0

TR0(TR1)=0; 封闭守时器/计数器0

3.串口操控寄存器SCON

TI:串行口发送中止标志位

当单片机串口发送完一帧数据后,此位由单片机主动置1,而当进入中止服务程序后是不会主动清0的,

必须由用户在中止服务顶用软件清0.

RI:串行口接纳中止标志位

当单片机串口接纳完一帧数据后,此位由单片机主动置1,而当进入中止服务程序后是不会主动清0的,

必须由用户在中止服务软件顶用软件清0.

(IP今后补上,TMOD,TL0/TH0 在守时器/计数器中讲)

五、中止结构图:

六、守时器/计数器

1.计数的界说:

计数是指对外部事情进行计数,外部事情的产生以输入脉冲的办法一共,因而计数功用的本质便是对外来

的脉冲进行计数,在单片机中对应引脚T0和T1,两个脉冲输入端。

外部输入的脉冲在负跳变时有用(即外部脉冲由1改变到0),计数器加1.

2.守时器:

守时器是通过计数器的计数来完成的,不过此刻的计数脉冲来自单片机的内部,因而守时器的本质是对内

部脉冲的计数,在单片机中,每个机器周期产生一次计数脉冲,计数器加1.

3.作业办法操控寄存器TMOD:

TMOD的低半字节(D0,D1,D2,D3)用来操控守时器/计数器0

TMOD的高半字节(D4,D5,D6,D7)用来操控守时器/计数器1

对TMOD中的内容阐明:

GATE——门操控。   
GATE=1时,由外部中止引脚INT0、INT1来发动守时器T0、T1。   
当INT0引脚为高电平时TR0置位,发动守时器T0;   
当INT1引脚为高电平时TR1置位,发动守时器T1。   
GATE=0时,仅由TR0,TR1置位别离发动守时器T0、T1。

C/T——功用挑选位   
C/T=0时为守时功用,C/T=1时为计数功用。     
M0、M1——办法挑选功用   
我们有2位,因而有4种作业办法


4.依据单片机晶振,所选TMOD的的作业办法,所要定的时刻,来确认THO和TLO所要赋予的初值

(以12M晶振,作业办法1,16位计数器为例,设所守时刻为Xus(16为计数器最大数65536,即65536us,若所

守时刻大于65535,则要用if查办操控,现假定X<65535))

1.时钟周期的时刻t=1/12M=1/12 us

2.机器周期的时刻T=12*1/12=1 us

3.由于每通过一个机器周期计数器+1,所以,计数器+1,通过的时刻为1 us。

若所守时刻为X,则要求通过Xus,中止呼应,又由于16为计数器要悉数置1(即到达65535)+1后,中止才会

呼应,所以,初值=(65536-X)

4.将初值转化为16进制码,别离交给THO和TLO

eg:所守时刻5ms

初值=(65536-5000)=60536=EC78

TH0=0XEC; TL0=0X78;

(当作业办法不一起,TH0/TL0的赋值也不同,个人觉得有了16位计数器了,其他的没什么用,不介绍了)

5.写程序时另一种THO/TLO赋值办法

TH0=(65536-20000)/256;
TL0=(65536-20000)%6;

这样设置,每通过20ms,产生一次中止,中止时刻一般以秒为单位,所以通过n次中止即可。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qianrushi/yingjian/265649.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部