关于keil延时函数的问题,和硬件不一致

author author     2023-04-22     393

关键词:

现在要编写一个硬件的程序,对时序要求很高,因此需要较为精确的延时函数,由于要用很多,所以不用定时器,用延时函数。不过在用keil仿真我的延时函数的时候我发现一个问题,就是用keil软件仿真出来的时间和用硬件仿真出来的时间不一致,同样都是12MHZ,但是用硬件仿真出来的时间是用软件仿真出来时间的两倍。不要跟我说keil仿真时间不准确,应该不是这个原因,呵呵。也就是说是2倍关系,由此我又拿来12MHZ下C的标准延时1us的函数_nop_()来试,软件是0.5us,而硬件才是1us.这是为什么啊???回答满意,另有追分!
谢谢一楼的回答,你说的很正确,但这也正是我当时提这个问题的原因,就是因为keil仿真出来的是0.5us,而硬件仿真出来的是1us。虽然你没有解答我的问题,但还是感谢你。我后来同多询问客服找到问题的答案了,就是我买的这套硬件仿真器,针对我用的p87c591的型号,他又两种时钟模式可选,这个可以在keil中进行设置。他们出场的仿真器默认的是12时钟模式,还有一种是6时钟模式。当设置成6模式时,就可以完全模拟该片子的真是情况了。由此keil和硬件的仿真结果也就一致了.

是这样的,keil有自己的晶振,你在使用时要把keil的晶振调节成和硬件的晶振一样的大小,这样时间就一样了。
还有如果要精确的延时,最好是用程序自带的延时函数,
另外我要提醒的是,在主函数大循环中不要过多使用延时功能,建议用计数功能代替延时,这样比较省资源。
参考技术A 不知道你说的硬件仿真是什么意思,P87C591与传统51分频方式有点不一样,接12M晶振时,机器周期是0.5微秒,而不是1微。本回答被提问者采纳

单片机硬件和软件延时是啥意思?

... strongerHuang微信公众号| 嵌入式专栏前不久有个读者在问关于延时的问题,大概就是问:软件延时和硬件延时是啥意思?做项目时他俩有什么区别?今天就来讲讲关于硬件延时和软件延时的内容,以及它们的... 查看详情

关于iar函数指针问题

voidtest(uint8tmp)tmp=1;typedefvoid(*Pq)();intmain(void) Pqact;act=test;编译出错Error[Pe513]:avalueoftype"void(*)(uint8)"cannotbeassignedtoanentityoftype"Pq"C:\Users\Administrator\Desktop\a\source\App\main.c199为什么一定要参数一致?... 查看详情

c语言中有参延时函数在使用时需要注意啥?

在C语言中使用有参延时函数时,需要考虑以下几点:参数的类型和范围:延时函数的参数应该是一个整数或者长整型,代表延时的时间,通常以毫秒为单位计算。需要注意的是,参数值过大会导致程序卡死,参数值过小则可能... 查看详情

stm32-关于proteus仿真无法运行stm32cubemx自动生成的代码(代码片段)

博主:一位给猫打工的程序员,希望和大家一起进步~项目:通过Stm32控制LED灯的状态不断地反转。工具:STM32CubeMX,Proteus8Professional,Keil5。问题:通过STM32CubeMX生成代码,并在Keil5添加LED状态反转代码和延时代码,并生成相应hex文件,但是... 查看详情

keil的一些函数(代码片段)

...字节/字/浮点/长整型、随机数、打印输出和输入、延迟和延时函数(信号函数调用)二TheDEFINEcommandcreatesasymbolofaspecifiedt 查看详情

如何解决win10与ubuntu16.04时间不同步的问题

...了问题存在的原因,我们就来解决这个问题。这个是一个关于时间的问题,我们就先来了解一下关于时间的概念UTC即UniversalTimeCoordinated,协调世界时GMT即GreenwichMeanTime,格林尼治平时Windows与Linux缺省看待系统硬件时间的方式是不一... 查看详情

关于io模拟时序(spi)的注意事项

...的时序调试。但在内部资源不够时就要用IO模拟总线了。关于短延时:模拟时序时是否需要延时要看MCU与device的相对速度。比如I2C如果400K的速率和MCU动辄几十M的速率不再一个量级,肯定要通过延时调整时序;但对于SPI因为其速... 查看详情

汇编与c51语言如何在keil混合起来使用?只要教会我调用一个延时函数就可以了。

...嵌入汇编,方法如下:#pragmaasm;;;;你的汇编代码,如果是延时函数的汇编代码,就放在这里#pragmaendasm4、编译,即可生成目标代码。 查看详情

怎么使用keil51库函数∼请举例说明

...定义了51的一些特殊功能寄存器voiddelay(unsignedinti);//声明延时函数main()P1=0x00;//置P0口为低电平delay(600);//调用延时程序P1=0xff;//置P0口为高电平delay(600);//调用延时程序/*******延时函数*************/voiddelay(unsignedinti)unsignedcharj;for(i;i>0;i--... 查看详情

关于诚实和不诚实函数的问题

】关于诚实和不诚实函数的问题【英文标题】:Questionabouthonestanddishonestfunction【发布时间】:2021-04-1115:57:19【问题描述】:我目前正在阅读EnricoBuonanno的C#函数式编程。第3章包含一个练习(我会将练习缩短到相关部分)://5.Writea... 查看详情

关于git回退再前进造成本地代码和远程仓库代码不一致的问题

事情经过: git push 提交之后(版本2.0), 回退, 然后做了一些修改, 发现有问题,于是脑抽回退git reset --hard HEAD^ (版本1,0), 然后又前进到之前那个版本(2.0), 发现文件还是在1.0版本但是远程仓... 查看详情

函数模板和“正常”函数之间奇怪的不一致

】函数模板和“正常”函数之间奇怪的不一致【英文标题】:Strangeinconsistencybetweenfunctiontemplateand"normal"function【发布时间】:2019-07-1117:45:59【问题描述】:我有两个几乎相同的函数(除了其中一个是模板):int*bar(conststd::... 查看详情

关于重采样后栅格数据行列数不一致的问题

参考技术A在处理栅格数据时,重采样之后栅格的横列数往往会出现不一致的情况,给后面的数据分析造成一定的困难。为了对栅格数据的行列数进行匹配,这里有一个思路:对两个栅格数据进行裁剪,即不一致性裁剪,裁剪过... 查看详情

stc单片机的延时问题

...or(g=0;g<uldata;g++) _nop_(); _nop_(); _nop_(); 当uldata=1时延时多少秒?请给出具体算法…………参考技术A这个嘛,单片机每执行一个语句所需要的时间是晶振频率的倒数,你这样一算就知道是多少了。 参考技术B用keil转换成汇... 查看详情

硬件竞争和冒险

...。在组合逻辑中,由于门的输入信号通路中经过了不同的延时,导致到达该门的时间不一致叫竞争。产生毛刺叫冒险。如果布尔式中有相反的信号则可能产生竞争和 查看详情

关于keil环境的搭建

最近在做STM32F4的测试开发,用到keil,MDK512,MDK514,MDK520……呃呃呃,各种纠结啊,还好已经整理好了,把经验在此分享一下。开始下载安装包next->一路点,不需要修改什么。在就是配置相应的硬件pack包,不同的MDK版本对应的... 查看详情

申明关于我的csdn博客上图片水印地址和实际博客访问地址不一致的问题(代码片段)

有同学说我博客上图片的水印地址和我博客地址不一样,我在这里再申明下:其实https://blog.csdn.net/zsjangel和https://blog.csdn.net/zhouzme这地址都是我的同一个博客,第一个地址会自动跳转到zhouzme的因为CSDN默认用的是zhouzme这个个性名称为... 查看详情

收到的关于 MPI_Isend 的数据不一致

】收到的关于MPI_Isend的数据不一致【英文标题】:InconsistentdatareceivedwithrespecttoMPI_Isend【发布时间】:2021-01-2816:50:16【问题描述】:我正在使用MPI库在master和worker之间传递对象数组。由于有很多对象,我在for循环中使用MPI_Isend和MP... 查看详情