AT89C51定时器
GATE0 为定时器控制器,当置1时,只有在外部中断INT0引脚为高电平及TR0控制位置1时,才打开定时或计数,GATE1同理
C/T :定时或计数
M1 M0 定时器/计数器模式选择
若工作在定时器0:(不采用外部中断,且不采用计时,而采用定时,定时器模式选择:00:模式0,01:模式1)
TMOD &= 0xf0;
TMOD |= 0x01;
定时时间计算:
若定时1ms,晶振FOSC为11.0592MHz ,也就是11059200Hz,则晶振周期为1/11059200
一个单指令的时间是12个晶振周期,也就是1/11059200*12,若要定时1ms,则(1/1000)/(1/11059200*12),也就是11059200/12/1000
当m1为0,m0为1时,既模式1,它是16位定时器,也就是最大值为2^16等于65536,也就是TH0和TL0的最大值为65536
65536是定时器的溢出值,当定时器达到这个 值时就产生中断,表示时间到。
所以要产生1ms的定时,就定义:
#define FOSC 11059200L (这是晶振频率)
#define TIMES (65536-FOSC/12/1000) (这是定时时间器定时1ms,定时器所对应 的初值)
下面是定时器中断函数:定时1秒
bit time_1_s;
uint8 cnt=0;
void timer0_isr() interrupt 1 using 1
{
TL0 = TIMES;
TH0 = TIMES>>4 ;
if (++cnt == 1000)
{
cnt = 0;
time_1_s = 1;
}
}
初始化定时器:
void timer0_init(void)
{
TMOD = 0x01;
TL0 = TIMES;
TH0 = TIMES>>4;
TR0 = 1; /*定时器0,start running*/
ET0 = 1; /*ENABLE timer0 interrupt*/
}
interrupt 0 指明是外部中断0;interrupt 1 指明是定时器中断0; interrupt 2 指明是外部中断1;interrupt 3 指明是定时器中断1;interrupt 4 指明是串行口中断; using 0 是第0组寄存器;using 1 是第1组寄存器;using 2 是第2组寄存器;using 3 是第3组寄存器; R0-R7在数据存储器里的实际地址是由特殊功能寄存器PSW里的RS1、RS0位决定的。 using 0时设置 RS1=0,RS0 =0,用第0组寄存器,R0--R7的在数据存储区里的实际地址是00H-07H。R0(00H)....R7(07H) using 1时设置 RS1=0,RS0 =1,用第1组寄存器,R0--R7的在数据存储区里的实际地址是00H-07H。R0(08H)....R7(0FH) using 2时设置 RS1=1,RS0 =0,用第2组寄存器,R0--R7的在数据存储区里的实际地址是08H-0FH。R0(10H)....R7(17H) using 3时设置 RS1=1,RS0 =1,用第3组寄存器,R0--R7的在数据存储区里的实际地址是00H-07H。R0(18H)....R7(1FH)
下面对应驱动程序:
if (time_1_s==1)
{
time_1_s = 0;
LED = ! LED;
}
在主函数中要初始化定时器:
void main(void)
{
timer0_init();
EA = 1; /*打开定时器中断总开关*/
}
AT89C51定时器相关推荐
- AT89C51定时器/计数器的使用
AT89C51单片机内有定时器/计数器 T0.T1 共2个定时/计数器,有4种工作方式. 每个定时器/计数器( T0 和 T1),在特殊功能寄存器 TMOD 中都有一个控制位,它选择 T0 和 ...
- at89s51数码管秒表c语言程序,基于AT89C51单片机的一个2位的LED数码显示作为“秒表”设计【基于单片机系统的00-99s的定时器】...
基于AT89C51单片机的一个2位的LED数码显示作为"秒表"设计[基于单片机系统的00-99s的定时器] 工程技术学院 课程设计 题 目:用单片机AT89C51设计一个2位的LE ...
- 单片机定时器实验两位倒计时秒表_单片机学习「1」 初始51单片机
问题1:什么是单片机? 采用集成电路技术,将CPU(具有处理数据能力的中央处理器).RAM(随机存储器,类比电脑里的内存条).ROM(程序存储器,类比电脑硬盘).多种I/O口(类比电脑的各种接口,不过 ...
- at89c2051 定时器用法 c语言编程资料,用AT89C2051单片机制作的数字电容表.doc
用AT89C2051单片机制作的数字电容表 用AT89C2051单片机制作的数字电容表 吴汉清 AT89C2051作为AT89C51的简化版虽然去掉了P0.P2等端口,使I/O口减少了,但是却增加了一 ...
- 基于proteus的51单片机仿真实例五十七、定时器/计数器T0的定时实例
1.本例使用定时器T0的定时中断来控制P1.0端口的LED闪烁,定时周期为100MS,LED点亮50MS,熄灭50ms. 2.实现方法:首先将定时器设置为定时方式,然后选择工作方式,在使用定时中断前要 ...
- 基于AT89C51单片机的抢答器的设计(数码管:四位一体共阳)
设计要求 基于AT89C51单片机设计制作一个抢答器,具体要求如下: 设计一个智力竞赛抢答器,可同时共8名选手参加比赛,编号为1.2.3.4.5.6.7.8,各用一个按键. 用一个按键作为主持人总开关 ...
- STC89C51——定时器/计数器介绍及程序配置
前言 本文介绍基于常见的51单片机,即如下图的芯片: AT89C51具备2个定时器/计数器,即定时器/计数器 0.定时器/计数器 1 ( 简称 T0 / T1). T0 有 4 种工作方式,T1 有 ...
- STM32-Chapter1-6电机开发概述,定时器之基本定时器定时高级定时器互补输出输入捕获输出比较实验
一 需要掌握的技能 希望经过前面介绍的电机开发的应用场景对学习电机应用开发产生浓厚的兴趣,并且能让你更 加坚定地开始学习电机应用开发.那么该如何学习呢?对于电机驱动开发工程师,会有如下基本 要求: ...
- J015基于AT89C51的十字路口交通灯紧急+夜间
基于AT89C51的十字路口交通灯紧急+夜间 仿真图proteus 7.8 程序编译器:keil 4/keil 5 编程语言:C语言 编号J015 目录标题 基于AT89C51的十字路口交通灯紧急+夜 ...
最新文章
- Fedora和Fedora Core各个历史版本官方下载地址
- .net core 生成html,ASP.NET Core 中如何将 .cshtml 视图文件生成为 .cs 文件
- 面试官问我圆角边框,我交出了满分的答卷!——Web前端系列学习笔记
- 真涨工资了:多所高校博士生资助标准大幅度提升
- 从0到1构建支撑企业自动化运维体系
- Json 语法 格式
- 基于XAMPP的Testlink安装方法
- kotlin方法类型_Kotlin类型检查,Kotlin类型铸造
- windows内核驱动漏洞挖掘工具 - IOCTL Fuzzer
- 点击list view中一行内容可以在combox中显示_在后台添加新的产品/文章分类,如何在模板中显示产品列表/文章列表?如何调用分类?...
- ftp文件下载工具,四款超级好用的ftp文件下载工具
- codesys工程ST语言学习笔记(六)ST语言读写CVS文件excel格式(文件读写)
- 注意丨Pearson VUE身份证件政策要求
- 开机出现RUNDLL加载:C:WINDOWS\downlo~1\Cnsmin.dll时…
- GUI 应用:socket 网络聊天室
- 京东手机评论分析(二):关键词提取
- WeaveSocket框架-Unity太空大战游戏-通信协议-2
- [HEOI2013] 钙铁锌硒维生素
- java 二维码原理以及用java实现的二维码的生成、解码
- 今日冬至《心的深处》孙溟㠭篆刻艺术
热门文章
- Qt对于translate()和rotate()的理解,QPainter画家用translate()和rotate()函数实现图片的旋转例子
- php2018 关闭纠错,php-fpm启动关闭重启脚本_2018_lcf
- 解决百度云盘限速问题
- Mac电脑使用快捷键
- python控制CAD画图
- PPT一键换色技巧!无需插件!随意变换各种颜色
- 什么叫事务隔离级别呢?
- 苹果5G遇冷影响AirPods,国产蓝牙耳机可否弯道超车
- 新手学习计算机,做基础软件开发者
- 运营点总结思维导图如何绘制?分享运营点总结思维导图模板及绘制技巧