单片机:延时函数的理解

article/2025/9/24 21:59:44

在实现单片机功能的时候,经常会用到延时函数,那么延时函数的原理也是非常有必要了解的。一般我们写延时函数的时候,默认的晶振频率fosc=12MHZ,而机器周期T=12/fosc=1us。
这里我们来写一个10ms的延时函数:

void delay_10ms()
{unsigned char i,j,k;for(i=5;i>0;i--){for(j=0;j<4;j++){for(k=0;k<248;k++)}}
}

这大概就是一个十毫秒的延时函数,主要原理就是通过三层for循环的时间间隔来实现延时的目的。
循环次数=45248=4960,又因为每次循环都有两次循环判断条件,所以每次循环耗费两个机器周期,总耗费机器周期=4960*2=9920,12M晶振频率,一个机器周期为1us, 总共耗费9920个机器周期,9920us = 9.92ms,加上赋值等操作耗费的时间,大约为10ms,但是在有些资料上看到的延时函数的实际时间是偏大的,具体是为什么,目前还没想明白。。。
如果怕自己写的延时函数有问题的话,还可以使用烧录软件上提供的延时函数来进行计算,上面会自动提供代码,
在这里插入图片描述
这上面提供的应该比较准确。


http://chatgpt.dhexx.cn/article/i90hHquF.shtml

相关文章

c/c++语言中的延时操作

大家在编程的过程中可能需要用到一些延时操作&#xff0c;比如说在使用控制台编程时&#xff0c;程序运行的时候DOS窗口会一闪而过&#xff0c;这样就会导致看不到程序在Dos界面运行的结果&#xff0c;这样有些小伙伴就纳闷了&#xff1a;怎样使得Dos窗口一直停留呢&#xff1f…

C\C++中计时、延时函数

C\C标准库中提供了两种计时函数clock()和time()。其用法如下&#xff1a; &#xff08;1&#xff09;clock()函数用法 void timeConsume() {double start,stop,durationTime;start clock();/*...代码片段*/stop clock();durationTime ((double)(stop-start))/CLK_TCK;cout…

c语言中,关于延迟函数的理解

对于延迟&#xff0c;有些c基础的人都能够做到用for或while来实现 例如&#xff1a; #include <stdio.h>int main() {int i, j, k;for (i 1; i < 1000; i){for (j 1; j < 1000; j){for (k 1; k < 1000; k){}}}printf("hello\n");return 0; }1234…

延时函数

延时函数 什么是延时函数 所谓延时函数就是在函数中设置了几个空操作的动作&#xff0c;每次操作都需要消耗一定的时间&#xff0c;动作结束了&#xff0c;就会跳出延时函数继续做其他事情了。 为什么要延时 为了使CPU某些芯片的时序而采用的一些机制&#xff0c;比如独立按…

C语言里的延时函数

C语言延时 悬赏分&#xff1a;0 - 解决时间&#xff1a;2007-2-18 14:48s级的时间延时杂写啊&#xff1f;大侠们帮哈忙啊 最佳答案 在Windows下最简单的办法是调用系统函数Sleep(time)&#xff0c;单位是ms&#xff0c;在windows.h中声明&#xff0c;注意大小写&#xff1b;不然…

连接oracle数据库报错:ORA-12505

连接oracle数据库报错:ORA-12505 今天在使用程序连接oracle数据库时本来很简单的填写url,用户名和密码&#xff0c;测试连接提示失败。和pl_sql 对比了下写的也没毛病&#xff0c;有图为证&#xff1a; 看了下数据库地址端口和用户名密码都没问题&#xff0c;打开数据日志看到…

解决oracle报错ORA-12505

连接oracle报错ORA-12505 主要原因是sid错误&#xff0c;网上有很多解决办法&#xff0c;我这里是因为url链接方式写错了&#xff0c;给我的是service-name&#xff0c;我却用jdbc:oracle:thin:host:port:SID 方式去链接&#xff0c;而正确的写法是 jdbc:oracle:thin://host:p…

连接Oracle时出现ORA-12505错误

连接Oracle时出现ORA-12505错误 问题&#xff1a;使用eclipse连接Oracle数据库时报错&#xff1a;Listener refused the connection with the following error:ORA-12505, TNS:listener does not currently know of SID given in connect descriptor 原因&#xff1a;重新配置了…

ORA-01555

报错&#xff1a; 数据泵导入时报错如下&#xff0c;快照太旧 分析原因&#xff1a; snapshot 是存储undo中 undo的作用事务恢复、事务回滚、读一致性&#xff0c;显然和读一致性作用有关 数据泵的原理&#xff1a;将数据库的信息以转储文件的形式存储到操作系统中  S…

【数据源】连接Oracle失败 Listener refused the connection with the following error: ORA-12505

连接Oracle失败 Listener refused the connection with the following error: ORA-12505 使用场景解决方案 使用场景 数据源平台配置了Oracle&#xff0c;在其它工具测试能够正常连接&#xff0c;但数据源平台在确认配置无误情况下点击测试连接提示失败&#xff0c;报错信息提…

Oracle SQL Developer连接报错(ORA-12505)

理论实践 Oracle SQL Developer连接报错(ORA-12505) 作者&#xff1a;Vashon 时间&#xff1a;20150415 之前我的Oracle数据库出现问题&#xff0c;费大波周折终于弄好了&#xff0c;今天又创建了一个DBA管理员的连接方式出现问题&#xff0c;本人现在把解决方案分享给大家&am…

使用dbeaver链接oracle报错ORA-12505, TNS:listener does not currently know of SID given in connect descripto

业务需求需要读取oracle数据库数据, 想先在dbeaver连接oracle数据库进行操作, 但是管理员一开始给的用户名与密码连接不上, 报错: 以及打开详细 Caused by: oracle.net.ns.NetException: Listener refused the connection with the following error: ORA-12505, TNS:listener …

ORA-12505错误的解决方法

在使用ORACLE数据库的时候,遇到这样一个问题:每隔一段时间,ORACLE数据库就打不开,显示错误是ORA-12505,大概就是指向监听和SID名字错误的说明。网上有很多解决办法。多数说的是将Listener-ora文件改写,将监听打开重启即可解决。在将以上措施都尝试一遍之后都没有解决,可…

【Oracle连接】java.sql.SQLException: Listener refused the connection with the following error: ORA-12505

连接数据库时&#xff0c;提示错误描述&#xff1a; java.sql.SQLException: Listener refused the connection with the following error: ORA-12505, TNS:listener does not currently know of SID given in connect descriptor 问题描述&#xff1a;情况使用帆软报表连接数…

ORA-12505:TNS:listener does not currently know of SID given in connect descriptor

Oracle安装好之后&#xff0c;默认的listener是localhost&#xff0c;现在为了在局域网内能够访问&#xff0c;其他电脑访问的时候&#xff0c;提示如下错误&#xff1a; ORA-12505&#xff1a;TNS:listener does not currently know of SID given in connect descriptor。 修…

ORA-12505:TNS: 监听程序当前无法识别连接描述符中所给出的 SID

问题描述&#xff1a; 小学期修Oracle课程&#xff0c;为了小团队的便利性&#xff0c;在腾讯云中使用Docker创建了Oracle容器进行共享&#xff0c;在这段时间使用是正常的。在一两个星期后使用nacicat连接oracle时&#xff0c;报了ORA-12505&#xff1a;TNS: 监听程序当前无法…

ORA-12505, TNS:listener does not currently know of SID given in connect descriptor解决方式

启动项目连接oracle数据报&#xff1a;ORA-12505, TNS:listener does not currently know of SID given in connect descriptor ORA-12505: TNS: 监听程序当前无法识别连接描述符中所给出的SID 报错原因&#xff1a;通过报错内容 “TNS:listener does not currently know of …

ORA-12505

oracle 数据库&#xff0c;用sqldeveloper 打开报了 ORA-12505: TNS:listener does not currently know of SID given in connect descriptor&#xff1b; 先通过sqlplus\命令行, 查看当前正在使用的数据库实例及主机名 SQL>conn/as sysdba SQL>select instance_name fr…

关于oracle连接ORA-12505错误的直观解决方法

oracle连接一直好好的&#xff0c;突然间连接的时候报错了&#xff0c;报错为ORA-12505, TNS:listener does not currently know of SID given in connect descriptor 。网上找了好长时间也没解决。现在将个人的解决方法分享出来&#xff0c;大家有什么不同意见的&#xff0c;…

ORA-12505: TNS: 监听程序当前无法识别连接描述符中所给出的SID等错误解决方法【连接本机】

遇到这个问题首先考虑检查配置文件listener.ora和tnsnames.ora。 1 listener.ora文件 获取电脑主机名称&#xff1a;可通过dba登录sqlplus利用 select HOST_NAME from v$instance; 语句查询主机名 模板如下&#xff1a; SID_LIST_LISTENER (SID_LIST (SID_DESC (SID_NAM…