中断与定时器

  中断就像是你在生活中正在做一件事时,正好有事要做,你放下手中的工作去做另外一件事,做完这件事后,回来断续来完成你刚才没有完成的事。

   

   对于串行口接收和发送中断,是由硬盘自动置位SCON中的中断请求标志TI(发送)RI(接收)

   中断又分为内部中断和外部中断。

   外部中断中的中断控制寄存器----TCON

   D7      D6        D5        D4       D3        D2        D1       D0

TF1

TR1

TF0

TR0

IE1

IT1

IE0

IT0

  

   其中TF1TF0是对串行接收/发送中断;TR1TR0是进行运行控制的;

        IE1IE0是中断请求标志位,外部中断INT0INT1;    

        IT1IT0是定时器/计数请求标志位。

   中断允许寄存器IE

D7          D6       D5        D4       D3        D2        D1        D0

EA 

-

-

ES

ET1

EX1

ET0

EX0

   

  EACPU的中断开放标志;    

  ES:串行口中断允许;

  ET1ET0:定时器/计数器T1T0的溢出中断允许位;

  EX1EX0:外部中断01中断允许位

  中断优先级寄存器IP

 D7          D6       D5        D4       D3        D2        D1        D0

-

-

-

PS

PT1

PX

PT0

PX0

   PS:串行口中断优先级控制位

   PT1PT0是定时器T1,T0中断优先级控制,

PT1=1T1为高优先级,PT1=0T1为低优先级;

PT0=1T0为高优先级,PT0=0T0为低优先级;

   PX1PX0:是外部中断10中断优先级控制

PX1=1时外部中断1为高优先级,PX1=0时外部中断1为低优先级;

PX0=1时外部中断0为高优先级,PX0=0时外部中断0为低优先级;

中断优先级默认的由高到低的排列

   中断源

外部中断0

定时器T0中断

外部中断1

定时器T1中断

串行口中断

中断响应时间:

        调用指令本身需要两个机器周期,乘法指令MUL和除法指令DIV需要4个机器周期。外部中断响应时间总是在3~8个机器周期之间。

单片机的触发方式有两种:电平触发和边沿触发方式

电平触发方式中,外部中断源口的电平逻辑直接给中断标志寄存器;

边沿触发方式:中断口线上一个由高到低的跳变记录在标志寄存器中;

   IT0=0,为电平触发方式,一脚INT0上低电平有效

   IT0=1,为跳沿触发方式,引脚INT0上的电平从高到低的负跳变有效。

   IT1=0,为电平触发方式,一脚INT1上低电平有效

   IT1=1,为跳沿触发方式,引脚INT1上的电平从高到低的负跳变有效。

中断服务程序及例程

   Interrupt表示函数是一个中断服务函数,

中断源                     中断编号

外部中断0                          0

定时器T0                          1

外部中断1                          2

定时器T1                          3

串行口中断                         4

定时器T2                          5

Using中断服务程序中的工作寄存器组号0~3

定时/计数器的的方式寄存器TMOD

D7          D6       D5        D4       D3        D2        D1        D0

CATE

C/T

M1

M0

GATE

C/T

M1

M0

         T1方式字段 T0方式字段

工作方式M1,M0

M1    M0                    功能说明

0      0           方式0,为13位的定时/计数器

0      1           方式1的计数位数是16位,由TL0作为低8位、TH0作为高8位,组成了16位加1计数器 

1      0           方式2为自动重装初值的8位计数方式

1      1       方式3T0在该方式时成为两个8位定时/计数器,T1在该方式时停止计数

       

 

              

 

               方式0的工作原理:   计数个数与计数初值N=213-X

                中断溢出为13位,当TR0=1时,GATE=0, 与 INT0引脚或门得到1,再与TR0与门,使开关1导通,

        计数器开始,每运行一次,TH0TL0都会自动加1,并把1转给TF0

                 当连接T0引脚时,计数初值为a,晶振频率为12MHZ,定时时间为t=(213-a)us

              

      

       方式1的工作原理:    计数个数与计数初值  N=216-X

              中断溢出为16位,当TR0=1时,GATE=0, 与 INT0引脚或门得到1,再与TR0与门,使开关1导通,

        计数器开始,每运行一次,TH0TL0都会自动加1,并把1转给TF0

                 当连接T0引脚时,计数初值为a,晶振频率为12MHZ,定时时间为t=(216-a)us

      

        方式2的工作原理:计数个数与计数初值  X=28-X

              中断溢出为16位,当TR0=1时,GATE=0, 与 INT0引脚或门得到1,再与TR0与门,使开关1导通,

        计数器开始,每运行一次,TH0TL0都会自动加1,并把1转给TF0

                 当连接T0引脚时,计数初值为a,晶振频率为12MHZ,定时时间为t=(216-a)us

        工作方式2特别适合于用作较精确的脉冲信号发生器。

     

     方式3的工作原理:

             定时器T1处于方式3时相当于TR1=0,停止计数。当TR1=1时,每计数一次就把1赋给TF1 。 

             中断溢出为16位,当当TR0=1时,GATE=0, 与 INT0引脚或门得到1,再与TR0与门,使开关1导通,

        计数器开始,每运行一次,TTL0都会自动加1,并把1转给TF0

                 当连接T0引脚时,计数初值为a,晶振频率为12MHZ,定时时间为t=(216-a)us

        工作方式2特别适合于用作较精确的脉冲信号发生器。

 

 

       

            溢出的时候进入中断,也就是从0xFFFF到0x0000的时候,标准51的晶振频率除以12就是计时器加1的频率,如果你用的是12MHz的晶体,那就是每隔1us你的计时器自动加1,所以最大能计时的时间范围就是从0x0000到0xFFFF,也就是从0到65535,65.5ms左右,你要每秒定时,或者你用频率很低的晶振,或者你要设置一个变量来计数,把定时器设置到50ms  (TH0=(65536-50000)/32)一中断,然后在中断中给变量加1,等变量到20,就证明到1秒了,再执行你的程序。 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值