从品牌网站建设到网络营销策划,从策略到执行的一站式服务
每一遍,如果是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个机器周期。
调用延时程序期间,单片机什么事都不做,一直占着单片机 使用定时器中断定时,单片机还可以做其他事,比如:扫面键盘、调用显示程序。
成都网站建设公司地址:成都市青羊区太升南路288号锦天国际A座10层 建设咨询028-86922220
成都快上网科技有限公司-四川网站建设设计公司 | 蜀ICP备19037934号 Copyright 2020,ALL Rights Reserved cdkjz.cn | 成都网站建设 | © Copyright 2020版权所有.
专家团队为您提供成都网站建设,成都网站设计,成都品牌网站设计,成都营销型网站制作等服务,成都建网站就找快上网! | 成都网站建设哪家好? | 网站建设地图