汇编语言写c51延时程序,单片机延时程序实例讲解

在单片机实验中,有一个很重要也是很基本的子程序必须要求我们掌握,那就是延时程序。下面我凭记忆来讲解延时程序。

课本上讲,1个机器周期=6个状态周期=12个时钟周期,而这个时钟周期与晶振频率有关。我们接下来要上的实验基本都是以12MHz的晶振。12M的频率,得其周期为1/12乘10的-6方s,那么1个机器周期就是它的12倍,即1us,而一般语句需要2个机器周期,例如

MOV R6,#20

DNJZ R6,$

每一次执行时,每一个过程就需要2个机器周期,为1us乘2。.同样C语言中for循环语句没执行一次也是2个机器周期,即2us。下面我会以每个语句执行一次用时的2us为基本单位,不会再细化了。

汇编语言最基本延时:

MOV R6,#20

D1:MOV R7,#248

DNJZ R7,$//循环248次,共用248X2us,

DNJZ R6,D1

我开始也是搞不懂怎么算它到底延时多少,现在给大家写它表达式:

我觉得应该从最后往前算,在MOR R7,#248执行一次前提下,用时1X2us,然后循环减248,用时248X2us,故共用时[2+2X248]us。

然而又由于DNJZ R6,D1,上面的过程又循环20次,故上面的循环最终用时20X[2+2X248]us。

接着注意到单纯DNJZ R6,D1会用时20X2=40us。

最后注意过执行唯一一次的  MOV R6,#20会用时1X2us。

所有,最终表达式为:1X2us+20X[2+2X248]us+20X2=10002us=10ms=0.01s。

同理,用c51编的延时程序要了解它必须也要写出它的表达式,下面的C51延时程序可以试着自己写出表达式:

void delay02s(void)

{

unsigned char i,j,k;

for(i=20;i>0;i–)

for(j=20;j>0;j–)

for(k=248;k>0;k–);

}

我还是把表达式写在这,[(248X2+2)X20+2]X20=199240=199.24ms=0.2s

再给一个我验证过的程序,这是个比较典型和基本的延时程序应用例子:

#include

sbit L1=P0^0;

void delay02s(void)

{

unsigned char i,j,k;

for(i=20;i>0;i–)

for(j=20;j>0;j–)

for(k=248;k>0;k–);

}

void main(void)

{

while(1)

{

L1=0;

delay02s();

L1=1;

delay02s();

}

}

能看出它的功能么?他就是让一个灯不停的闪啊闪,亮个0.2s,又熄个0.2s,如此反复。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/409372.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Data Analysis: What are the skills needed to become a data analyst?

今天看到一个讨论贴:如何成为一个牛逼的数据分析师?其中有一贴如此总结。全文如下:There are two classes of skills that are needed to be a successful data analyst: both soft and technical skills are needed. The core work flow fo…

一文带你理解如何解决工作中的需求

我是歌谣 放弃很容易 但是坚持一定很酷 1前言 在我们的开发过程中 会遇到一些开发的需求 怎么实现 怎么写 怎么做才最合理 2需求处理 拿到一个需求就和做数学题一样 我们要理清所有的关系 由于本文知识对需求进行阐述 所以就以vue为例子 2.1 需求1处理页面样式某页面跳转之后如…

tc溜溜865手机投屏卡_溜溜tcgames老版本(电脑玩手机游戏)-溜溜TC Games32位/64位旧版本PC下载V2.0.0官网安卓真机投屏-西西软件下载...

溜溜TC Games32位/64位旧版本PC是一款非常好用的手机游戏投屏工具,有了这款软件我们就可以将手机上的游戏画面投入到电脑上,大屏幕玩游戏,这样肯定会跟畅快,该软件是由成都杰华科技有限公司基于PC端研发的,从此电脑玩游…

c语言八个方向迷宫课程设计,【精品资料最新版】C语言课程设计-迷宫游戏.doc...

计算机技术基础课程设计C语言设计报告题目:完整的二维迷宫游戏学院:工商管理学院专业:信息系统与信息管理班级:050507姓名:孙月指导教师:张首伟设计日期:2004年12月10日题目:完整的二…

文件操作的小tips

freopen功 能: 替换一个流,或者说重新分配文件指针,实现重定向。 eg: freopen("in.txt","r",stdin); freopen("out.txt","w",stdout); /* close the standard output stream */ fclose(stdout);若要返回到显示…

ant接口用什么天线_Ant-Basic天线基本知识讲

1天线1.1天线的作用与地位无线电发射机输出的射频信号功率,通过馈线(电缆)输送到天线,由天线以电磁波形式辐射出去。电磁波到达接收地点后,由天线接下来(仅仅接收很小很小一部分功率),并通过馈线送到无线电接收机。可见&#xff0…

android imageview 图片切换动画,在Android中以动画方式将ImageView移动到不同的位置...

TranslateAnimation animation new TranslateAnimation(0, 50, 0, 100);animation.setDuration(1000);animation.setFillAfter(false);animation.setAnimationListener(new MyAnimationListener());imageView.startAnimation(animation);更新:问题是,Vi…

shell,perl,python

shell,perl,python的区别 2012-03-18 10:48:42| 分类: 默认分类 | 标签: |字号大中小 订阅 shellsedawk三者中功能最弱,没有调试程序,大多数操作必须通过运行其他程序才能执行,所以需要更多时间、内存并在进程表中…

宁波python学习_python学习第五天

一 常用模块定义:可以实现某种功能的.py结尾的python文件,文件名为test.py,则模块名为test导入方法import 模块名import 模块名1,模块名2from 模块名 import * 不建议使用这种方法,容易引起模块中的方法被…

android管理员和普通用户登录,asp登录页如何区别管理员和普通用户,登录后跳转到不同页面?...

数据库表 user表 中,username(用户名) pass(密码) type(超级管理员、高级发文者) cname(单位名称)登录页index.aspif request.Form("submit")"登陆系统" thenusertrim(request.Form("uname"))passucase(md5(request.Form("pass&…

envoy实现_如何利用 Envoy 的 Postgres 过滤器实现网络可观察性

作者:Christoph Pakulski自发布版本 1.15.0 起,Envoy 代理就开始支持 Postgres 信息解码用于统计目的了。该功能为网络中发生的 Postgres 事务提供聚合视图。有了聚合视图,Postgres 作业的种类、故障的数量和严重性瞬间一目了然。通过时间序列…

android无感刷新下拉分页,GitHub - TakWolf/Android-RefreshAndLoadMore-Demo: 一种简单的并且优雅的方式实现下拉刷新和加载更多的分页效果。...

Android - RefreshAndLoadMore Demo一种简单的并且优雅的方式实现下拉刷新和加载更多的分页效果。包含 ListView 和 RecyclerView 两种组件的对应实现。下拉刷新基于 SwipeRefreshLayout 实现。加载更多通过在列表底部添加 FooterView 实现。考虑了第一次请求数据填充不足一屏的…

神经网络与机器学习 第一讲(2)——什么是神经网络

一、为什么要研究神经计算 1. 理解人脑是怎样工作的 2. 理解利用神经元和连接所形成的并行计算(这与串行计算很不相同): 1) 能够做好人脑擅长的事情(vision) 2) 做不好人脑不擅长的事情(23*45) …

弹性法计算方法的mck法_粘弹性自由阻尼加筋板的随机响应分析和试验研究

0 引 言船舶在营运过程中可能产生有害振动并影响正常运营,此时需要对船体结构采取有效的减振措施,在结构上敷设阻尼是常用、高效的减振方法之一[。要达到良好的减振效果,需要选取合适的阻尼材料和合理的敷设方式。粘弹性阻尼材料由于其性能参…

自定义圆形倒计时Android,Android自定义View倒计时圆

本文实例为大家分享了Android自定义View倒计时圆的具体代码,供大家参考,具体内容如下创建attr创建DisplayUtil 类import android.content.Context;/*** Created by 王 on 2017/10/21.*/public class DisplayUtil {/*** 将px装换成dp,保证尺寸…

网络编程的4种IO模型

selectFD_ZERO初始化FD_SET将socket加进去select轮询当socket的事件发生时,fd_set里面有相关的socket,如果没有socket有事件发生,select返回0FD_ISSET检测,socket是否还在fd_set里,是的话,表示这个socket有…