中断系统应用实例(1)用定时器T1工作方式1控制两个LED以不同周期闪烁
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以不同周期闪烁相关推荐
- 单片机中断系统应用实例(两组实验+Proteus仿真+C源程序)
中断系统应用实例 1.实验说明 2.实验一 2.1.实验效果 2.2.Proteus仿真图 2.3.源程序 3.实验二 3.1.实验效果 3.2.Proteus仿真图 3.3.源程序 1.实验说明 实 ...
- C51实现时钟12MHz,使用定时器T1的方式1定时20mS ,做一个时分秒的电子钟。
/***************************************************** *任务要求 *1.时钟12MHz,使用定时器T1的方式1定时20mS: *2.对20mS计 ...
- CC2530————通过定时器T1查询方式控制LED1周期性闪烁(模模式)
CC2530----通过定时器T1查询方式控制LED1周期性闪烁(模模式) 宏定义与函数声明 初始化 主函数 宏定义与函数声明 /*********************************** ...
- 利用定时器0工作方式1——独立按键控制流水灯模式
目录 1.前言 1.1 项目资源 1.2 实验现象 2.定时器/计数器 2.1定时器/计数器0&1的相关寄存器 2.2定时器的工作方式(总结) 3.中断系统 3.1中断概念 3.2中断流程: ...
- 定时器计数器工作方式
1.方式0 方式0为13位计数,由TL0的低5位(高3位未用)和TH0的8位组成.TL0的低5位溢出时向TH0进位,TH0溢出时,置位TCON中的TF0标志,向CPU发出中断请求. ...
- 7. 【可编程定时器8253】:外部引脚、内部结构特点、计数启动方式、6种工作方式、控制字格式、应用
文章目录 计数与定时 8253芯片特点 1. 外部引脚 2. 内部结构特点(含3个计数器.1个控制寄存器) 2. 计数启动方式(软件启动.硬件启动的定义) 3. 6种工作方式 不能自动重复计数的工作方 ...
- DSP:C54x定时器及使用定时器产生led的1s周期闪烁
一.C54x的片内定时器是一个可编程的定时器,同时可以用于周期性地产生中断,为16位计数器.定时器主要由定时器寄存器TIM.定时周期寄存器PRD.定时控制寄存器TCR(包括分频系数TDDR.预标定计数 ...
- 定时器0工作方式2,定时1s
定时器0工作方式2,定时1s
- 定时器0工作方式1,定时1s
定时器0工作方式1,定时1s.
最新文章
- 举例说明使用MATLAB Coder从MATLAB生成C/C++代码步骤
- 三年、四大顶会,深度推荐系统18篇论文只有7个可以复现
- Normalization 的发展历程
- 生成树、最小生成树的一些性质以及邻域的概念
- Deepfacelab的填坑之旅
- 单细胞一站式分析网站CeDR Atlas使用指南
- C++学习之路 | PTA乙级—— 1035 插入与归并 (25 分)(精简)
- SpringSecurity之权限管理
- 用Java简单实现验证码功能以及校验
- Excel合并两列中的文本内容
- Kernel同步机制的底层实现
- 小强的HTML5移动开发之路
- 人可以活很多次,但是七年就是一辈子
- 游戏人工智能——聚集与避障
- Lambda 表达式详解
- Linux清理文件内容的四种方式
- 本地直播平台的搭建—四种方式
- [原创]数独解答程序
- Docker 进入Mysql容器
- Oracle数据库sql语句练习【emp和dept的连表查询由浅入深】
热门文章
- RGB图像-像素、分辨率、相关概念
- Fiddler简介与Web抓包,远程抓包——小白入门
- 除了ARM架构,还有其他的架构吗?有没有可能开发出比ARM架构还好的? RISC-V是未来的趋势吗?
- 神经网络压缩库Distiller学习
- 机器学习:SVM支持向量机理解
- 将yyyyMMdd转成yyyy-MM-dd格式和yyyy-MM-dd格式转成yyyyMMdd
- 美式口语发音技巧:《影子跟读》
- 使用了可能未初始化的本地指针变量“xxx”
- 阿里云拨测:主动探测Web应用质量,助力提升用户体验
- 玩转内网穿透(1):内网穿透是什么?有什么用