用51的定时器实现频率计算
$mod52
org 0h
ljmp start
org 0bh
ljmp t0int
org 1bh
ljmp t1int
org 100h
start:
mov sp,#50h
mov ie,#8ah
mov ip,#0ah
mov tmod,#11h
mov 20h,#14h
mov 21h,#00h
mov tl0,#0bah
mov th0,#03ch
setb tr0
setb tr1
loop:
lcall 8300h
sjmp loop
t0int:
mov tl0,#0bah
mov th0,#03ch
djnz 20h,nex
push acc
read:
mov 22h,21h
mov a,th1
mov 24h,tl1
cjne a,th1,read
mov 23h,a
pop acc
mov th1,#00
mov tl1,#00
mov 21h,#00
mov 20h,#14h
nex:
reti
t1int:
inc 21h
reti
end
关键字:51定时器 频率检测
引用地址:
51定时器实现频率检测
推荐阅读最新更新时间:2024-03-16 13:54
51单片机定时器计数器原理以及应用(方波、pwm、脉冲计数、高电平脉宽测量)
1.TMOD定时器/计数器工作方式 寄存器 GATE=1时,定时器由INT和TR共同控制,用于测量脉宽; 2.TCON定时器/计数器控制寄存器 3. 2.应用示例: 2.1T0/T1控制外部引脚输出方波 1.设计思路:设置定时计数器工作在定时工作方式,在中断服务子程序中将需要输出方波信号的I/O引脚上的电平翻转即可。 2.仿真电路: 3.代码 2.2PWM波形输出 1.设计思路:51 单片机 可以使用一个定时计数器来控制产生波形的频率,用另外一个定时计数器来控制波形的占空波。 2.仿真原理图同1. 3.具体代码: 3.脉冲计数 1.设计思路:使用T0/T1进行计数时,当外部引脚上检查到一个脉冲
[单片机]
总结C51、STM32和S3C2440的时钟体系和定时器
/* 名称:总结C51、STM32和S3C2440的时钟体系和定时器 说明:对于C51单片机来说,其谈不上什么时钟体系。片上运行的所有东西都靠一个时钟脉冲提供–外部晶振。 对于STM32来说,其时钟体系比较复杂。为了达到降低能耗的目的,再设计STM32时,其厂商特地设计了一个STM32的时钟树。就连最简单的点亮一个LED灯,都必须配置其时钟树,再打开对应的时钟开关。 在这里简单介绍一些STM32的时钟树的主要部分: 对于这个复杂的时钟树,它的来源可以为外部高速时钟、外部低速时钟、内部低速时钟、内部高速时钟(HSE、HSI、LSI、LSE)。当然,具体选择哪个需要根据需要。在这里选择一个主要的来讲:就是外部高速时钟(HSE)。然
[单片机]
51单片机的定时器中断(寄存器)
中断是为使单片机具有对外部或内部随机发生的事件进行处理而设置的。51单片机有5种中断源,即有5种对应的情况发生时会使单片机去处理中断程序(中断函数)。 此篇主要整理定时器中断笔记。采用定时器中断会涉及中断寄存器,定时器/计数器相关寄存器(TCON,TMOD),中断函数等知识点。 其中,中断寄存器,定时器/计数器相关寄存器本身或者相关位用来做初始化,中断函数的内容主要是体现发生中断后所需要的操作(在中断函数内写代码)。 1.中断允许寄存器IE 图1.中断寄存器IE 中断寄存器用来设定各个中断源的打开和关闭,IE在特殊功能寄存器中,字节地址为A8H,位地址(由低位到高位)分别是A8H~AFH,该寄存器运行位寻址,即可对该
[单片机]
【51单片机 】定时器的初始值计算 详解
首先值得一提的是:51单片机定时器与主程序是并行工作的,就是主程序在运行的时候,定时器也在计数,计数溢出后定时器中断主程序的运行,转而执行中断服务程序。此外还有串行口、中断系统…,都独立的工作,不用 CPU 干预。 正文部分: 好了,我们先来看初始值计算公式: 公式:(216– X)× 12 ÷ 晶振频率 = 定时时间(默认单位us) ————————————————————————————————— X是未知量 ————————————————————————————————— 216是根据方式选择的,可以自行选择,方式1为16位 方式0 :213 (少用) 方式1 :216 (最常用) 方式2 :28 (常用) 假
[单片机]
51单片机学习:定时器0实验
实验名称:定时器0实验 接线说明: 实验现象:下载程序后,D1指示灯间隔1s闪烁 注意事项: ***************************************************************************************/ #include reg52.h typedef unsigned int u16; //对系统默认数据类型进行重定义 typedef unsigned char u8; //定义LED1管脚 sbit LED1=P2^0; /********************************************************************
[单片机]
新唐M051定时器3 周期模式测试程序
以下是新唐M051单片机定时器3的 周期模式测试程序 成功版: #include "SmartM_M0.h" UINT32 i =0; /**************************************** *函数名称:TMR3Init *输 入:无 *输 出:无 *功 能:定时器3初始化 ******************************************/ VOID TMR3Init(VOID) { PROTECT_REG ( /* 使能TMR0时钟源 */ APBCLK |= TMR3_CLKEN; /* 选择TMR0时钟源为外部晶振12MHz */
[单片机]
【C51】源码 3 -- 电子时钟(独立按键、8 位数码管、定时器)
自购自学单片机有一段日子了,300 多页的 pdf 教程看到一半了,正好看完定时器和独立按键部分,综合前边的数码管,试着编写了 电子时钟 ,将源码发上来,用于备份 注:由于使用了中断以及各种延时程序,此程序并不是真正准确的 电子时钟 ,想要真正准确,需要特别的外部模块,如时钟芯片 DS1302。 附上源码:(初出茅庐,难免有写的不好的地方,仅作备份之用,欢迎指点,喷子退散 ) /********************************************************************************** 电子时钟 1、初始从 00-00-00
[单片机]
51单片机定时器计数器中断总结
一.TMOD:定时器计数度器模式寄存器 M1M0:定时/计数器一共有四种工作方式,就是用M1M0来控制的,2位正好是四种组合。 1. 工作方式1 工作方式1是16位的定时/计数方式,将M1M0设为01即可,其它特性与工作方式0相同。 工作方式2 在介绍这种式方式之前先让我们思考一个问题:上一次课我们提到过任意计数及任意定时的问题,比如我要计1000个数,可是16位的计数器要计到65536才满(若初值为0,记数1后变成0001H,计数65535后变成0FFFFH,再计数1次变成65536,溢出了,各位都为0了,然后申请中断。所以是能计数65536个的,虽然最后一次溢出了。),怎么办呢?我们讨论后得出的办法是用预置数,先在
[单片机]