如何编写c语言延时程序,单片机写延时程序的几种方法
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语言延时程序,单片机写延时程序的几种方法相关推荐
- c语言调用graphviz_c语言分析函数调用关系图(call graph)的几种方法
一.基于 Doxygen或 lxr 的API形式的文档系统. 二.基于CodeViz, CodeViz是<Understanding The Linux Virtual Memory Manag ...
- [Arduino]烧写Arduino BootLoader的几种方法
[Arduino]烧写Arduino BootLoader的几种方法 身为Arduino 电子工程师,很多时候都会涉及到自制各种功能的Arduino 电路板(亦或者说是功能扩展板),但是从网上或者其他 ...
- 将Java应用程序本地编译为EXE的几种方法
将Java应用程序本地编译为EXE的几种方法(推荐使用JOVE和JET) 1. 从[url]www.towerj.com[/url]获得一个TowerJ编译器,该编译器可以将你的CLASS文件 ...
- C语言无符号双字节乘法,华为OJ机试标题:两个大整数相乘(纯C语言实现两个大整数相乘,两种方法实现大数相乘)...
华为OJ机试题目:两个大整数相乘(纯C语言实现两个大整数相乘,两种方法实现大数相乘) 题目描述: 输出两个不超过100位的大整数的乘积. 输入: 输入两个大整数,如1234567 123 输出: 输出 ...
- 转:让程序只运行一个实例的四种方法
先留着以后有用. 让程序只运行一个实例的四种方法 综述:让一个程序只运行一个实例的方法有多种,但是原理都类似,也就是在程序创建前,有窗口的程序在窗口创建前,检查系统中是否已经设置了某些特定标志了,如果 ...
- C语言中三个数比较大小详解——三种方法
C语言中三个数比较大小详解--三种方法 方法一:if-else法 方法二:函数法 方法三:三目运算符法 C语言中比较三个数的大小有很多方法,以下是我总结的三种方法: 首先我定义 int a = 1 ...
- Java程序初始化启动自动执行的三种方法
目录 @PostConstruct注解 CommandLineRunner接口 ApplicationRunner 接口 @Order注解设置启动顺序 分享一下自己用过的java程序初始化启动自动执行 ...
- 将uni-app打包的H5放在 Android程序中在 webview 显示的两种方法
将uni-app打包的H5放在 Android程序中在 webview 显示的两种方法 前言 Hash History 完事 前言 之前有个项目要同时做小程序和APP,本着节省时间的想法,研究了下un ...
- HTML中写CSS代码的两种方法
在HTML中写CSS代码也两种方法. 写在HTML标签里 使用CSS前 <h1>这是一个标题 </h1> 使用CSS后 <h1 style="color:red ...
- 小程序页面之间数据传递的五种方法
小程序页面之间数据传递的五种方法 目录 小程序页面之间数据传递的五种方法 **使用 `wx.navigateTo()` 时,在 url 中拼接,这种方法适用于数据量少的情况** **使用 `wx.na ...
最新文章
- 【iOS】iOS10.3新增API:应用内评分
- Material Design(十一)--CoordinatorLayout和自定义视图
- 融合了距离矢量和链路状态两种路由选择协议的优点
- Xshell更改命令提示符以及背景配色
- 东枝戛古舍利佛塔群(缅三十五)
- 程序物语(四):苹果是如何落到牛顿头上的?
- IPhone 应用程序管理
- 【ARM】Tiny4412裸板编程之异常
- 如何修改新浪微博对其他应用的授权
- [转]总结:Apache/Tomcat/JBOSS/Jetty/Nginx区别 .
- 【codevs2800】送外卖,状态压缩DP练习
- (21)Xilinx FPGA开发软件(FPGA不积跬步101)
- 4安全框_压花玻璃与安全玻璃有哪些特点?玻璃隔断的介绍
- 机器学习算法总结之聚类:K-means
- 【编译原理笔记17】代码优化:数据流分析,到达定值分析,到达定值方程的计算
- sql注入pythonpoco_骑士CMS后台SQL注入 | CN-SEC 中文网
- svn服务端及客户端搭建和使用(一)
- git学习笔记-(15-远程跟踪分支)
- axure元件库 文件上传_一库:便捷的前后台元件库
- 经济应用文写作【10】
热门文章
- php调用pdf虚拟打印机,window_在Win7系统中怎么安装PDF彩色虚拟打印机?,前面说过,Word不能直接将文档 - phpStudy...
- 这么清晰的帮助手册,AppCube 二次体验
- EverEdit逆向 PE结构
- ESXi创建的虚机只能ping通自己IP无法ping通网关的问题排查
- python做项目编号_python docx中的项目符号列表
- 查询mysql校对集语句_mysql 查询时指定校对规则
- 如何找到人生方向目标?
- Apache-Flink深度解析-JOIN-LATERAL-Time Interval(Time-windowed)
- 操作系统——大题——空闲分区表问题
- 用Python做一个Mean Rerversion策略