一、 软件模拟运行速度与硬件对应
我们首先要找到单片机的晶振为多大(一般在配套的使用说明书中有标识或者直接在实验板上面看,实验板上面标识的不是很明显),如图所示标识。
Keil编译器在编译程序时,计算代码执行时间跟此数值有关,我们要模拟时间就要使软件模拟运行速度与实际硬件一一对应。STC89C52RC的晶振频率由图1.知其频率为11.0592MHz。故我们需要在keil的project中的Option for target 选项中修改晶振频率值:
点击OK按钮,设置完毕。
二、 计算语句执行的时间
1) 点击
按钮后可以看到两个现象
l 在main函数内的第一条带操作性语句前有一个箭头
这表示程序要运行的下一条语句。
l 程序运行箭头所指向语句之前语句的时间为422.09us
2) 点击 使运行箭头所指向的一条语句
点击 按钮过后,黄色箭头的指向会朝向下一条,这个时候程序运行的时间就会发生变化:
相应的箭头指向的语句也会发生变化
且
其中21-22行为注释语句。
所以我们就可以计算出执行led1 = 0这条语句的时间为:(423.18-422.09)us。
三、 总结
知道每条(段)程序运行的时间过后我们就可以设置一段我们想要的时间段去控制软件间歇的运行某些程序段。如使流水灯闪烁。
关键字:Keil语句 延迟时间 精确计算
引用地址:
51 Keil语句延迟时间的精确计算
推荐阅读最新更新时间:2024-03-16 14:54
在Silicon IDE中集成Keil C51工具
注:编译或仿真工程必须安装Silicon IDE以及Keil软件,在本示例中,软件是安装在默认路径下 ·Silicon IDE的安装 请到 Silabs 官方网站: http://www.silabs.com/products/mcu/Pages/SoftwareDownloads.aspx?cm_sp= WebParts -_- MCUSupport -_- SWDownloads 下载安装。 ·Keil的安装 请到 Keil 官方网站: https://www.keil.com/c51/demo/eval/c51.htm 下载安装。 1、如下图所示,点击 Project - Tool Chain Integrati
[单片机]
四位数码管动态显示2020(51单片机)
电路原理图 元件清单 程序(C语言) #include reg51.h unsigned char smg ={0x5b,0x3f,0x5b,0x3f};//2020字形码(共阳极) void delay(unsigned int time); void main() { unsigned char i,W; while(1) { W=0x01; for(i=0;i 4;i++) { P1=W; W =1; P0=smg ; delay(10); } } } void delay(unsigned int time) { unsigned int j=0
[单片机]
基于Atmega8及MSM7512的嵌入式Modem设计
摘要:介绍了一种基于AVR单片机Atmega8和调制解调芯片MSM7512设计的嵌入式Modem,详细地阐述了Modem的硬件及软件设计方法。在设计中,鉴于单片机串口资源匮乏的问题,采用单片机上I/O模拟UART口的技术予以解决。上位机软件用Delphi语言编写,通过嵌入式Modem实现了计算机与远方设备之间的数据传送。
关键词:嵌入式Modem Atmega8 MSM7512B 模拟串口
随着经济的发展,远程监控系统的应用日益广泛。其核心部分是远程信息交换,即系统需要在地域分布广泛的设备之间进行信息的交换及协调工作。对于某些采集点分散、传输量不大、对速度要求又不高的信息交换系统,目前有两种解决方案:一是采用Internet
[单片机]
AT89C51最小系统原理电路图
单片机最小系统,或者称为最小应用系统,是指用最少的元件组成的单片机可以工作的系统。 对51系列单片机来说,单片机+晶振电路+复位电路,便组成了一个最小系统。但是一般我们在设计中总是喜欢把按键输入、显示输出等加到上述电路中,成为小系统。 单片机主要擅长系统控制,而不适合做复杂的数据处理,在设计单片机最小系统时通常选用AT89C5l、AT89C52、AT89S51、AT89S52(S系列芯片支持ISP功能)等型号的8位DIP-40封装的单片机作为MCU,一个典型的单片机最小系统一般由时钟电路、复位电路、键盘电路、显示电路等部分组成,有时也外扩有片外RAM和ROM以及外部扩展接口等电路。图1为单片机最小系统结构框图。 1、系
[单片机]
51单片机之计时器与计数器
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赋值,开放定时器
[单片机]
51单片机延时程序的简单研究
应用单片机的时候,经常会遇到需要短时间延时的情况。需要的延时时间很短,一般都是几十到几百微妙(us)。有时候还需要很高的精度,比如用单片机驱动DS18B20的时候,误差容许的范围在十几us以内,不然很容易出错。这种情况下,用计时器往往有点小题大做。而在极端的情况下,计时器甚至已经全部派上了别的用途。这时就需要我们另想别的办法了。 以前用汇编语言写单片机程序的时候,这个问题还是相对容易解决的。比如用的是12MHz晶振的51,打算延时20us,只要用下面的代码,就可以满足一般的需要: mov r0, #09h loop: djnz r0, loop 51单片机的指令周期是晶振频率的1/12,也就是1us
[单片机]
51单片机 AD转换
在数逻的课程中,已经学习过AD转换的概念:将模拟信号采样、量化、编码后转换为数字信号。但是未学习过通过单片机编程,显示结果。 编码分有舍有入、只舍不入两种,量化误差前者更小。=2Vm/(2^n+1 - 1 ) 注意,为了达到精确度高、稳定性好的目的,最好将所有器件的模拟地和数字分别连接,最后将模拟地和数字地仅在一点相连。 此处,使用的是STC12C5A60S2内部的AD转换。 1 /* 功能:使用12C5A60S2内部AD读取外部电压,显示在1602上 */ 2 3 #include STC12C5A60S2.H 4 #include intrins.h 5 sbit RS = P2^6; //1602
[单片机]
8051单片机指令系统的7种寻址方式解析
寻址方式:寻址就是寻找操作数的地址。绝大多数指令执行时都需要操作数,因此就存在如何确定操作数地址的问题。所谓寻址方式就是通过什么途径获取操作数的方式。根据指令操作的需要,计算机总是提供多种寻址方式。一般来说,寻址方式越多计算机的寻址能力就越强,但指令系统也就越复杂。 8051指令系统有7种寻址方式:寄存器寻址,直接寻址,寄存器间接寻址,立即寻址,基址寄存器加变址寄存器间接寻址,相对寻址,位寻址,下面分别介绍。 寄存器寻址 寄存器寻址:寄存器寻址就是操作数在寄存器中,因此指定了寄存器就得到了操作数。采用寄存器寻址方式的指令都是一字节的指令,指令中以符号名称来表示寄存器。例如:MOV A R1 这条指令的功能是把工作寄存器R1
[单片机]