ddgw.net
当前位置:首页 >> C51单片机延时的目的 >>

C51单片机延时的目的

/*------------------------------------------------ us延时函数,其值的范围是 0~255 晶振12m, 精确延时请使用汇编,大致延时 长度如下 t=t * 2+5 us ------------------------------------------------*/ void delayus (unsigned char t) // 延迟函数 { while(--t); } void main() // 主程序 while(1) { // ---------- delayus(40); // 调用 延迟函数 将延迟 40*2+5 = 85us // ---------- }

j=t*100;这一句了,如果把这一句给删了,那么你的程序就是延时100ms的,delay(10)就是延时一秒.为什么会延时一秒,那就要看你单片机的晶振是多大,以及程序的执行速度有关了,可以用仿真试试看

问题出现编译器把计算后的值直接送到p1了,a值没有更新 你程序的还有个问题在于更新p1口后需要延时至少0.5秒,否则你是不可能看到led有闪烁的 修改办法,2种 1把a声明成全局变量 2把while全改成for

你这个成应该是可以通过设定XY来改变延时的长短的,你试一下生成一个.hex文件用proteus仿真一下,应该就看得出了.

给你说个简单的void delay(int a){ while(a--);}用上的时候就直接在delay的括号里加时间就行,比如 delay(5000);这是5000微妙.

延时目的:mcu本身只做计算,工作时需要外部设备辅助,延时就是让外设和单片机时序同步、等待外设响应结束;举例:(单片机:老板;外设:员工;) 老板让员工去买东西:买东西是需要时间,假设只要1min,但是这1min做不了 其他事,只能干等着!假设需要30min,可以趁着30min开个会,也可以干等着!所以,单片机可以按需延时.

delay函数是一般自己定义的一个延时函数.c语言定义延时函数主要通过无意义指令的执行来达到延时的目的.下面给出一个经典的延时函数.// 定义一个延时xms毫秒的延时函数 void delay(unsigned int xms) // xms代表需要延时的毫秒数 { unsigned int x,y; for(x=xms;x>0;x--) for(y=110;y>0;y--); }

软件延时都是不精确延时,精确延时需要用到定时器中断.软件延时的计算可以反汇编,汇编指令有对应的执行机器周期,机器周期=时钟周期*12,时钟周期就是晶振频率的倒数.这些都可以通过“单片机小精灵”这个软件实现,本来就不是精确延时,没必要深究,而且不同的51单片机运行速度不一样,延时的时间也不一样.

最简单的软件延时:unsigned char i;for(i=0;i 评论0 0 0

软件延时占用的是单片机的时间资源,硬件延时占用的是单片机有限的硬件资源.软件延时的优点是灵活性高,延时时间的长短的调整几乎不受任何限制,而且随时随处只要需要都可以加入延时,一条控操作指令也可以做延时,缺点是延时精度低.硬件延时的优点是延时精度高,缺点是改变延时间受到硬件设置的限制,使用不够灵活.

网站首页 | 网站地图
All rights reserved Powered by www.ddgw.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com