前面我们介绍了延时程序,但这还不完善,因为,我们只知道DJNZ R6,D2这句话会被执行62500次,但是执行这么多次需要多长时间呢?是否满足我们的要求呢?我们还不知道,所以下面要来解决这个问题。
先提一个问题:我们学校里什么是最重要的。(铃声)校长可以出差,老师可以休息,但学校一日无铃声必定大乱。整个学校就是在铃声的统一指挥下,步调一致,统一协调地工作着。这个铃是按一定的时间安排来响的,我们可以称之为“时序时间的顺序”。一个由人组成的单位尚且要有一定的时序,计算机当然更要有严格的时序。事实上,计算机更象一个大钟,什么时候分针动,什么时候秒针动,什么时候时针动,都有严格的规定,一点也不能乱。计算机要完成的事更复杂,所以它的时序也更复杂。
我们已知,计算机工作时,是一条一条地从ROM中取指令,然后一步一步地执行,我们规定:计算机访问一次存储器的时间,称之为一个机器周期。这是一个时间基准,好象我们人用“秒”作为我们的时间基准一样,为什么不干脆用“秒”,多好,很习惯,学下去我们就会知道用“秒”反而不习惯。
一个机器周期包括12个时钟周期。下面让我们算一下一个机器周期是多长时间吧。设一个单片机工作于12M晶振,它的时钟周期是1/12(微秒)。它的一个机器周期是12*(1/12)也就是1微秒。(请计算一个工作于6M晶振的单片机,它的机器周期是多少)。
MCS-51单片机的所有指令中,有一些完成得比较快,只要一个机器周期就行了,有一些完成得比较慢,得要2个机器周期,还有两条指令要4个机器周期才行。这也不难再解,不是吗?我让你扫地的执行要完成总得比要你完成擦黑板的指令时间要长。为了恒量指令执行时间的长短,又引入一个新的概念:指令周期。所谓指令周期就是指执行一条指令的时间。INTEL对每一条指令都给出了它的指令周期数,这些数据,大部份不需要我们去记忆,但是有一些指令是需要记住的,如DJNZ指令是双周期指令。
下面让我们来计算刚才的延时。首先必须要知道晶振的频率,我们设所用晶振为12M,则一个机器周期就是1微秒。而DJNZ指令是双周期指令,所以执行一次要2个微秒。一共执行62500次,正好125000微秒,也就是125毫秒。
关键字:单片机 时序分析 延时程序
引用地址:
单片机时序分析
推荐阅读最新更新时间:2024-03-16 13:21
单片机的状态迁移与复位操作
本文以经典的80C51单片机为例,利用工作状态及其状态辽移的新概念、新观点和新方法,揭示一些单片机运作的内在规律,对于单片机学习者和应用开发者具有一定的启迪作用和实际意义。 1 单片机的工作状态及其状态迁移 80C51单片机的各种活动,可以描述成多个不同的工作状态或工作模式。这里利用笔者构思的一个单片机工作状态迁移图(如图1所示)来说明。不过,这里重点关注的是复位状态。 经过仔细分析之后,从图1中可以看出: ① 把单片机经历的所有生存状态归纳和描绘成5个状态--1个非工作状态(即无电状态)和4个工作状态。 ② 只有复位状态是一个暂态,其他均为稳态;并且每次单片机进入正常运行状态时,都要经历一次复位状态。 ③ 只有在正
[单片机]
第8课 单片机中断
中断是为单片机实时处理外部和内部随机机事情而设置的一项基本功能,中断功能的存在,极大的提高了单片机处理外部和内部事件的能力,目前几乎所有单片机都会配置的这一项基本功能,而中断功能的强弱也成为衡量一种单片机功能是否强大的重要指标之一。作为单片机的学习者,中断的概念及编程能力必须要灵活的掌握并学会应用。 单片机中断功能的强弱因单片机的种类不同而不同,51单片机的中断功能相对简单,内部有5个中断源,像一些高级的单片如飞思卡尔有上百个中断源。但知识都是相通的,51单片机中断的概念弄懂白了,其它单片机的也就是一个了解和熟悉的过程。 51单片机内部总共有5个中断源,分别外部中断0、定时器中断0、外部中断0、定时器中断1、串行中断。后面的章节我
[单片机]
单片机矩阵键盘扫描驱动程序与电路分析
以4X4键盘为例,首先按照下图制作电路。 然后将HOR1-HOR4连接到单片机的输入引脚上去;LON1-LON4连接到单片机的 开漏 输出引脚上去,注意这4个引脚必须设置为 开漏 模式! 程序上首先将LON1所连接的IO输出低电平其余3个IO输出高电平,同时检测HOR1-HOR4的电平来获取K1-K4的按键状态;然后将LON2所连接的IO输出低电平其余3个IO输出高电平,同时检测HOR1-HOR4的电平来获取K5-K8的按键状态;依次类推。 但是这个电路是有BUG的,比如同时按下K1、K5和K6,当LON1为低电平的时HOR1检测到是低电平没有问题;因为K2没有被按下所以我们希望HOR2是高电平,但是由于K1、K5、K6同时按
[单片机]
无MCU的低成本太阳能电池充电器设计方案
太阳能电池板的泄漏问题传统上可以采用一个与太阳能电池板相串联的肖特基二极管来解决,但肖特基二极管的正向电压降使得它在高电流条件下会消耗大量的功率。因此,需要采用昂贵的散热器和精细的布局来把肖特基二极管保持于低温状态。那么,有没有低成本的解决方案?太阳能电池充电器设计最困扰设计师的“至满充电电池的浮动电压控制”和“在最佳发电点给电池板加载”问题又该如何解决?在下文中,Linear电源专家将为你介绍该公司最新的低成本解决方案。 作为在商业和住宅环境中均具实用性的一种发电方法而言,太阳能电池板已经被人们所广泛接受。然而,尽管在技术方面取得了进步,太阳能电池板的造价仍然很昂贵。这种高昂的成本有很大部分来自于电池板本身,这里,电池
[单片机]
MCS51单片机数制转换程序
;BCD小数转换为二进制小数(2位) ;入口 :R0(低位首址),R7 ;占用资源:ACC,B,R5 ;堆栈需求:2字节 ;出口 :R3,R4 PDTB :CLR A MOV R3,A MOV R4,A PDB1 :MOV A,R3 MOV B,#9AH MUL AB MOV R5,B XCH A,R4 MOV B,#19H MUL AB ADD A,R4 MOV A,R5 ADDC A,B MOV R5,A MOV A,@R0 MOV B,#9
[单片机]
基于单片机的电子钟设计
#include reg51.h #define uchar unsigned char #define uint unsigned int uchar sec = 6, min = 6, hou = 6, a = 0, b = 0, c = 0; uchar num = 0, cmd = 0; uint time = 0; uint flag = 0; sbit P30 = P3^0; sbit P35 = P3^5; sbit P32 = P3^2; sbit P33 = P3^3; uchar code tab ={0xc0, 0xf9, 0xa4, 0xb0, 0x99,
[单片机]
基于单片机红外遥控多功能电子钟设计
目前,单片机进一步向着CMOS化、低功耗、小体积、大容量、高性能、低价格和外围电路内装化等几个方面发展。本文以AT89C51单片机为主控芯片,DS1302为时钟控制芯片、DS18B20为温度采集芯片和LCD液晶显示模块为显示器进行多功能电子钟系统的设计,系统具有时间、星期、温度、闹铃等功能,并可以实现红外遥控时间校准。该电路采用AT89C51单片机作为核心,功耗小,+5 V电压供电,有掉电保护功能,可长时间稳定工作。 1 系统总体设计 系统设计有以下模块:AT89C51单片机控制模块,时钟芯片DS1302模块,温度采集DS18B20模块,液晶显示屏LCD1602模块,红外发射接收模块以及声光报警模块。其系统总体设计框图如图1所示。
[单片机]
RTOS实现双核MCU消息通信
手机、电脑多核的CPU你可能经常看见,但多核的单片机相对来说就不那么常见了。随着需求的增加、技术的进步,单片机已不再局限于单核了,因此,近几年陆续出现了双核的单片机了。 你可能会好奇,双核单片机之间怎么通信?其实,通信的方式和方法有很多种。本文就给大家描述一下:使用FreeRTOS消息缓冲区,实现简单的非对称多处理(AMP)核心到核心通信,结合STM32H7(M4和M7) 双核处理器为例。 分享正文之前推荐一个嵌入式招聘信息的平台: 概述 实现STM32H7双核之间通信是FreeRTOS官方提供的一个方案,是基于FreeRTOS消息缓冲区,该消息缓冲区是无锁循环缓冲区,可以将大小不同的数据包从单个发送方传递到单个接收方。
[单片机]