c语言1ms延时程序,请教老师,51微控制器在12M晶振,C语言程式设计时,延时函式120次=1ms(书本上是这样的,不懂),是怎样得来的?...
请教老师,51微控制器在12M晶振,C语言程式设计时,延时函式120次=1ms(书本上是这样的,不懂),是怎样得来的?以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
请教老师,51微控制器在12M晶振,C语言程式设计时,延时函式120次=1ms(书本上是这样的,不懂),是怎样得来的?
C的话其实时间没有办法完全定性地计算的
如果非得精确的话只能使用定时器了,或者汇编的也行
不过时间要求精度不是很高的话使用下面的程式码就行了
当时使用示波器把时间完全调准的,65536ms范围内还是比较准的,已经可以满足通常的要求了:
#include "reg51.h" 标头档案包含
巨集定义
#define uint unsigned int
#define uchar unsigned char
void delay(uint ms) 毫秒级延时(AT89C52 @ 11.0592MHz)
{
uint ti;
while(ms--)
{
for(ti=0;ti<112;ti++){}112
}
}
呼叫方式如下:
delay(400); 开机延时400ms
够详细了吧?!
C语言程式设计时,延时函式125次=1ms(书本上是这样的,不懂),是怎样得来的?
我想是通过程式的汇编程式码再结合机器指令的执行周期分析出具体延时多长时间的吧。
微控制器外接12M的晶振,1ms的基准延时函式用C语言怎么写?
/*-----------------------------------------------
名称:delay1ms()
功能:延时1ms
晶振:12MHz 机器周期1us
时间计算:t=2+1+995+2=1000us =1.000ms
-----------------------------------------------*/
void delay1ms(void) 延时1ms子程式
{
unsigned char i,j;
for(i=5;i>0;i--)
for(j=98;j>0;j--);
}
对应汇编
/*-----------------------------------------------
名称:delay1ms
功能:延时1ms
晶振:12MHz 机器周期1us
时间计算:t=2+1+995+2=1000us =1.000ms
-----------------------------------------------*/
LCALL DELAY1MS ;2us
DELAY1MS:
MOV R6,#5 ;1us
DEL1: MOV R7,#98 ;1us
DJNZ R7,$ ;2*98=196us
DJNZ R6,DEL1 ;2us DLE1执行完所用时间(1+196+2)*5=995us。
RET ;2us
51微控制器求10微秒的延时函式 C语言(晶振11.0592MHz)
1、下面几个是微控制器的延时程式(包括asm和C程式,都是我在学微控制器的过程中用到的),在微控制器延时程式中应考虑所使用的晶振的频率,在51系列的微控制器中我们常用的是11.0592MHz和12.0000MHz的晶振,而在AVR微控制器上常用的有8.000MHz和4.000MH的晶振所以在网上查询程式时如果涉及到精确延时则应该注意晶振的频率是多大。
2、软体延时:(asm)
晶振12MHZ,延时1秒
程式如下:
DELAY:MOV 72H,#100
LOOP3:MOV 71H,#100
LOOP1:MOV 70H,#47
LOOP0:DJNZ 70H,LOOP0
NOP
DJNZ 71H,LOOP1
MOV 70H,#46
LOOP2:DJNZ 70H,LOOP2
NOP
DJNZ 72H,LOOP3
MOV 70H,#48
LOOP4:DJNZ 70H,LOOP4
定时器延时:
晶振12MHZ,延时1s,定时器0工作方式为方式1
DELAY1:MOV R7,#0AH ;;晶振12MHZ,延时0.5秒
AJMP DELAY
DELAY2:MOV R7,#14H ;;晶振12MHZ,延时1秒
DELAY:CLR EX0
MOV TMOD,#01H ;设定定时器的工作方式为方式1
MOV TL0,#0B0H ;给定时器设定计数初始值
MOV TH0,#3CH
SETB TR0 ;开启定时器
HERE:JBC TF0,NEXT1
SJMP HERE
NEXT1:MOV TL0,#0B0H
MOV TH0,#3CH
DJNZ R7,HERE
CLR TR0 ;定时器要软体清零
SETB EX0
RET
3、C语言延时程式:
10ms延时子程式(12MHZ)
void delay10ms(void)
{
unsigned char i,j,k;
for(i=5;i>0;i--)
for(j=4;j>0;j--)
for(k=248;k>0;k--);
}
1s延时子程式(12MHZ)
void delay1s(void)
{
unsigned char h,i,j,k;
for(h=5;h>0;h--)
for(i=4;i>0;i--)
for(j=116;j>0;j--)
for(k=214;k>0;k--);
}
200ms延时子程式(12MHZ)
void delay200ms(void)
{
unsigned char i,j,k;
for(i=5;i>0;i--)
for(j=132;j>0;j--)
for(k=150;k>0;k--);
}
500ms延时子程式程式: (12MHZ)
void delay500ms(void)
{
unsigned char i,j,k;
for(i=15;i>0;i--)
for(j=202;j>0;j--)
for(k=81;k>0;k--);
}
51微控制器延时1us,12M晶振怎么用c语言写
51微控制器12M晶振延时1us,只需要执行一个NOP就是了。C语言中也是如此。
#include
#include
main()
{
_nop_(); 延时1us
while(1);
}
微控制器C语言程式设计关于延时函式
微控制器的C语言关于延时函式主要有两种
一种是用for回圈,通过微控制器执行空指令达到延时的目的
如:
for(i=0;i<100;i++)
{
;
}
这个简单的语句会执行100次空指令
每一次指令的时间可以大概确定
因此这个是最简单的延时函式
第二种是通过定时器的方式来实现
定时器是通过对微控制器的晶振进行计数
然后在定时器中断服务函式里面实现定时时间的计算及设定
51微控制器的定时器0中断服务函式为
void time0() interrupt 1
{
...
}
微控制器外接24M的晶振,1ms的基准延时函式用C语言怎么写?
定时器T0 工作方式1 晶振频率24MHz
定时器最大定时时间(us):32768
定时器最小定时时间(us):0.5
【1ms精确定时C51程式码】
void T0_init(void) 定时器初始化
{
TMOD |= 0x01;
TH0 = 0xf8; 设定定时器计数初值,定时1000us
TL0 = 0x33;
IE |= 0x82; 开启总中断
TR0 = 1; 启动定时器
}
void T0_intservice(void) interrupt 1 定时器中断服务
{
TH0 = 0xf8; 重灌载定时器计数初值
TL0 = 0x33;
这里可以插入其他处理程式,不会影响定时器工作
}
请问AT89S52微控制器用C语言程式设计时延时函式的延时时长怎么计算!(系统时钟为12M)!
时钟周期T1=1/12M
机器周期T2=T1*12
指令周期T3:1~4个机器周期
要算的话只能是看有几个指令了,然后大致预测一下。。。当然以实际为准。用keil测比较好
51微控制器怎样延时时间更长?晶振12M
汇编的
MOV R0,#20 ;将立即数200传递到工作暂存器R0中
D6: MOV R1,#255 ;将立即数200传递到工作暂存器R1中
D7: DJNZ R1,D7 ;检测R1中的数值是否为0,不为0则R1减1并转移到标号D9,为0则顺序执行
DJNZ R0,D6 ;检测R0值是否为0,不为0则R0减1并转移到标号D8,为0则顺序执行
51微控制器定时器方式1,晶振33hz,延时1秒,怎么用c语言程式设计
33MHz 一个定时周期延时50ms
#include
void InitTimer0(void)
{
TMOD = 0x01;
TH0 = 0x0CA;
TL0 = 0x4A;
EA = 1;
ET0 = 1;
TR0 = 1;
}
void main(void)
{
InitTimer0();
}
void Timer0Interrupt(void) interrupt 1
{
TH0 = 0x0CA;
TL0 = 0x4A;
add your code here!
}
分页:123
c语言1ms延时程序,请教老师,51微控制器在12M晶振,C语言程式设计时,延时函式120次=1ms(书本上是这样的,不懂),是怎样得来的?...相关推荐
- c语言单片机按键程序,通过键盘往单片机中输入任意数字的C语言程序?
满意答案 ty7044140 推荐于 2018.03.29 采纳率:55% 等级:13 已帮助:8716人 我这有个AVR的矩阵键盘的识别程序.其中PORTA就相当于51里的P0一样的端口的表示 ...
- 基于c语言c8051f系列微控制器原理与应用,基于C语言C8051F系列微控制器原理与应用...
第1章 微控制器的原理 1.1 微控制器与计算机的关系 1.2 微控制器系统简介 1.3 微控制器的发展 1.4 8位机发展的3次技术飞跃 第2章 C8051 F系列单片机结构 2.1 C8051F系 ...
- 51单片机电路原理图_单片机晶振的必要性
单片机工作时,是一条一条地从ROM中取指令,然后一步一步地执行.单片机访问一次存储器的时间,称之为一个机器周期,这是一个时间基准.一个机器周期包括12个时钟周期.如果一个单片机选择了12MHZ晶振,它 ...
- 延时1us程序12mhz晶振c语言,51单片机 Keil C 延时程序的简单(晶振12MHz,一个机器周期1us.)...
一. 500ms延时子程序 void delay500ms(void) { unsignedchari,j,k;for(i=15;i>0;i--)for(j=202;j>0;j--)for ...
- python微控制器编程从零开始-单片机可以使用Python语言来控制了!
告诉广大Python爱好者一个好消息,单片机可以使用Python语言来控制了. Arudino虽然在开源硬件领域非常流行,但是对于不懂C/C++编程语言的玩家来说,还是需要一段学习时间. Damien ...
- 51单片机使用12M晶振串口乱码问题
前几天,画了块51的板子,晶振用的是12MHz的,调试过程发现串口打印输出一直乱码,用的是STC-ISP(V6.86R)这个工具软件里面的波特率计算器来直接计算波特率,配置如下图所示: 就是这个配置导 ...
- 延时1us程序12mhz晶振c语言,51单片机12M晶振的延时程序
这是本人慢慢调出来的参数,有误差是必须的,除非用汇编才会精确,后续我会更新修改,尽量精确. 调试环境:Keil V4.02本文引用地址:http://www.eepw.com.cn/article/2 ...
- c语言规定对程序中所用的变量必须,【判断题】C语言程序中要用到的变量必须先定义,然后再使用...
[判断题]C语言程序中要用到的变量必须先定义,然后再使用 更多相关问题 在进行自动选择属性时,必须设立两个对象,其中决定执行什么风格的搜索的是下面的哪一个( ). 保湿化妆品既可向皮肤补充水分,又可防 ...
- c语言小车倒车程序,基于单片机的汽车倒车系统设计(超声测距报警)(C语言程序)...
基于单片机的汽车倒车系统设计(超声测距报警)(C语言程序)(任务书,毕业论文22000字) 摘要 本设计是以单片机技术为基础,实现对前方物体距离的测量.根据超声波指向性强,能量消耗慢,在介质中传播距离 ...
最新文章
- 【新星计划】Linux命令行相关指令汇总
- 在soa工程中使用dubbo的步骤
- C学习笔记-基础数据结构与算法
- ios 中的tintColor
- 微信被指监听用户,腾讯回应;谷歌意外推送 Android 11 Beta 更新;Linux 5.7 发布 | 极客头条...
- mysql导出_mysql数据库导入导出
- 10款网站后台管理系统模板_bootstrap网站后台模板_html后台模板下载(五)
- odb 使用指南(二)Hello World
- 关于清除丢失贴图与IES文件
- 移动数据安全防护措施有哪些
- 服务器appcrash的问题怎么修复,ghost win7出现appcrash的问题怎么修复
- 惠普成长史:没有惠普,就没有蓬勃发展的硅谷
- 使用python做迷宫
- 数学方法002 | 利用恒等式证明不等式
- 记一次对Pixiv日榜的爬虫
- 模拟器Active Sync同步使用pc网络
- win10下如何使用的debug
- 过年了!!年前最后一更,2017年总结
- Springboot集成rabbitmq实现延时队列
- GLFore便携式声学成像仪G100功能
热门文章
- 时分秒倒计时的js实现
- 阿里云邮箱域名解析设置要求
- 哎,为了在vs上开发或调试linux,各种跪啊。而且后面还有更多……
- Android api升级到31 导致的兼容性问题
- android edittext底线,android – 更改edittext的底线颜色
- 如何解决谷歌浏览器网页不能复制与右键点击问题
- 转:接班人都是“剩出来”的,选接班人9条必用原则
- Linux加密文件系统eCryptfs介绍
- MTK交换机PHY 方案Airoha达发(econet)概要
- ‘git clone‘ failed with status 128