51使用while进行延时的问题】的更多相关文章

应用单片机的时候,经常会遇到需要短时间延时的情况.需要的延时时间很短,一般都是几十到几百微妙(us).有时候还需要很高的精度,比如用单片机驱动DS18B20的时候,误差容许的范围在十几us以内,不然很容易出错.这种情况下,用计时器往往有点小题大做.而在极端的情况下,计时器甚至已经全部派上了别的用途.这时就需要我们另想别的办法了.    以前用汇编语言写单片机程序的时候,这个问题还是相对容易解决的.比如用的是12MHz晶振的51,打算延时20us,只要用下面的代码,就可以满足一般的需要:     …
一. 500ms延时子程序 void delay500ms(void) { unsigned char i,j,k; ;i>;i--) ;j>;j--) ;k>;k--); } 产生的汇编: C:0x0800      7F0F       MOV        R7,#0x0F C:0x0802      7ECA       MOV        R6,#0xCA C:0x0804      7D51       MOV        R5,#0x51 C:0x0806      D…
上周写了一个简单的IO口翻转的程序,但是很奇怪,在FPGA板子上怎么也跑不起来. 后面发现问题可能出在延时函数上. void Delay(unsigned char t) { while(--t); } while(--t)在有些编译中无法正确编译--t,编译器认为这样是可以优化的(这个是我们老大给出的可能回答).所以它们就对它进行了优化.其实具体原因我也不是很清楚. 后面换成下面这种形式或者for循环一切就正常了. void Delay(unsigned int t){ ){ t=t-; }…
//************************************************************************************* //**程序名称:51单片机实现对24C02进行页写.顺序读取并显示验证 //**编写人:**** //**修改人:**** //**程序目的:熟悉I2C总线协议,实现51模拟I2C时序和24C02通信 //**功能描述:51单片机将8个字节数据写入24C02的一页中,然后顺序读出,每隔1秒送P0口LED显示 //**其他…
目录 一.主从复制简介 二.主从复制原理 三.主从复制搭建实战 四.主从复制基本故障处理 五.延时从库 企业案例: 模拟环境 一.主从复制简介 复制是 MySQL 的一项功能,允许服务器将更改从一个实例复制到另一个实例. 1)主服务器将所有数据和结构更改记录到二进制日志中. 2)从属服务器从主服务器请求该二进制日志并在本地应用其内容. 3)IO:请求主库,获取上一次执行过的新的事件,并存放到relaylog 4)SQL:从relaylog中将sql语句翻译给从库执行 二.主从复制原理 主从复制的…
1. 介绍Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写.Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据. 这种动作(网页浏览,搜索和其他用户的行动)是在现代网络上的许多社会功能的一个关键因素. 这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决. 对于像Hadoop一样的日志数据和离线分析系统,但又要求实时处理的限制,这是一个可行的解决方案.Kafka的目的是通过Hadoop的并行加载机制来统一线上…
本文来自于springboot官方文档 地址:https://docs.spring.io/spring-boot/docs/current/reference/html/ Spring Boot参考指南 作者 菲利普· 韦伯,戴夫 Syer,约什 长,斯特凡 尼科尔,罗布 绞车,安迪· 威尔金森,马塞尔 Overdijk,基督教 杜普伊斯,塞巴斯蒂安· 德勒兹,迈克尔· 西蒙斯,韦德兰Pavić 2.0.0.M3 版权所有©2012-2017 本文件的副本可供您自己使用和分发给他人,前提是您不…
如下程序能实现ms毫秒级的比较精确的延时 void Delayms(unsigned int n) { unsigned int i,j; ;j--) ;i>;i--); } 用keil可以看出这个延时的时间,我们先延时1ms(Delayms(1)). 进入Delayms前,sec=0.00042209s 延时后,sec=0.00142253s 可以知道Delayms(1)实际延时0.00142253s—0.00042209s=0.00100044s≍1ms 同样如果想延时15ms的话,用Del…
转自:http://blog.sina.com.cn/s/blog_980e19e00101b5dh.html 有时候需要精确的延时,比如18B20温度传感器对时序要求非常严格,必须精确到微秒级别 一.用NOP函数 在keil C51中,直接调用库函数: #include // 声明了void _nop_(void); _nop_(); // 产生一条NOP指令 作用:对于延时很短的,要求在us级的,采用“_nop_”函数,这个函数相当汇编NOP指令,延时几微秒.NOP指令为单周期指令,可由晶振…
/********************************************** º¯ÊýÃû£ºdelay_ms(uint z) ÑÓʱº¯Êý(12MHZ¾§Õñ) ´Ëº¯ÊýÑÓʱʱ¼ä=z(ms) **********************************************/ void delay_ms(uint z) /*ºÁÃëÑÓʱº¯Êý*/ { uint i,j; ;j--) ;i>;i--); } http://www.eeworld.…
按常规,在51端口(P1.P2.P3)某位用作输入时,必须先向对应的锁存器写入1,使FET截止.一般情况是这样,也有例外.所谓IO口内部与电源相连的上拉电阻而非一常规线性电阻,实质上,该电阻是由两个场效应管并联在一起:一个FET为负载管,其阻值固定:另一个FET可工作在导通或截止两种状态(姑且叫可变FET).使其总电阻值变化近似为0或阻值较大(20千欧--40千欧)两种情况.当和端口锁存器相连的FET由导通至截止时,该阻值近似为0,可将引脚快速上拉至高电平:当和锁存器相连的FET由截止至导通时,…
熟悉SQL Server的人都知道,它有一个很有用的功能,waitfor time和waitfor delay,前者表示在某个时间执行,后者表示等待多长时间执行.在我们测试功能和定时执行的时候特别有用,那么我们在mysql中如何实现呢? mysql只有一个定时函数,sleep(),我们只能通过这个函数来想办法了. sleep()说明: mysql> select id from c;+------+| id |+------+| 1 || 2 |+------+2 rows in set (0.…
引言 PCF8591 是单电源,低功耗8 位CMOS 数据采集器件,具有4 个模拟输入.一个输出和一个串行I2C 总线接口.3 个地址引脚A0.A1 和A2 用于编程硬件地址,允许将最多8 个器件连接至I2C总线而不需要额外硬件.PCF8591由于其使用的简单方便和集成度高,在单片机应用系统中得到了广泛的应用,这篇文章是介绍IIC通信在ADDA转换芯片PCF8591中的应用. 关于IIC IIC总线通信协议的介绍在"基于51单片机IIC通信的AT24C02学习笔记"有详细的介绍. 关于…
51单片机P0/P1/P2/P3口的区别: P0口要作为低8位地址总线和8位数据总线用,这种情况下P0口不能用作I/O,要先作为地址总线对外传送低8位的地址,然后作为数据总线对外交换数据: P1口只能作为I/O口(P1.0.P1.1以外): P2口除了作为普通I/O口之外,在扩展外围设备时,要用作高8位地址线: P3口除了作为普通I/O口之外,其每个引脚都有第二功能. I/O端口具有以下特性: ① 端口自动识别:无论是P0 P2口的总线复用还是P3口的功能复用,内部资源会自动选择,不需要通过指令…
STM32定时器概述 STM32F40x系列总共最多有14个定时器,定时器分为三类:基本定时器.通用定时器和高级定时器.它们的都是通过计数来达到定时的目的,和51的定时器差不多,基本原理都是一样的,就是功能多了一些,这些计数器都是自动重新装载初值的,使用起来非常方便,而且计数时钟频率可以通过分频系数来设置.本文章将介绍使用定时器中断来控制LED间隔1s闪烁. 计数的时钟来源主要有四个: 内部时钟CK_INT 外部时钟模式1:外部输入脚TIx 外部时钟模式2:外部触发输入ETR,仅适用于 TIM2…
在直播应用中,RTMP 和 HLS 是两种较为成熟且广泛应用的流媒体协议,基本上可以覆盖所有客户端.RTMP 是互联网 TCP/IP 五层体系结构中应用层的协议,主要优势就是实时性高,基本可将直播延时控制在3秒以内,因此广泛应用于低延时直播. HLS是由 Apple 公司实现的基于 HTTP 的流媒体传输协议,拥有性能高.完美支持 iOS等优势.相比于 RTMP 协议,HLS 无需在移动端安装 APP,同时兼容HTML5,因此在移动直播的传播和体验上都拥有巨大的优势.不过HLS 的实时性较差,业…
标签(linux): mysql 笔者Q:972581034 交流群:605799367.有任何疑问可与笔者或加群交流 xtrabackup是percona公司针对MySQL开发的一款开源的物理备份工具,直接拷贝物理文件,速度快,效率高,支持不锁表备份,支持全量.增量(基于LSN序号).压缩及流备份等等,那今天要做的是,用它,来实现MySQL的主从复制. 先上原理图一张.. 主从复制原理要点 1.异步方式同步. 2.逻辑同步模式,多种模式,默认是通过SQL语句执行. 3.主库通过记录binlog…
上一篇链接 http://www.cnblogs.com/yangfengwu/p/8743936.html 这一篇说一下自己板子的51单片机自动冷启动下载原理,我挥舞着键盘和鼠标,发誓要把世界写个明明白白,突然想起来第一行代码的那句话了. 当接上usb线连接到电脑上的时候 看一下RTS引脚的变化,这个信号是连络信号 所以很多用继电器实现的自动下载在接上电的时候会先啪啪啪的动作一下继电器 说一下当点击下载的时候CH340G的RTS和DTR引脚的变化 先说一下平时RTS和DTR都是高电平,正常的串…
一.C语言相关 Q1:sbit与sfr代表是什么?有什么作用? Q2:#define OSC_FREQ  22118400L这句宏命令里的“L”是什么意思? Q3:我粘贴了别人的代码,怎么发现没有unit这个类型? Q4:为什么好多变量都是char类型?它不是字符类型吗?怎么可以用来计数? Q4.1:51单片机中的char,int,long,float,double各占多少个字节,取值范围多大? Q5:unsigned char data是什么数据类型? Q6:void timer() inte…
1 程序源码 #include <REGX52.H> `包含51单片机的头文件` sbit led = P0^0; int main(void) { while(1) { led = 1; } return 0; } 1.1 C语言常用的预处理命令 typedef的使用 typedef unsigned int u16; typedef unsigned char u8;`后面需要加上分号` 重新定义一些常用的关键词,可以增强程序的可移植性,因为在不同的编译软件上面,C语言的数据类型的关键词的…
1.回顾我们的51 单片机编程,当我们需要做系统延迟的时候,最常采用的一种方式就是使用for 循环的空语句等待来实现. 当然,在STM32 里面也可以这么实现.但是在STM32 的Cortex 内核里面,有个比其更加精准的定时器专业用于 系统定时,我们称之为Cortex 系统定时器(SysTick,系统滴答). Systick 就是一个定时器而已,只是它放在了NVIC(中断事件)中, 主要的目的是为了给操作系统提供一个硬件上的中断(号称滴答中断). 这样,只要设置好其中断的时间,就可以每隔一定时…
本文是续 单片机成长之路(51基础篇) - 009 关于sdcc的多文件编译范例(一)编写的. 在实际的工作中,单片机的头文件和功能函数不可能同全部放在同一个文件夹下面,我们把单片机成长之路(51基础篇) - 009 关于sdcc的多文件编译范例的代码进行重新拆分,然后把头文件归类到一个文件夹(include/)下面,便于管理. 拆分前文件目录结构: ├── delay.c ├── delay.h ├── main.c └── makefile 拆分侯生成以下文件: ├── include //…
在这里, 我来讨论一下关于MSP430单片机使用__delay_cycles延时的问题. IAR for MSP430编译器提供了一个编译器内联的精确延时函数(并非真正的 函数)以提供用户精确延时使用, 该函数原型是: __intrinsic void __delay_cycles(unsigned long __cycles); 该内部函数实现__cycles个CPU周期的延时,但对于该参数的设置,我要陈述一下: __cycles需要我们传递的是CPU运行的周期个数 网上普遍的用法是: #de…
前言:了解就行,不必深究 上一篇链接 http://www.cnblogs.com/yangfengwu/p/8720148.html 源码链接:https://pan.baidu.com/s/1wT8KAOIzvkOXXNpkDI7E8g提取码:1q9y 这一篇说一下自己板子的51单片机自动冷启动下载原理,我挥舞着键盘和鼠标,发誓要把世界写个明明白白,突然想起来第一行代码的那句话了. 当接上usb线连接到电脑上的时候 看一下RTS引脚的变化,这个信号是连络信号 所以很多用继电器实现的自动下载在…
#include <AT89X51.H> #include <intrins.h> // 函数原形定义 #define uchar unsigned char #define uint unsigned int void main (void); // 主函数 void LED_OUT(uchar X); // LED单字节串行移位函数 void LED_print (uchar p, uchar x) ; unsigned char code LED_0F[]; // LED字模…
Q:c语言编写51单片机中断程序,执行过程是怎样的? 例如程序:#include<reg52.h>  void main(void)  {   EA=1;      //开放总中断   EX0=1;     //允许使用外中断   IT0=1;    //选择负跳变来触发外中断    P0=0xff;         //关闭所有P0口的LED灯        while(1); //无限循环,}void it0(void) interrupt 0 using 0 //外中断0的中断编号为0{…
小白 第一次跟新博客 基于51单片机和LCD1602的万年历程序 可实现走时和调时功能 有简单的1602菜单制作 欢迎大家交流 LCD1602和51单片机的连接方法 RS = P3^5; //数据/命令选择端(H/L)RW = P3^4; //数/写选择端(H/L)EN = P3^3; //使能信号P0 //LCD1602的数据口D0-D7 #include<reg52.h> typedef unsigned char uChar8;typedef unsigned int uInt16; u…
首先,二级缓存默认不开启! 要配置 <setting name="cacheEnabled" value="true"/> 在MyBatis中:一级缓存会维护一个HashMap,key为hashcode+statementId+sql语句,Value为查询出来的结果集映射成的java对象.作用域是SqlSession 二级缓存是namespace级的,还需要在配置文件处配置缓存<cache/> 在配置了分布查询 <select id=&…
转自cdxy师傅:https://www.cdxy.me/?p=789 PWNHUB 一道盲注题过滤了常规的sleep和benchmark函数,引发对时间盲注中延时方法的思考. 延时函数 SLEEP mysql); +----------+ ) | +----------+ | +----------+ row in set (5.00 sec) BENCHMARK mysql,sha()); +----------------------------+ ,sha()) | +---------…
相关连接和资料下载: 个人博客 资料下载 Step1:配置ESP8266 通过USB转TTL模块把ESP8266模块和电脑连接起来,如图: 把ESP8266模块的VCC,GND,CH_PD,UTXD,URXD口分别接USB转TTL模块的3.3v,地,3.3v,RXD,TXD 连接好后,就准备用电脑用串口调试助手向ESP8266发送AT指令. 串口调试助手下载地址:百度云盘 设置好串口调试助手的串口和波特率,ESP8266默认波特率为115200,把串口调试助手的波特率调为115200,勾选左下角…