单片机延时0.5秒的程序
赫政翁1573C51单片机怎样实现延时控制 -
后逸奋15683339341 ______ 最简单的软件延时: unsigned char i; for(i=0;i<100;i++) { i++; } 可改变i的值以达到延迟的时间. 还有就是用定时器延时: void Delay(unsigned char t) { do { TH0 = 0xDC;//设置定时器初值(定时10ms) TL0 = 0x00; TR0 = 1; //启动定时器 while ( !TF0 ); //等待定时器溢出 TR0 = 0; //停止定时器 TF0 = 0; //清除溢出标志 } while ( --t != 0 ); //循环t次 }
赫政翁1573编写一段延时1秒的程序(fosc=6MHz)学习单片机的~ -
后逸奋15683339341 ______ 定时器法: delay: mov tmod,#01 mov th0,#3ch mov tl0,#0b8h;设置参数使每100ms中断一次. clr ea clr tf0 mov r7,#10 setb tr0 d: jnb tf0,$ clr tf0 djnz r7,d ret
赫政翁1573怎样用51单片机实现小时级延时 -
后逸奋15683339341 ______ 51单片机的机器周期是晶振的12分频的倒数.所以你24Mhz的机器周期是T=12/12M=0.5us. 假设你要定时的数是M,则初值等于M/机器周期(表示执行多少个机器周期). 若初值小于65536 TH0=(65536-初值)%256 TL0=(65536-初值)/256 ...
赫政翁1573简单的单片机C51语言延时程序 -
后逸奋15683339341 ______ 你第二个for语句后还差个分号吧.个人建议在初学的时候还是不要省的太多了,有时自己都看不懂了.延时函数简单点说就是不断在运行你的for函数,一共运行200*i次,而第二个for函数里面有没有什么语句,这样的话CPU这段时间就什么都不处理,就在这浪费时间,也就是起到延时的效果了.
赫政翁1573找一个单片机汇编语言编写的延时1ms的子程序 -
后逸奋15683339341 ______ 多简单的小程序呀: TIME1MS: MOV R6, #2 TIME1: ;延时498uS MOV R7, #248 DJNZ R7, $ ;R7的为0时,程序向下运行,否则继续减 ; DJNZ R6, TIME1 ;加上此命令后,每个小周期时间为500uS ;运行两周为1MS,再加上最前面的MOV R6那条指令,就是1.002MS RET 此程序实现的是1.002MS的定时,当然这当中不算主程序调用此延时程序时现场保护的时间,即压栈和出栈的时间
赫政翁1573void delay(uchar i) { while(i - - ); } 单片机延时程序? -
后逸奋15683339341 ______ 是谁说的这个程序大约延时10微秒,这是带有形参 i 的,所带 i 的值不同,延时不同,是无法确定时间的.就算是 i 为1,那延时也不是10微秒,调用子程序和从子程序返回也需要时间的,对于传统的51单片机,就需要10微秒以上了.
赫政翁1573单片机的朋友请进!请问,最简单的延时程序是怎么计算的? -
后逸奋15683339341 ______ 精确计算如下:DELAY: MOV R5,#20 ---1T D1: MOV R6,#20--1T D2: MOV R7,#248 -1T DJNZ R7,$ ----2T,(2) * 248 = 496 DJNZ R6,D2----2T,(1 + 496 + 2) * 20 = 9980 DJNZ R5,D1----2T,(1 + 9980 + 2) * 20 = 199660 RET-------2T, 1 + 199660 + 2 = 1996603 总共,耗用199660 T.时间,关键是要取决于晶振频率.当晶振频率=12MHz,则有 T = 1us.
赫政翁1573单片机50ms延时程序 -
后逸奋15683339341 ______ 如果要求计时很准确,最好还是用定时器.你这个程序虽然计算得比较准确了,可是有两点还没有考虑进来,一点是执行CALL指令调子程序的时间,一点是执行RET指令返回的时间,这两条指令各需要8个机器周期,所以,需要从上面的程序是减去16个机器周期的.所以,这种利用循环指令延时的时间是不太准确的,不过,用这种程序延时也是不要求十分精确的,没有必要,要准确就用定时器好了.
赫政翁1573怎么用C语言做单片机的精确延时 -
后逸奋15683339341 ______ 在单片机应用中,经常会遇到需要短时间延时的情况,一般都是几十到几百μs,并且需要很高的精度(比如用单片机驱动DS18B20时,误差容许的范围在十几μs以内,不然很容易出错);而某些情况下延时时间较长,用计时器往往有点小题大...
赫政翁1573C语言单片机怎么调用延时指令???? -
后逸奋15683339341 ______ void delay( int time) { int x,y; for(x=0;x<120;x++) for(y=time;y>0;y--) ; } time表示延时时间,如果晶振是12MHZ的话,time=1表示延时1毫秒