CPU时序的有关知识
振荡周期:为单片机提供定时信号的振荡源的周期(晶振周期或外加振荡周期)
状态周期:2个振荡周期为1个状态周期,用S表示。振荡周期又称S周期或时钟周期。
机器周期:1个机器周期含6个状态周期,12个振荡周期。
指令周期:完成1条指令所占用的全部时间,它以机器周期为单位。
例如:外接晶振为12MHz时,51单片机相关周期的具体值为:
振荡周期=1/12us;
状态周期=1/6us;
机器周期=1us;
指令周期=1~4us;
初始化程序应完成如下工作:
对TMOD赋值,以确定T0和T1的工作方式。
计算初值,并将其写入TH0、TL0或TH1、TL1。
中断方式时,则对EA赋值,开放定时器中断。
使TR0或TR1置位,启动定时/计数器定时或计数
解释
#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器
typedef unsigned int u16; //对数据类型进行声明定义
typedef unsigned char u8;
sbit led=P2^0; //定义P20口是led
void Timer0Init()
{
TMOD|=0X01;//选择为定时器0模式,工作方式1,仅用TR0打开启动。
TH0=0XFC; //给定时器赋初值,定时1ms
TL0=0X18;
ET0=1;//打开定时器0中断允许
EA=1;//打开总中断
TR0=1;//打开定时器
}
void main()
{
Timer0Init(); //定时器0初始化
while(1);
}
void Timer0() interrupt 1
{
static u16 i;
TH0=0XFC; //给定时器赋初值,定时1ms
TL0=0X18;
i++;
if(i==1000)
{
i=0;
led=~led;
}
}
关键字:51单片机 计时器 计数器
引用地址:
51单片机之计时器与计数器
推荐阅读最新更新时间:2024-11-11 06:44
使用51单片机实现点阵汉字平滑滚动显示
#说明:采用的芯片是89C51,LED点阵屏的规格是16*16,同时使用了两个74HC595芯片,字模生成软件在文末有网盘链接。 1 连接原理图 整体的电路连接如上图所示,单片机只需要使用三个IO接口,就可以实现对点阵屏的控制。当然对于不同的单片机而言连线是不同的,但是使用74HC595扩展的原理是相同的,在这里不再对于其IO扩展原理进行探究。 2 实现的功能 在51单片机以及C语言的环境下,实现LED点阵屏幕上汉字的平滑滚动,就像是公交车上显示“前方到站第二医院,下车乘客请提前做好准备”一样。我们最后显示的是“计算机测控技术”几个字,当然显示的汉字内容是自定义的。同时,设置一个按钮能够让平滑滚动的汉字可以随时停下来。
[单片机]
51单片机系列知识8--定时器、计数器(1)
几个相关的概念: 1、时钟与机器周期 时钟电路是计算机的心脏,它控制着计算机的工作节奏。时钟信号的频率称为振荡频率或时钟频率。振荡频率的倒数为振荡周期。 规定了每个机器周期包括6个状态周期(用s)表示,每个状态周期划分为两个节拍,分别对应着两个节拍时钟的有效期间。因此,一个机器周期有12个振荡周期,分别为S1P1、S1P2、S2P1…….S6P2 i. 与定时器、计数器有关的寄存器 方式寄存器TMOD 定时器方式和外部事件计数方式的差别是计数脉冲源和用途的不同,C/T的实质是选择计数脉冲源。 对外部输入脉冲计数的目的通常是为了测试脉冲的周期、频率或对输入的脉冲数进行累加。 △ 计算脉冲的周期、频率是
[单片机]
MCS-51单片机实用子程序库--浮点数除法
标号: FDIV 功能:浮点数除法 入口条件:被除数在 中,除数在 中。 出口信息:OV=0时,商仍在 中,OV=1时,溢出。 影响资源:PSW、A、B、R2~R7、位1EH、1FH 堆栈需求: 5字节 FDIV: INC R0 MOV A,@R0 INC R0 ORL A,@R0 DEC R0 DEC R0 JNZ DIV1 MOV @R0,#41H;被除数为零,不必运算 CLR OV RET DIV1: INC R1 MOV A,@R1 INC R1 ORL A,@R1 DEC R1 DEC R1 JNZ DIV2 SETB OV ;除数为零,溢出 RET DIV2: LCALL MVR0 ;将 传送到第一工作区中 MOV A,
[单片机]
硬件仿真器会不会被淘汰
谈起单片机的硬件仿真器,给我的第一印象便是非常的昂贵。像我这样想在不到十年就想学习用会市面上大部分流行的单片机的单片机爱好者来说,根本就不可能去花钱买那么昂贵的单片机硬件仿真器,因为单片机的种类实在是太多了。 现在51单片机的C语言编译器非常的好,加上我用的51单片机大部分都是带ISP功能的,还有,就是有几次用伟福仿真器,仿真时的效果让人很失望,而今我手上的伟福仿真器这几年基本上是处于下岗状态. 仿真,对于初学者来说,还是有着极大的诱惑力的,就像我们刚开始用protel99se画电路图时,总是担心什么地方没有画好,想仿真一下,但实际上,真正用着protel99se画图的工程师是很少用它来仿真的.学习单片机也是这差不多的情况. 还
[单片机]
在MCS-51单片机中对特殊功能寄存器的C51定义
在开始讲对C51单片机中特殊寄存器(SPR)的定义前,先简单介绍下我们在进行51单片机开发时经常看到的两个关键字 sbit”和 sfr“: sfr用于将一个单片机的特殊功能寄存器(specialfunctionregister)赋值给一个变量,这样在后面的程序中就可以中这个变量指引(referto)该寄存器 sbit与sfr用法类似,只是sbit是位操作,用于将某个sfr中具体位赋值给一个变量,这样后面程序就可用通过该变量为该位清0或置1。 接着我们以STC系列的51单片机为例简单的了解下单片机的特殊功能寄存器布局,如下: MCS-51单片机中,除了程序计数器PC和4组工作寄存器组外,其它所有的寄存器均为特殊功能寄
[单片机]
8051单片机时钟电路的构成
CPU 的功能,总的来说,就是以不同的方式,执行各种指令。不同的指令其功能各异。有的指令涉及到 CPU 各寄存器之间的关系;有的指令涉及到单片机核心电路内部各功能部件的关系;有的则与外部器件(如外部存储器)有关系。 CPU 是通过复杂的时序电路完成不同的指令功能的。 事实上,控制器按照指令的功能发出一系列在时间上有一定次序的电脉冲信号,控制和启动一部分逻辑电路,完成某种操作。在什么时刻发出什么控制信号,去启动何种部件动作,这就是 CPU 的时序。 CPU 芯片设计一旦完成, 时序 就固定了,因而时序问题是 CPU 的核心问题之一。时钟可看成是主频,时序可看成是完成一个操作各部分电路产生的脉冲对照图。 一、振荡器和时钟电路
[单片机]
MCS-51单片机定时器/计数器基础详述
MCS-51子系列单片机有2个定时器/计数器,即定时器/计数器0和1,52子系列单片机(8032/8052)除了有上述2个定时器/计数器外,还有一个定时器/计数器2,后者的功能比前两者强。 1 定时器/计数器0和1 在专用寄存器TMOD(定时器方式)中,有一个控制位(C/T),分别用于控制定时器/计数器0和1是工作在定时器方式还是计数器方式。 1. 输入信号基本要求:24个振荡周期,即两个机器周期; 2. 作为定时器时,计数速率是 振荡频率/12; 3. 由定时器/计数器模式控制寄存器设置工作方式。 2 定时器/计数器2(自己阅读) 定时器/计数器2是一个具有16位自动重装载或捕获能力的定时器/计数器。专用寄存器
[单片机]
51单片机+hx711电子秤
单片机源程序如下: #include reg52.h #include intrins.h #include string.h #include main.h #include LCD1602.h #include HX711.h #include eeprom52.h #define uchar unsigned char #define uint unsigned int unsigned long HX711_Buffer = 0; unsigned long Weight_Maopi = 0; unsigned long Weight_Maopi_0 = 0; long Weight_Shiwu =
[单片机]