新闻中心

EEPW首页>嵌入式系统>设计应用> 51单片机——中断

51单片机——中断

作者: 时间:2016-11-26 来源:网络 收藏

四、定时器/计数器

1.计数的定义:

计数是指对外部事件进行计数,外部事件的发生以输入脉冲的形式表示,因此计数功能的实质就是对外来的脉冲进行计数,在单片机中对应引脚T0和T1,两个脉冲输入端。

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

2.定时器:

定时器是通过计数器的计数来实现的,不过此时的计数脉冲来自单片机的内部,因此定时器的实质是对内部脉冲的计数,在单片机中,每个机器周期产生一次计数脉冲,计数器加1.

3.工作方式控制寄存器TMOD:

工作方式控制寄存器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进制码,分别付给TH0和TL0

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次中断即可。

五、附加

中断函数
中断修饰符

参考链接:

http://blog.sina.com.cn/s/blog_a05b986d010152h3.html

http://wenku.baidu.com/view/946e11949ec3d5bbfd0a74b8.html

http://wenku.baidu.com/view/25971fbefd0a79563c1e725f.html

http://bbs.elecfans.com/jishu_210382_1_1.html

http://wenku.baidu.com/view/3e770240a8956bec0975e395.html


上一页 1 2 下一页

关键词:51单片机中

评论


技术专区

关闭