单片机
返回首页

51单片机中断定时器浅谈

2015-02-06 来源:51hei

中断处理函数原型

 void    timer1()  interrupt    using 0 

timer1()  函数名  

interrupt  表示是中断处理函数

表示是第几个中断源的处理函数 

using  表示是使用第几组工作寄存器一般在C语言里面编译器屏蔽了会自动分配程序员一般不用关心。

 

注意:如果在中断处理函数中进行处理数据不能处理的数据量太大,因为定时器时间已到它就会又进入下一个中断处理函数,也就是这个中断处理函数还没有处理完下一个中断又来了。这样会造成结果错误或异常。

定时器:

定时器又2个寄存器控制,一个是TMOD  用于选择定时器、计数器 T0,T1的工作模式和工作方式。另一个是TCON 用于控制TO,T1的启动和停止,同时包含了T0,T1的状态,这2个寄存器在单片机复位时候所有位都被清0.

TMOD 是不能位寻址的,因为它的地址是89H不能被8整除。只能赋值或者  进行  与  或 运算进行赋值 ,其中有位是C/T 是把它配置成定时器还是计数器 0 表示是定时器 M0,M1 这2位进行是定时器的模式几共4种模式其中方式1为16  高8位  TH0,低8位在 TL0   (65536-50000)/256  这就是高8位   (65536-50000)%6 放入低8位  是大约50毫秒  前提是晶振为12兆赫。凡是用11.0592 的晶振是因为单片机要进行 串口通讯因为实现标准的波特率  4800  2400  115200 好计算。才选用11.0592的晶振。单片机的晶振可以选12兆一下的晶振都可以。12兆算是最快的速度了。当然不排除其他高速的单片级,可能达到更高运算速度。定时器最高一次定时为65535的数字,也就是大概65毫秒,因为是16位  高8位低8位。所以如果用定时器长时间定时可以  设置多次定时然后在main里面判断。实现长时间定时。定时器是一个加1的寄存器。初值最小为0 。最大65535 ,单片机做延时不占用MCU的资源比用 while  或 for循环好,能提高效率,当时浪费一个I/O口,所以用时综合考虑。

在一般情况下都是定时器与中断一起使用的,如:定时器时间到发生中断,一般都是IE  TMOD TCON 三个寄存器联合使用 TCON 控制TR0 TR1 运行与停止  TMOD 控制工作模式   IE 控制总中断 与 对应的那个中断的开关如 IE =1  ET0 =1 .

最重要的是定时器的启动与停止 直接控制 TR0 TR1这2位 置1 置0就可以了。

也就是是说中断里可以  把它置为0   置为1   ,或者有初值自加的也清0.

还有就是全局变量名与局部变量名不能相同如果相同,局部变量会改变全局变量的值。到时候结果不是期望值。 

进入单片机查看更多内容>>
相关视频
  • RISC-V嵌入式系统开发

  • SOC系统级芯片设计实验

  • 云龙51单片机实训视频教程(王云,字幕版)

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

精选电路图
  • PIC单片机控制的遥控防盗报警器电路

  • 使用ESP8266从NTP服务器获取时间并在OLED显示器上显示

  • 用NE555制作定时器

  • 如何构建一个触摸传感器电路

  • 基于ICL296的大电流开关稳压器电源电路

  • 基于TDA2003的简单低功耗汽车立体声放大器电路

    相关电子头条文章