1)空操作延時 (12MHz)

void delay10us()

{

_NOP_();

_NOP_();

_NOP_();

_NOP_();

_NOP_();

_NOP_();

}

2)循環延時  (12MHz)

Void delay500ms()

{

unsigned char i,j,k;

for(i=15;i>0;i--)

for(j=202;j>0;j--)

for(k=81;k>0;k--);

}

延時總時間=[(k*2+3)*j+3]*i+5

k*2+3=165 us

165*j+3=33333 us

33333*i+5=500000 us=500 ms

3)計時器中斷延時(工作方式2) (12MHz)

#includesbit led=P1^0;

unsigned int num=0;

void main()

{

TMOD=0x02;

TH0=6;

TL0=6;

EA=1;

ET0=1;

TR0=1;

while(1)

{

if(num==4000)

{

num=0;

led=~led;

}

}

}

void T0_time() interrupt 1

{

num++;

}

4)C程序嵌入組合語言延時

#pragma asm

……

組合語言程序段

……

#pragma endasm

KEIL軟件仿真測量延時程序延時時間

這是前段事件總結之延時程序、由於不懂組合語言,故NO.4無程序。希望對你有幫助!!!

對於12MHz晶振,機器周期為1uS,在執行該for循環延時程式的時候

Void delay500ms()

{

unsigned char i,j,k;

for(i=15;i>0;i--)

for(j=202;j>0;j--)

for(k=81;k>0;k--);

}

賦值需要1個機器周期,跳轉需要2個機器周期,執行一次for循環的空操作需要2個機器周期,那么,對於第三階循環 for(k=81;k>0;k--);,從第二階跳轉到第三階需要2機器周期 ,賦值需要1個機器周期,執行81次則需要2*81個機器周期,執行一次二階for循環的事件為81*2+1+2;執行了220次,則(81*2+3)*220+3,執行15次一階循環,則 [(81*2+3)*220+3]*15,由於不需要從上階跳往下階,則只加賦值的一個機器周期,另外進入該延時子函數和跳出該函數均需要2個機器周期,故還需要+5。

unsigned char i,j,k;用一個機器周期,+上進出函數的2*2個機器周期,則最好需+5個機器周期的時間。

如何编写c语言延时程序,单片机写延时程序的几种方法相关推荐

  1. c语言调用graphviz_c语言分析函数调用关系图(call graph)的几种方法

    一.基于 Doxygen或 lxr 的API形式的文档系统. 二.基于CodeViz, CodeViz是<Understanding The Linux Virtual Memory Manag ...

  2. [Arduino]烧写Arduino BootLoader的几种方法

    [Arduino]烧写Arduino BootLoader的几种方法 身为Arduino 电子工程师,很多时候都会涉及到自制各种功能的Arduino 电路板(亦或者说是功能扩展板),但是从网上或者其他 ...

  3. 将Java应用程序本地编译为EXE的几种方法

    将Java应用程序本地编译为EXE的几种方法(推荐使用JOVE和JET)   1. 从[url]www.towerj.com[/url]获得一个TowerJ编译器,该编译器可以将你的CLASS文件   ...

  4. C语言无符号双字节乘法,华为OJ机试标题:两个大整数相乘(纯C语言实现两个大整数相乘,两种方法实现大数相乘)...

    华为OJ机试题目:两个大整数相乘(纯C语言实现两个大整数相乘,两种方法实现大数相乘) 题目描述: 输出两个不超过100位的大整数的乘积. 输入: 输入两个大整数,如1234567 123 输出: 输出 ...

  5. 转:让程序只运行一个实例的四种方法

    先留着以后有用. 让程序只运行一个实例的四种方法 综述:让一个程序只运行一个实例的方法有多种,但是原理都类似,也就是在程序创建前,有窗口的程序在窗口创建前,检查系统中是否已经设置了某些特定标志了,如果 ...

  6. C语言中三个数比较大小详解——三种方法

    ​ C语言中三个数比较大小详解--三种方法 方法一:if-else法 方法二:函数法 方法三:三目运算符法 C语言中比较三个数的大小有很多方法,以下是我总结的三种方法: 首先我定义 int a = 1 ...

  7. Java程序初始化启动自动执行的三种方法

    目录 @PostConstruct注解 CommandLineRunner接口 ApplicationRunner 接口 @Order注解设置启动顺序 分享一下自己用过的java程序初始化启动自动执行 ...

  8. 将uni-app打包的H5放在 Android程序中在 webview 显示的两种方法

    将uni-app打包的H5放在 Android程序中在 webview 显示的两种方法 前言 Hash History 完事 前言 之前有个项目要同时做小程序和APP,本着节省时间的想法,研究了下un ...

  9. HTML中写CSS代码的两种方法

    在HTML中写CSS代码也两种方法. 写在HTML标签里 使用CSS前 <h1>这是一个标题 </h1> 使用CSS后 <h1 style="color:red ...

  10. 小程序页面之间数据传递的五种方法

    小程序页面之间数据传递的五种方法 目录 小程序页面之间数据传递的五种方法 **使用 `wx.navigateTo()` 时,在 url 中拼接,这种方法适用于数据量少的情况** **使用 `wx.na ...

最新文章

  1. 【iOS】iOS10.3新增API:应用内评分
  2. Material Design(十一)--CoordinatorLayout和自定义视图
  3. 融合了距离矢量和链路状态两种路由选择协议的优点
  4. Xshell更改命令提示符以及背景配色
  5. 东枝戛古舍利佛塔群(缅三十五)
  6. 程序物语(四):苹果是如何落到牛顿头上的?
  7. IPhone 应用程序管理
  8. 【ARM】Tiny4412裸板编程之异常
  9. 如何修改新浪微博对其他应用的授权
  10. [转]总结:Apache/Tomcat/JBOSS/Jetty/Nginx区别 .
  11. 【codevs2800】送外卖,状态压缩DP练习
  12. (21)Xilinx FPGA开发软件(FPGA不积跬步101)
  13. 4安全框_压花玻璃与安全玻璃有哪些特点?玻璃隔断的介绍
  14. 机器学习算法总结之聚类:K-means
  15. 【编译原理笔记17】代码优化:数据流分析,到达定值分析,到达定值方程的计算
  16. sql注入pythonpoco_骑士CMS后台SQL注入 | CN-SEC 中文网
  17. svn服务端及客户端搭建和使用(一)
  18. git学习笔记-(15-远程跟踪分支)
  19. axure元件库 文件上传_一库:便捷的前后台元件库
  20. 经济应用文写作【10】

热门文章

  1. php调用pdf虚拟打印机,window_在Win7系统中怎么安装PDF彩色虚拟打印机?,前面说过,Word不能直接将文档 - phpStudy...
  2. 这么清晰的帮助手册,AppCube 二次体验
  3. EverEdit逆向 PE结构
  4. ESXi创建的虚机只能ping通自己IP无法ping通网关的问题排查
  5. python做项目编号_python docx中的项目符号列表
  6. 查询mysql校对集语句_mysql 查询时指定校对规则
  7. 如何找到人生方向目标?
  8. Apache-Flink深度解析-JOIN-LATERAL-Time Interval(Time-windowed)
  9. 操作系统——大题——空闲分区表问题
  10. 用Python做一个Mean Rerversion策略