×
嵌入式开发 > 详情

新手常用单片机延时程序

发布时间:2020-07-10 发布时间:
|

单片机延时程序(适合初学者)

下面几个是单片机延时程序(包括asm和C程序,都是我在学单片机的过程中用到的),在单片机延时程序中应考虑所使用的晶振的频率,在51系列的单片机中我们常用的是11.0592MHz和12.0000MHz的晶振,而在AVR单片机上常用的有8.000MHz和4.000MH的晶振所以在网上查找程序时如果涉及到精确延时则应该注意晶振的频率是多大。

软件延时:(asm)

晶振12MHZ,延时1秒

程序如下:

DELAY:MOV 72H,#100

LOOP3:MOV 71H,#100

LOOP1:MOV 70H,#47

LOOP0JNZ 70H,LOOP0

NOP

DJNZ 71H,LOOP1

MOV 70H,#46

LOOP2JNZ 70H,LOOP2

NOP

DJNZ 72H,LOOP3

MOV 70H,#48

LOOP4JNZ 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

C语言延时程序:

void delay_18B20(unsigned int i)

{

while(i--);

}

void Delay10us( ) //12mhz

{

_NOP_( );

_NOP_( );

_NOP_( );

_NOP_( );

_NOP_( );

_NOP_( );

}

/*****************11us延时函数*************************/

//

void delay(uint t)

{

for (;t>0;t--);

}

1ms延时子程序(12MHZ)

void delay1ms(uint p)//12mhz

{ uchar i,j;

for(i=0;i

{

for(j=0;j124;j++)

{;}

}

}

函数功能:延时20ms的子程序



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
详解基于CAN总线的汽车仪表系统设计--CAN总线原理分析