找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1107|回复: 1
打印 上一主题 下一主题
收起左侧

单片机定时计数器中断处理程序程序模板

[复制链接]
跳转到指定楼层
楼主
ID:363975 发表于 2018-7-3 14:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
单片机源程序如下:
  1. /*********************************************************************************************
  2. 程序名:    定时计数器中断处理程序
  3. 编写人:    杜洋 
  4. 编写时间:  xxx年9月23日
  5. 硬件支持:  STC12C2052AD 12MHz
  6. 接口说明:  P1接口8个LED灯  
  7. 修改日志:  
  8.   NO.1-        
  9. /*********************************************************************************************
  10. 说明:本程序可使单片机P1.0、P1.1接口上的LED灯分别以定时器T0和T1的各自周期闪烁。
  11. P1.0 由 T0 控制
  12. P1.1 由 T1 控制
  13. /*********************************************************************************************/
  14. #include <REG51.h> //通用89C51头文件
  15. sbit LED1 = P1 ^ 0; //定义闪烁LED
  16. sbit LED2 = P1 ^ 1; //定义闪烁LED
  17. /*********************************************************************************************
  18. 函数名:定时/计数器初始化函数
  19. 调  用:T_C_init();
  20. 参  数:无
  21. 返回值:无
  22. 结  果:设置SFR中T/C1和(或)T/C0相关参数
  23. 备  注:本函数控制T/C1和T/C0,不需要使用的部分可用//屏蔽
  24. /**********************************************************************************************/
  25. void T_C_init (void){
  26. TMOD = 0x11; //高4位控制T/C1 [ GATE,C/T,M1,M0,GATE,C/T,M1,M0 ]
  27. EA = 1; //中断总开关
  28. TH1 = 0xFE; //16位计数寄存器T1高8位(写入初值)
  29. TL1 = 0xFE; //16位计数寄存器T1低8位
  30. ET1 = 1; //T/C1中断开关
  31. TR1 = 1; //T/C1启动开关
  32. TH0 = 0x13; //16位计数寄存器T0高8位
  33. TL0 = 0x13; //16位计数寄存器T0低8位(0x3CB0 = 50mS延时)
  34. ET0 = 1; //T/C0中断开关
  35. TR0 = 1; //T/C0启动开关
  36. }
  37. /**********************************************************************************************/
  38. /*********************************************************************************************
  39. 函数名:定时/计数器1中断处理函数
  40. 调  用:[T/C1溢出后中断处理]
  41. 参  数:无
  42. 返回值:无
  43. 结  果:重新写入16位计数寄存器初始值,处理用户程序
  44. 备  注:必须允许中断并启动T/C本函数方可有效,重新写入初值需和T_C_init函数一致
  45. /**********************************************************************************************/
  46. void T_C1 (void) interrupt 3  using 3{ //切换寄存器组到3
  47. TH1 = 0xFE; //16位计数寄存器T1高8位(重新写入初值)
  48. TL1 = 0xFE; //16位计数寄存器T1低8位

  49. LED2 = ~LED2;  //取LED相反状态
  50. }
  51. /**********************************************************************************************/
  52. /*********************************************************************************************
  53. 函数名:定时/计数器0中断处理函数
  54. 调  用:[T/C0溢出后中断处理]
  55. 参  数:无
  56. 返回值:无
  57. 结  果:重新写入16位计数寄存器初始值,处理用户程序
  58. 备  注:必须允许中断并启动T/C本函数方可有效,重新写入初值需和T_C_init函数一致
  59. /**********************************************************************************************/
  60. void T_C0 (void) interrupt 1  using 1{ //切换寄存器组到1
  61. TH0 = 0x13; //16位计数寄存器T0高8位(重新写入初值)
  62. TL0 = 0x13; //16位计数寄存器T0低8位

  63. LED1 = ~LED1;  //取LED相反状态
  64. }
  65. /**********************************************************************************************/
  66. /*********************************************************************************************/
  67. void main (void){ //主程序
  68. T_C_init(); //初始化
  69. while(1){
  70. }
  71. }
  72. /*********************************************************************************************/
复制代码


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:227864 发表于 2018-8-1 16:48 | 只看该作者
没人顶,我顶,谢谢楼主
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表