1.控制目标

利用定时器T1工作方式1控制两个LED以不同周期闪烁,使得LED1每秒闪烁4次(即周期为250ms),LED2每秒闪烁1次(即周期为1s)。

2.控制分析

2.1 LED侧分析

若要使LED1每秒闪烁4次(即周期为250ms),LED2每秒闪烁1次(即周期为1s),那么需要分别给P1.0和P1.2接口分别输出周期为250ms(高低电平分别125ms)和1000ms(高低电平分别500ms)的方波。

2.2 程序分析

因为LED1和LED2的周期刚好是倍数关系,因此可以考虑定时器设置为125ms溢出,那么每溢出一次P1.0取反一次,每溢出四次P1.1取反一次。但是T1是16位定时器,那么最大仅为65535,机器周期为1.085us,则单次最多只能计时约71.1ms,因此我们可以考虑采用62.5ms溢出,那么每溢出2次P1.0取反一次,每溢出8次P1.1取反一次。
初值计算:单片机内部的时钟振荡器产生11.0529MHz的脉冲信号,经12分频后得到11.0529/12MHz的脉冲信号,那么经过62.5ms需要的脉冲信号为62.5ms/((12/11.0529)*10^(-3)ms)≈57567次,即T1设定初值应为57567次。

3.程序编写

#include<reg52.h>
#include<intrins.h>
sbit LED1=P1^0;
sbit LED2=P1^1;    //LED灯位定义
unsigned char sum1;
unsigned char sum2;//全局变量定义,用以对溢出次数计数
void main()
{EA=1; //开总中断
ET1=1;//允许T1中断
TMOD=0X10;//M1=0,M0=1,即T1被设定为定时器、工作方式1
TH1=(65536-57567)/256;  //T1高八位设初值
TL1=(65536-57567)%256;  //T1低八位设初值
TR1=1; //T1启动
sum1=0;
sum2=0;
while(1)
;   //一直循环等待中断
}
void Tim1() interrupt 3//中断服务函数,T1的中断编号为3
{sum1++;sum2++;//每溢出一次sum1和sum2加1if(sum1==2){LED1=~LED1;sum1=0;}if(sum2==8){LED2=~LED2;sum2=0;}
TH1=(65536-57567)/256;  //T1高八位设初值
TL1=(65536-57567)%256;  //T1低八位设初值
//注意一定要再次对T1重新赋初值,否则溢出一次后将会从0开始计数
}

中断系统应用实例(1)用定时器T1工作方式1控制两个LED以不同周期闪烁相关推荐

  1. 单片机中断系统应用实例(两组实验+Proteus仿真+C源程序)

    中断系统应用实例 1.实验说明 2.实验一 2.1.实验效果 2.2.Proteus仿真图 2.3.源程序 3.实验二 3.1.实验效果 3.2.Proteus仿真图 3.3.源程序 1.实验说明 实 ...

  2. C51实现时钟12MHz,使用定时器T1的方式1定时20mS ,做一个时分秒的电子钟。

    /***************************************************** *任务要求 *1.时钟12MHz,使用定时器T1的方式1定时20mS: *2.对20mS计 ...

  3. CC2530————通过定时器T1查询方式控制LED1周期性闪烁(模模式)

    CC2530----通过定时器T1查询方式控制LED1周期性闪烁(模模式) 宏定义与函数声明 初始化 主函数 宏定义与函数声明 /*********************************** ...

  4. 利用定时器0工作方式1——独立按键控制流水灯模式

    目录 1.前言 1.1 项目资源 1.2 实验现象 2.定时器/计数器 2.1定时器/计数器0&1的相关寄存器 2.2定时器的工作方式(总结) 3.中断系统 3.1中断概念 3.2中断流程: ...

  5. 定时器计数器工作方式

    1.方式0           方式0为13位计数,由TL0的低5位(高3位未用)和TH0的8位组成.TL0的低5位溢出时向TH0进位,TH0溢出时,置位TCON中的TF0标志,向CPU发出中断请求. ...

  6. 7. 【可编程定时器8253】:外部引脚、内部结构特点、计数启动方式、6种工作方式、控制字格式、应用

    文章目录 计数与定时 8253芯片特点 1. 外部引脚 2. 内部结构特点(含3个计数器.1个控制寄存器) 2. 计数启动方式(软件启动.硬件启动的定义) 3. 6种工作方式 不能自动重复计数的工作方 ...

  7. DSP:C54x定时器及使用定时器产生led的1s周期闪烁

    一.C54x的片内定时器是一个可编程的定时器,同时可以用于周期性地产生中断,为16位计数器.定时器主要由定时器寄存器TIM.定时周期寄存器PRD.定时控制寄存器TCR(包括分频系数TDDR.预标定计数 ...

  8. 定时器0工作方式2,定时1s

    定时器0工作方式2,定时1s

  9. 定时器0工作方式1,定时1s

    定时器0工作方式1,定时1s.

最新文章

  1. 举例说明使用MATLAB Coder从MATLAB生成C/C++代码步骤
  2. 三年、四大顶会,深度推荐系统18篇论文只有7个可以复现
  3. Normalization 的发展历程
  4. 生成树、最小生成树的一些性质以及邻域的概念
  5. Deepfacelab的填坑之旅
  6. 单细胞一站式分析网站CeDR Atlas使用指南
  7. C++学习之路 | PTA乙级—— 1035 插入与归并 (25 分)(精简)
  8. SpringSecurity之权限管理
  9. 用Java简单实现验证码功能以及校验
  10. Excel合并两列中的文本内容
  11. Kernel同步机制的底层实现
  12. 小强的HTML5移动开发之路
  13. 人可以活很多次,但是七年就是一辈子
  14. 游戏人工智能——聚集与避障
  15. Lambda 表达式详解
  16. Linux清理文件内容的四种方式
  17. 本地直播平台的搭建—四种方式
  18. [原创]数独解答程序
  19. Docker 进入Mysql容器
  20. Oracle数据库sql语句练习【emp和dept的连表查询由浅入深】

热门文章

  1. RGB图像-像素、分辨率、相关概念
  2. Fiddler简介与Web抓包,远程抓包——小白入门
  3. 除了ARM架构,还有其他的架构吗?有没有可能开发出比ARM架构还好的? RISC-V是未来的趋势吗?
  4. 神经网络压缩库Distiller学习
  5. 机器学习:SVM支持向量机理解
  6. 将yyyyMMdd转成yyyy-MM-dd格式和yyyy-MM-dd格式转成yyyyMMdd
  7. 美式口语发音技巧:《影子跟读》
  8. 使用了可能未初始化的本地指针变量“xxx”
  9. 阿里云拨测:主动探测Web应用质量,助力提升用户体验
  10. 玩转内网穿透(1):内网穿透是什么?有什么用