51单片机笔记:定时器/计数器

单片机实验汇编案例---计数器实验 一.实验要求 8031内部定时计数器,按计数器模式和方式1工作,对P3.4(T0)引脚进行计数。使用8031的T1作定时器,50ms中断一次,看T0内每0.50ms来了多少脉冲,将其数值按二进制数在74LS273驱动LED灯上显示出来,5秒后再次测试。 二.实验目的 1.学习8031内部定时/计数器使用方法。 2.进一步掌握中断处理编程方法。 三.实验电路及连线 P3.4接一计数脉冲( 25模块中的149.06K频率)。 PO0~PO7接 L1~L8。 CS273接8300H。 四.实验说明 1.本实验中 阅读详情

单片机笔记

定时器/计数器

定时器/计数器的结构

AT89S51内部两个16位定时器/计数器:T0(P3.4),T1(P3.5),定时器/计数器T0由特殊寄存器TH0,TL0构成,T1由特殊功能寄存器TH1,TL1构成

T0,T1都有定时器和计数器两种工作模式,两种模式实质都是对脉冲信号进行计数,只不过技术信号来源不同。

  • 计数器模式 是对T0(P3.4)和T1(P3.5)两个引脚上的外部脉冲进行计数

  • 定时器模式是对系统时钟信号(fosc)经12分频后的内部脉冲信号(机器周期Tcy)计数.由于系统时钟频率fosc是定值,可根据数值计算出定时时间T(定时时间T = n * Tcy).

振荡周期Tosc = 1/fosc, 机器周期Tcy = 12Tosc = 12/fosc)

例如:fosc = 12Hz, Tcy = 1us

T0,T1属于加1计数器,即每记一个脉冲,计数器加1.(51单片机)

T0,T1具有4种工作方式(方式0,1,2,3)

特殊功能寄存器TMOD用于选择定时器/计数器T0,T1的工作模式和工作方式.

特殊功能寄存器TCON用于控制T0,T1的启动和停止计数,同时包含了T0,T1状态.

计数器起始计数从初值开始,单片机复位时计数器初值为0,也可给计数器装入一个新的初值(0 ~ 2^16 - 1).

若计数器溢出会产生中断,称溢出中断,最大计数值2^16 = 65536, 此时刻发生溢出中断, 最大初值2^16 - 1 = 65535

工作方式控制寄存器TMOD

寄存器地址89H, 不可按位操作, 高4位控制T1, 低4位控制T0.

D7D6D5D4D3D2D1D0
GATEC/T’M1M0GATEC/T’M1M0

D7-D4 : T1方式字段, D3-D0 : T0方式字段

M1, M0工作方式选择位
M1M0工作方式
00方式0, 13位定时器/计数器
01方式1, 16位定时器/计数器
10方式2, 8位的常数自动重新装载的定时器/计数器
11方式3, 仅适用于T0, 此时T0分成2个8位计数器, T1停止计数

方式0为兼容早期8048的13位定时器/计数器

GATE - 门控位
  • GATE = 0, 定时器是否计数, 由启动控制位TRx(x = 0, 1)来控制. (TRx = 1 时启动)
  • GATE = 1, 定时器是否计数, 由外部中断引脚INTx’上的电平与运行控制位TRx共同控制.(1 == INTx’ & 1 == TRx 为真时启动)
C/T’ - 计数器模式和定时器模式选择位

**C : Counter, T : Timer **

  • C/T’ = 0, 定时器模式, 对系统时钟12分频后的脉冲(fosc/12)进行计数.
  • C/T’ = 1, 计数器模式, 对计数器外部输入引脚T0(P3.4)或T1(P3.5)的外部脉冲(负跳变, 即对下降沿计数)计数.
定时器/计数器控制寄存器TCON

TCON字节地址88H, 位地址为88H~8FH.

D7D6D5D4D3D2D1D0
TF1TR1TF0TR0IE1IT1IE0IT0
TF1, TF0 - 计数溢出标志位

当计数器计数溢出时, 该位置1. 使用查询方式时, 此位可提供CPU查询, 但应注意查询后, 用软件及时该位清0. 使用中断方式时, 作为中断请求标志位, 进入终端服务程序后由硬件自动清0.

TR1, TR0 - 计数运行控制位
  • TR1/TR0位 = 1, 启动计数器计数的必要条件.
  • TR1/TR0位 = 0, 停止计数器计数.

该位可由软件置1和清0

定时器/计数器的4种工作方式

方式1(M1 = 0, M0 = 1)

定时器计数器方式1的逻辑结构框图

方式1和方式0差别仅存在于计数器的位数不同, 方式1为16位计数器, 由THx高8位和TLx低8位构成(x = 0,1), 方式0为13位计数器, 有关控制状态位含义(GATE, C/T’, TFx, TRx)与方式0相同.

方式0(M1 = 0, M0 = 0)

定时器计数器方式0的逻辑结构框图

该方式为13位定时/计数器的计数最大值位2^13 = 8196

方式2

方式0和方式1最大特点是计数溢出后, 计数器为全0. 因此在循环定时或循环计数应用时就存在用指令反复装入计数初值的问题, 这会影响定时精度(指令本身执行也需要时间), 方式2就是为解决此问题而设置的.

当M1, M0 = 1, 0时, 工作方式2. 8位自动重装载方式

方式2的逻辑结构框图

低8位用来计数/定时, 高8位用来保存初值, 硬件自动完成装入初值的操作

最大计数/定时范围2^8 = 256

方式3

方式3是为增加一个附加的8位定时器/计数器而设置的, 从而使AT89S51具有3个定时器/计数器. 方式3只适用于T0, T1不能工作在方式3
T0在方式3下, 分为了两个8位定时器/计数器

方式3的逻辑结构框图

对外部输入的计数信号的要求

计数器模式时, 计数脉冲来自外部输入引脚T0或T1. 当输入信号产生负跳变时, 计数值增1.

由于确认一次负跳变要花2个机器周期, 即24个振荡周期, 因此外部输入的计数脉冲的最高频率为系统振荡器频率的1/24

对外输入信号占空比没有限制, 但为确保某一给定电平在变化前能被采样1次, 该电平至少保持1个机器周期.

方式1应用 : P1口控制8只LED每0.5s闪亮一次
分析

设置晶振频率12MHz, 则机器周期为1us, 一次溢出中断时间的总耗时计算65536 * 1us = 65…ms

题目要求0.5s即500ms, 500ms > 65ms,故需软件计数, 500ms约溢出中断次数为100次

可用软件编写计时器对中断次数进行计数

设置TMOD寄存器
  1. TMOD寄存器的M1 = 0, M0 = 1则T0工作在方式1
  2. 设置C/T’ = 0, 为定时器模式
  3. GATE为0, 对T0的运行控制仅由TR0来控制
  4. 定时器T1不使用, 各相关位均设为0
D7D6D5D4D3D2D1D0
GATEC/T’M1M0GATEC/T’M1M0
00000001

TMOD初始化值则为0x01

计算定时器T0的计数初值

设定时时间5ms(即5,000us), 设T0计数初值为X, 假设晶振频率为11.0592MHz, 则定时时间为:

定时时间 = (2^16 - X) * Tcy = (2^16 - X) * 12/晶振频率

则 5000 = (2^16 - X) * 12 / 11.0592, 得X = 60,928

转换成16进制为0xee00, 其中0xee装入TH0, 0x00装入TL0.

X --> 65536(产生溢出)

个数n = 65536 - X

定时时间T = n * Tcy == 5ms == 5,000us

机器周期Tcy =  12 / 11.0592 us
设置IE寄存器

本例采用定时器T0中断, 因此需将IE寄存器中的EA,ET0位置1

启动T0

将定时器控制寄存器TCON中的TR0置1, 则启动定时器T0

方式1定时中断控制LED闪亮的仿真图

源码
/* 
 * 功能实现: 使用方式1定时中断控制LED闪亮
 * 编写环境: Keil5
 * 硬件仿真: Proteus 8 Professional
 * 日期: 2022-11-05
 */

#include <reg51.h>

char i = 100; // 用于软件计数

int main(void)
{
    TMOD = 0x01; // 定时器T0为方式1
    TH0 = 0xee; // 设置定时器初值
    TL0 = 0x00;
    P1 = 0x00; // P1口8个LED点亮
    EA = 1; // 总中断开
    ET0 = 1; // T0中断开
    TR0 = 1; // 启动T0

    while(1) // 循环等待
    {
        ;
    }

    return 0;
}

void timer0() interrupt 1 // T0中断程序
{
    TH0 = 0xee; //重新赋初值
    TL0 = 0x00;

    // 软件计数, 100次溢出中断后, LED状态进行转换	
    i--; // 循环次数减1
    if (i <= 0)
    {
        P1 = ~P1; // P1口按位取反, LED状态转换
	i = 100; // 重置循环次数
    }

    return;
}
计数器应用

如图,T1采用计数模式,方式1中断,计数输入引脚T1(P3.5)上外接按钮开关,作为计数信号输入。按4次按钮开关后,P1口的8只LED闪烁不停。

计数器应用硬件仿真图

设置TMOD寄存器
  1. T1工作在方式1,应使TMOD的M1,M0 = 0,1
  2. 设置C/T’=1,为计数器模式
  3. 对T0运行控制仅由TR0来控制启动,应使GATE0=0.
  4. 定时器T0不使用,各相关位均设0.

所以, TMOD寄存器应初始化为0x50.

计算定时器T1的计数初值

由于每按1次按钮开关,计数1次,按4次后,P1口的8只LED闪烁不停. 因此计数器初值为65536 - 4 = 65532, 所以, TH1 = (65536 - 4) / 256, TL1 = (65536 - 4) % 256.

设置IE寄存器

由于采用T1中断,因此需将IE寄存器的EA, ET1位置1.

启动和停止定时器T1

将寄存器TCON中TR1 = 1, 则启动T1计数.

源码
#include <reg51.h>

void Delay(unsigned int i);

int main(void)
{
    TMOD = 0x50;	// 设置定时器T1位方式1计数
    TH1 = (65536 - 4) / 256;	// 向TH1写入初值的高8位
    TL1 = (65536 - 4) % 256;	// 向TL1写入初值的低8位
    EA = 1;	// 总中断允许
    ET1 = 1;	// 定时器T1中断允许
    TR1 = 1;	// 启动定时器T1

    while (1)
    {
        ;
    }

    return 0;
}

void Delay(unsigned int i)
{
    unsigned int j;
    for ( ; i > 0; i--)
    {
        for (j = 0; j < 125; j++)
	{
	    ;
	}
    }

    return;
}

void T1_int(void) interrupt 3 // T0中断时interrupt为0, T1中断时interrupt为3
{
    while (1)	// 一般中断函数不会设置为死循环
    {
    	// 单次的计数中断所以不需要重新赋初值
        P1 = 0xff;	// 8位LED全灭
	Delay(500);	// 延时500ms
	P1 = 0;		// 8位LED全亮
	Delay(500);	// 延时500ms
    }

    return;
}

习题

习题7-1

采用T0方式1的定时中断方式, 控制AT89C51的P1.1引脚输出100Hz的方波.

分析

f = 100Hz, T = 10ms, 定时时间为10/2 = 5ms(单高电平或低电平的时间) < 65ms, 所以定时时间T = 5ms

假设时钟频率fosc = 12MHz, 工作在方式1时最大时间为65536ms

TMOD = 0x01

5ms = 5000us = (2^16 - X) * 12 / 12, 解得X = 60,536

转换为16进制, 则初值X = 0xEC78, TH0 = 0xEC, TL0 = 0x78

因操作为P1.1需提前定义,如下

sbit Pulse =  P1^1;

// LED状态转换
Pulse = !Pulse;
源码
/* 
 * 功能实现: 采用T0方式1的定时中断方式, 控制AT89C51的P1.1引脚输出100Hz的方波.
 * 编写环境: Neovim + Keil5
 * 硬件仿真: Proteus 8 Professional
 * 日期: 2022-11-05
 */

#include <reg51.h>

sbit Pulse = P1^1; // 定义P1.1口为Pulse

int main(void)
{
    TMOD = 0x01; // 定时器T0为方式1

    TH0 = 0xEC; // 设置定时器初值
    TL0 = 0x78;
    /*
     * 计算过程: 
     * f = 100Hz, T = 10ms, 定时时间为10/2 = 5ms(单高电平或低电平的时间) < 65ms, 所以定时时间T = 5ms
     * 假设时钟频率fosc = 12MHz, 工作在方式1时最大时间为65536ms
     * 5ms = 5000us = (2^16 - X) * 12 / 12, 解得X = 60,536
     * 转换为16进制, 则初值X = 0xEC78, TH0 = 0xEC, TL0 = 0x78
     * TH0 = (65536-5000)/256, TL0 = (65536-5000)%256
     */

    Pluse = 0; // P1.1输出低电平
    EA = 1; // 总中断开
    ET0 = 1; // T0中断开
    TR0 = 1; // 启动T0

    while(1) // 循环等待
    {
        ;
    }

    return 0;
}

void timer0() interrupt 1 // T0中断程序
{
    TH0 = 0xEC; //重新赋初值, 循环计时的时候需要重新赋初值
    TL0 = 0x78;

    P1 = ~P1; // P1口按位取反, LED状态转换
    Pluse = !Pluse; // P1.1口按位取反, 高低电平转换

    return;
}
习题7-2

采用T0方式1的定时中断方式, 控制AT89C51的P1.1引脚输出100Hz, 占空比为20%的脉冲.

分析

高电平时间1/5 * T, T = 1/100 = 10ms; 所以高电平持续时间为2ms, 低电平持续时间为8ms.

定时器定时2ms, 设计软件计数器在中断一次后计4次中断(即8ms
)后置低电平

TMOD = 0x01;
/*
 * 2ms = 1us * 2000, 故n = 2000
 * TH0 = (2^16 - n) / 256
 */
TH0 = (65536 - 2000) / 256;
TL0 = (65536 - 2000) % 256;
源码
/* 
 * 功能实现: 采用T0方式1的定时中断方式, 控制AT89C51的P1.1引脚输出100Hz, 占空比为20%的脉冲
 * 编写环境: Neovim + Keil5
 * 日期: 2022-11-15
 */

#include <reg51.h>

sbit Pulse = P1^1; // 定义P1.1口为Pulse

unsigned char count = 0;

int main(void)
{
    TMOD = 0x01; // 定时器T0为方式1

    TH0 = (65536 - 2000) / 256; // 设置定时器初值
    TL0 = (65536 - 2000) % 256;

    Pluse = 0; // P1.1输出低电平
    EA = 1; // 总中断开
    ET0 = 1; // T0中断开
    TR0 = 1; // 启动T0

    while(1) // 循环等待
    {
        ;
    }

    return 0;
}

void timer0() interrupt 1 // T0中断程序
{

    TH0 = (65536 - 2000) / 256; //重新赋初值
    TL0 = (65536 - 2000) % 256;

    count++;

    if (1 == count) // 2ms过后, 高电平持续时间结束, 需将P1.1变为低电平
    {
        Pluse = 0;
    }
    else if (5 == count) // (5-1) * 2ms过后, 低电平持续时间结束, 需将P1.1变为高电平
    {
        Pluse = 1;
	count = 0; // 一个脉冲周期结束, 将count清零 
    }

    return;
}
课后题7-5

Proteus虚拟仿真. 使用T0, 采用方式2定时中断, 在P1.0引脚上输出周期为400us, 占空比为25%的矩形脉冲, 要求在P1.0引脚上接有虚拟示波器, 观察P1.0引脚输出的矩形脉冲波形.

分析

TMOD = 0000 0010

  • D0 = 0
  • D1 = 1 D1D0 = 10 为方式2
  • D3(C/T’) = 1, Counter计数器模式, 对计数器外部输入引荐T0(P3.4)或T1(P3.5)的外部脉冲(负跳变)计数
  • D3(GATE) = 0, 定时器是否计数, 由启动控制位TR0/TR1来控制(置1时启动)

高电平持续时间为1/4 * 400us = 100us, 低电平持续时间为300us

中断定时为100us, 设计软件计数器, 中断次数为1时跳变为低电平, 中断次数为(4 - 1)时, 跳变为高电平, 循环往复

12MHz时:

n = 100us / 1us = 100

TL0 = 2^8 - 100, TL1 = 2^8 - 100

方式2为8位, 且TH0用于储存初值, 故TL0和TH0二者数值相同, 不存在将十六进制数分位的问题

课后题7-5硬件仿真原理图
课后题7-5波形图

源码
/* 
 * 功能实现:  使用T0, 采用方式2定时中断, 在P1.0引脚上输出周期为400us, 占空比为25%的矩形脉冲 
 * 编写环境: Neovim + Keil5
 * 硬件仿真: Proteus 8 Professional
 * 日期: 2022-11-15
 */

#include <reg51.h>

sbit Pluse = P1^0; // 定义P1.0口为Pulse

unsigned char count = 0;

int main(void)
{
    TMOD = 0x01; // 定时器T0为方式1

    TH0 = 256 - 100; // 设置定时器初值
    TL0 = 256 - 100; 

    Pluse = 0; // P1.1输出低电平
    EA = 1; // 总中断开
    ET0 = 1; // T0中断开
    TR0 = 1; // 启动T0

    while(1) // 循环等待
    {
        ;
    }

    return 0;
}

void timer0() interrupt 1 // T0中断程序
{

    TH0 = 256 - 100; // 重新赋值
    TL0 = 256 - 100; 

    count++;

    if (1 == count) // 100us过后, 高电平持续时间结束, 需将P1.1变为低电平
    {
        Pluse = 0;
    }
    else if (4 == count) // (4-1) * 100us过后, 低电平持续时间结束, 需将P1.1变为高电平
    {
        Pluse = 1;
		count = 0; // 一个脉冲周期结束, 将count清零 
    }

    return;
}
一个按键控制一个发光二极管功能。具体功能描述如下:按一下按键灯亮,再按一下灯灭,再按一下灯亮 ①但是又由于开关特性,按下去和回弹有抖动,有时会使得IO口识别低电平混乱,因此按键需要去抖,按键按下去后以及回弹时通过延时函数,延时相对应的抖动时间。按键控制一个发光二极管的原理:但识别到按键按下去后,并且识别到松开,使led灯的IO口对输出电平进行取反。一个按键控制一个发光二极管功能。具体功能描述如下:按一下按键灯亮,再按一下灯灭,再按一下灯亮。首先是按键电路原理:按键按下去电路接通,P3的IO口识别到接地的低电平。因此按键的程序编写,就是识别到低电平后,输出相应功能。②开关还要进行松开检测。 阅读详情

相关推荐

【51单片机实验】4-单片机定时/计数器的应用(附Proteus电路)

一、安装包下载

活着活着就有意义了 3万+

51单片机之按键控制LED

独立的按键使用较为简单,一般需特别注意按键的抖动;因为按键的开关都有抖动,而如果在抖动时间内检测按键状态就会不准确,所以一般延时10ms~20ms检测,具体时间具体判断。 程序现象:按键控制LED亮灭

Steele_Jun的博客 8569

51单片机-定时器和计数器

当GATE=0时,经反相后或门输出为1,此时仅由TR0控制与门的开启,与门输出1时,控制开关接通,计数开始;它随着计数器的输入脉冲进行自行加1,也就是没来一个脉冲,计数器就自动加1,当加到计数器为全1时,再输入一个脉冲就使计数器回零,且计数器的溢出使相应的中断标志位置1,向CPU发出中断请求(定时/计数器中断允许时)。GATE=1时,要用软件使TR0或TR1为1,同时外部中断引脚INT0/1也为高电平时,才能启动定时/计数器工作。方式0位12位计数,由TL0的低5位(高3位未用)和TH0的8位组成。

三日沐水 1583

第十课:中断系统

一.51单片机各引脚功能回顾 二.中断的基本概念 三、51单片机的中断系统 51单片机各引脚功能回顾 我们QX-MCS51开发板上面使用的是DIP封装(双列直插式)有40只引脚! 40只引脚按其功能来分,可分为3类: ◆电源引脚接入单片机工作电源 1.Vcc(40脚):接+5V 电源; 2.Vss(20脚):接地。 ◆时钟引脚 XTAL1和XTAL2分别接的我们开发板的外部晶振,...

心情第一 1236

MCS-51单片机的定时器/计数器

详细介绍了,MCS-51单片机的定时器/计数器

2301_77056280的博客 1826

深入解析luckyExcel处理xlsx与xls文件的实战技巧

本文深入解析了使用luckyExcel库在前端处理.xlsx与.xls文件的实战技巧。针对.xlsx文件,可直接调用API转换;对于老旧的.xls格式,则需结合SheetJS进行预处理。文章详细介绍了核心API的使用、两种格式的处理流程、数据提取方法以及性能优化建议,为开发在线Excel编辑应用提供了完整解决方案。

cherry的博客 818

51单片机定时器/计数器

①51单片机定时/计数器理论、实操详解。②51单片机定时/计数器的相关寄存器学习详解。③51单片机定时/计数器工作模式原理详解。④51单片机定时/计数器实战篇——电子时钟。

qq_65980796的博客 1万+

LangChain实战:用FAISS搭建本地文档问答系统(含Word文件处理避坑指南)

本文详细介绍了如何利用LangChain框架和FAISS向量数据库构建本地化智能文档问答系统,特别针对Word文档处理中的技术难点提供实用解决方案。通过模块化设计、本地化支持和多格式兼容,实现高效文档处理与精准问答,满足企业对数据隐私和安全的需求。

o4p5q6r7s的博客 409

51单片机:定时器/计数器TMOD设定

定时器/计数器TMOD设定 TMOD格式 上图为TMOD格式,8位分为两组,高四位控制T1,低四位控制T0 TMOD各位的说明 GATE 0:仅由运行控制位TRx(x = 0,1)来控制定时器/计数器运行。 1:用外中断引脚( INT0或 INT1)上的电平与运行控制位TRx共同来控制定时器/计数器运行。 C/T* 0:为定时器工作模式,对单片机的晶体振荡器12分频后的脉冲进行...

今天好像忘写了 6万+

将ue4程序嵌入qt界面显示

需求:将ue4程序嵌入qt界面显示 思路:通过使用 windowsAPI 对ue4窗口进行设置跟随qt界面以及活动窗口时的位置层序设置

weixin_44342705的博客 5845

别再乱调了!Zygo MetroPro软件滤波功能保姆级指南,从均值到鲁棒高斯样条一次讲清

本文深入解析Zygo MetroPro软件的滤波功能,从均值滤波到鲁棒高斯样条等九种算法,帮助用户根据测量对象特性选择最佳滤波组合。通过真实工业案例和参数配置指南,提升光学测量数据的准确性和效率,特别适用于硅晶圆、光学镜片等精密测量场景。

weixin_30888413的博客 158

51单片机——定时器/计数器

本文主要对定时功能、计数功能、定时器/计时器结构和定时器/计数器的四种工作方式进行介绍

qq_37324376的博客 2万+

自动驾驶开发者必看:如何用Impromptu VLA数据集提升模型在乡村道路的表现(附实战代码)

本文为自动驾驶开发者提供了利用Impromptu VLA开源数据集提升模型在乡村道路等极端场景表现的实战指南。该数据集专门针对边界模糊道路、非常规障碍物等非结构化环境,通过精选的8万多个极端场景片段,帮助模型弥补数据分布偏差。文章详细介绍了环境搭建、数据准备、模型微调及性能评估的全流程,并附有实战代码,旨在系统性提升自动驾驶系统在长尾场景下的鲁棒性。

t8u9v0w1x的博客 243

单片机 定时器/计数器

单片机 定时器/计数器 一、简述     MCS—51系列单片机内部有两个16位定时器/计数器,即定时器T0和定时器T1。它们都具有定时和计数功能,可用于定时或延时控制,对外部事件进行检测、计数等。     定时器/计数器是一个加“1”计数器,来一脉冲即做加1计数,直至寄存器各位全为1,再来一脉冲,计数器回0且使TF0(定时器T0)TF1(定时器T1)置1表示定时时间到,计数值乘以单片机的机...

Genven_Liang的博客 2万+

【WRF-FDDA】观测 Obs nudging 的配置与使用说明(中)

WRF-FDDA

WW、forever的博客 281

(王道考研计算机网络)第三章数据链路层-第一节:数据链路层功能概述

文章目录一:本章概述二:数据链路层基本概念三:数据链路层功能概述(1)为网络层提供服务(2)链路管理(3)组帧(4)流量控制(5)差错控制 本章是计算机网络中入门较难的一章,如果没有接触过相关内容,可能会止步于一些晦涩难懂的术语。本节内容希望大家可以用心看一看,对于大家入门是很有帮助的 一:本章概述 数据链路层位于物理层之上,主要作用就是提高物理层传输比特流的能力,使物理层可能出现差错的连接转变为逻辑上无差错的数据链路,同时向网络层提供服务。本章学习的主要就是数据链路层的功能和应用 数据链路层功能 封

快乐江湖的博客 2470

51单片机定时器

1.原理: CPU 时序的有关知识: 1.振荡周期:为单片机提供定时信号的振荡源的周期(晶振周期或外加振荡 周期)。 2.状态周期:2 个振荡周期为 1 个状态周期,用 S 表示。振荡周期又称 S 周 期或时钟周期。 3.机器周期:1 个机器周期含 6 个状态周期,12 个振荡周期。 4.指令周期:完成 1 条指令所占用的全部时间,它以机器周期为单位 2.电路图(普中A2): 3.程序说明: 实现的功能是:通过定时器 0 中断控制 D1 指示灯间隔 1 秒闪烁 4..

weixin_46364710的博客 1万+

黑猫带你学eMMC协议第9篇:eMMC初始化过程(initial)

本文依据eMMC JEDEC5.1及个人工作经验整理而成,如有错误请留言。 文章为个人辛苦整理,付费内容,禁止私自转载。 文章所在专栏:《黑猫带你学:eMMC协议详解》 1 什么是emmc的初始化 对于小白来说,可能不太明白什么是emmc初始化。举个栗子:当你拿到一个电脑,接上电源,是不是就立马可以用了呢?并不是吧,你还需要去开机,等待电脑启动,配置完各种参数,等出现了电脑桌面,你才能用。那么同样,对于emmc芯片来说,也不是提供电源就能用了,需要输入各种命令后,让其进入到tran state后,才能正.

黑猫奥利奥的博客 6742

【51单片机学习笔记】定时器/计数器、中断

如果要对来自单片机外部的脉冲信号进行计数,或者利用单片机进行定时控制,就需要用到单片机的定时器/计数器。

u014084517的博客 6111

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

51单片机的定时器/计数器及编程

简单阐述了怎么使用51的定时器/计数器。 如果不在意细节,可以直接看“五、应用实例”。

NPNtoPNP的博客 1万+

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

51单片机中定时器/计数器详解

51单片机中定时器/计数器详解

shaun2001的博客 6406

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

51单片机-定时器/计数器和中断系统 学习笔记(详解)

51单片机 定时器和中断部分的详解

m0_59778421的博客 3140

51单片机的定时器/计数器

7.2.2 定时器/计数器的结构 51单片机的定时器/计数器结构如图7-7所示。 T0由特殊功能寄存器TH0、TL0构成。 T1由特殊功能寄存器TH1、TL1构成。 T0 和T1都具有定时器和计数器两种工作模式,4种工作方式(方式0~3)。属于增计数器。 特殊功能寄存器TMOD用于选择T0、T1的工作模式和工作方式。特殊功能寄存器TCON用于控制T0、T1的启动和停止计数,同时包含了T0、T1的状态。T0、 T1不论是工作在定时器模式还是计数器模式,实质是对脉冲信号进行计数,只不过计数信号的来源不同。 计

qq_28972011的博客 1万+

51单片机———定时器/计数器的学习

我们知道,LCD602、独立按键、矩阵按键等等,这些都是实实在在存在的,均属于单片机外设,而,51单片机的定时器,它简单来说,就是单片机内部的某个模块叫做定时器。这里也相信很多人也听说过还有。

m0_74225397的博客 3373

51单片机的定时器与计数器

难的东西学不会是因为简单的知识没学好 基础不牢,地动山摇 1.0 1.0.1定时器 (1)51单片机的定时器是一个内部外设。 (2)定时器相当于CPU的一个“闹钟”。 (3)定时器是用计数器来实现的。 1.0.2计数器 (1)计数器可以计数外部脉冲的个数. (2)脉冲:(个人理解)单片机中一个低电平跳变成高电平在回到低电平的这么一个过程就称为一个脉冲。 1.0.3定时器是如何工作的 (1)第一步:...

Naunyang的博客 5542
上一篇: 51单片机笔记:中断系统
下一篇: 问题处理: Keil5没有AT89C51芯片
普通网友
博客等级 码龄6年 121粉丝 72原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值