每一遍,如果是1us,才能是延时约1s。但是,晶振是12MHz,一条汇编的指令就至少是1us,C语言的语句,就要更多。
创新互联建站是一家集网站建设,万安企业网站建设,万安品牌网站建设,网站定制,万安网站建设报价,网络营销,网络优化,万安网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
记下当前时间T1,然后按F10(不进入子函数)调试,再记录当前时间T2,则延时=T2-T1。多试几个A,差不多调到1s就够了。我一般都这么调。你要想明白其中原理,想自己算的话,你就看看delay的汇编代码段自己算吧。
void main(){ TMOD=0x00;TH1=0x3c;TL1=0xb0;EA=1;ET1=1;TR1=1;while(1){ if(i==20){ i=0;//下面写你要处理的的其他程序,你只要了定时1s。
然后,进行宏定义,代码如图所示。然后声明P1口,如下图所示。最后,将延时语句全部添加进去,代码按照图中所示的直接敲入即可。最后,点击编译,生成HEX文件就可以了,这样51单片机延时语句就完成了。
51单片机12M晶振延时1us,只需要执行一个NOP就是了。C语言中也是如此。
这样初始化就没问题了,另外要实现1S延时,需要在中断函数里加个变量自增,因为我定义的是50ms中断一次,那么这个变量值自增到20后就代表1s时间到,清零这个变量之后方可写你的服务程序。希望我的回答能帮助到你。
51单片机晶振12MHz软件延时1秒程序:DELAY:MOV R7,#500 D1:MOV R6,#250 D2:NOP NOPNOPNOPNOPNOPDJNZ R6,D2 DJNZ R7,D1 .以上程序为何能定时1秒? 请阅附件。
应该是 12MHz 吧?单片机内部,计时的单位是《机器周期T》。
12MHz频率,延迟1us,是不可能的。就是调用函数、什么也不干、马上就返回,也不止 4us。
执行空语句执行124次,大概就能延时到1秒.不是很准的.经验值。
先打开我们熟悉的单片机c51编程软件——keil,先把主方法写好。然后,我们要定义两个变量。接着,设定好定时器的工作方式。设置中断发生的机制。最后,我们要加进这几行代码进行初值的重装。
j=t*100;这一句了,如果把这一句给删了,那么你的程序就是延时100ms的,delay(10)就是延时一秒。
要延时1s就是要执行1000000个机器周期,我们要进行3层循环,因此记每层循环要执行100次,但是这样会使延时大于1000000个机器周期。
调用延时程序期间,单片机什么事都不做,一直占着单片机 使用定时器中断定时,单片机还可以做其他事,比如:扫面键盘、调用显示程序。
标题名称:51c语言延时函数1s 延时程序c语言
浏览地址:/article18/dsjeedp.html
成都网站建设公司_创新互联,为您提供App设计、全网营销推广、移动网站建设、网站维护、动态网站、定制网站
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联