51单片机精确延时源程序
一、晶振为
11.0592MHz,12T
1、延时
1ms:
(1)汇编语言:
代码如下:
DELAY1MS: ;误差 -0.651041666667us
MOV R6,#04H
DL0:
MOV R5,#71H
DJNZ R5,$
DJNZ R6,DL0
RET
(2)C语言:
void delay1ms(void) //误差 -0.651041666667us
{
unsigned char a,b;
for(b=4;b>0;b--)
for(a=113;a>0;a--);
}
2、延时
10MS:
(1)汇编语言:
DELAY10MS: ;误差 -0.000000000002us
MOV R6,#97H
DL0:
MOV R5,#1DH
DJNZ R5,$
DJNZ R6,DL0
RET
(2)C语言:
void delay10ms(void) //误差 -0.000000000002us
{
unsigned char a,b;
for(b=151;b>0;b--)
for(a=29;a>0;a--);
}
3、延时
100MS:
(1)汇编语言:
DELAY100MS: ;误差 -0.000000000021us
MOV R7,#23H
DL1:
MOV R6,#0AH
I
棋影淘宝店:QQ:149034219
DL0:
MOV R5,#82H
DJNZ R5,$
DJNZ R6,DL0
DJNZ R7,DL1
RET
(2)C语言:
void delay100ms(void) //误差 -0.000000000021us
{
unsigned char a,b,c;
for(c=35;c>0;c--)
for(b=10;b>0;b--)
for(a=130;a>0;a--);
}
4、延时
1S:
(1)汇编语言:
DELAY1S: ;误差 -0.00000000024us
MOV R7,#5FH
DL1:
MOV R6,#1AH
DL0:
MOV R5,#0B9H
DJNZ R5,$
DJNZ R6,DL0
DJNZ R7,DL1
RET
(2)C语言:
void delay1s(void) //误差 -0.00000000024us
{
unsigned char a,b,c;
for(c=95;c>0;c--)
for(b=26;b>0;b--)
for(a=185;a>0;a--);
}
5、延时
10S:
(1)汇编语言:
DELAY10S: ;误差 -0.000000003101us
MOV R7,#0B3H
DL1:
MOV R6,#83H
DL0:
MOV R5,#0C3H
DJNZ R5,$
DJNZ R6,DL0
DJNZ R7,DL1
NOP
II
棋影淘宝店:QQ:149034219
RET
(2)C语言:
void delay10s(void) //误差 -0.000000003101us
{
unsigned char a,b,c;
for(c=179;c>0;c--)
for(b=131;b>0;b--)
for(a=195;a>0;a--);
_nop_(); //if Keil,require use intrins.h
}
6、延时
100S:
(1)汇编语言:
DELAY100S: ;误差 -0.000000016117us
MOV R4,#72H
DL2:
MOV R7,#0DDH
DL1:
MOV R6,#0D7H
DL0:
MOV R5,#07H
DJNZ R5,$
DJNZ R6,DL0
DJNZ R7,DL1
DJNZ R4,DL2
NOP
RET
(2)C语言:
void delay100s(void) //误差 -0.000000016117us
{
unsigned char a,b,c,d;
for(d=114;d>0;d--)
for(c=221;c>0;c--)
for(b=215;b>0;b--)
for(a=7;a>0;a--);
_nop_(); //if Keil,require use intrins.h
}
二、晶振为
12MHz,12T
1、延时
1MS:
(1)汇编语言:
DELAY1MS: ;误差 0us
MOV R6,#0C7H
DL0:
MOV R5,#01H
DJNZ R5,$
DJNZ R6,DL0
III
棋影淘宝店:QQ:149034219
RET
(2)C语言:
void delay1ms(void) //误差 0us
{
unsigned char a,b;
for(b=199;b>0;b--)
for(a=1;a>0;a--);
}
2、延时
10MS:
(1)汇编语言:
DELAY10MS: ;误差 0us
MOV R7,#05H
DL1:
MOV R6,#04H
DL0:
MOV R5,#0F8H
DJNZ R5,$
D
JNZ R6,DL0
DJNZ R7,DL1
RET
(2)C语言:
void delay10ms(void) //误差 0us
{
unsigned char a,b,c;
for(c=5;c>0;c--)
for(b=4;b>0;b--)
for(a=248;a>0;a--);
}
3、延时
100MS:
(1)汇编语言:
DELAY100MS: ;误差 0us
MOV R7,#07H
DL1:
MOV R6,#4AH
DL0:
MOV R5,#5FH
DJNZ R5,$
DJNZ R6,DL0
DJNZ R7,DL1
RET
(2)C语言:
void delay100ms(void) //误差 0us
{
unsigned char a,b,c;
for(c=7;c>0;c--)
for(b=74;b>0;b--)
IV
棋影淘宝店:QQ:149034219
for(a=95;a>0;a--);
}
4、延时
1S:
(1)汇编语言:
DELAY1S: ;误差 0us
MOV R7,#2EH
DL1:
MOV R6,#98H
DL0:
MOV R5,#46H
DJNZ R5,$
DJNZ R6,DL0
DJNZ R7,DL1
NOP
RET
(2)C语言:
void delay1s(void) //误差 0us
{
unsigned char a,b,c;
for(c=46;c>0;c--)
for(b=152;b>0;b--)
for(a=70;a>0;a--);
_nop_(); //if Keil,require use intrins.h
}
5、延时
10S:
(1)汇编语言:
DELAY10S: ;误差 0us
MOV R7,#0BDH
DL1:
MOV R6,#0BFH
DL0:
MOV R5,#89H
DJNZ R5,$
DJNZ R6,DL0
DJNZ R7,DL1
MOV R5,#02H
DJNZ R5,$
RET
(2)C语言:
void delay10s(void) //误差 0us
{
unsigned char a,b,c,n;
for(c=189;c>0;c--)
for(b=191;b>0;b--)
for(a=137;a>0;a--);
for(n=2;n>0;n--);
V
棋影淘宝店:QQ:149034219
}
6、延时
100S:
(1)汇编语言:
DELAY100S: ;误差 0us
MOV R4,#1EH
DL2:
MOV R7,#0E7H
DL1:
MOV R6,#0E5H
DL0:
MOV R5,#1EH
DJNZ R5,$
DJNZ R6,DL0
DJNZ R7,DL1
DJNZ R4,DL2
MOV R5,#02H
DJNZ R5,$
RET
(2)C语言:
void delay100s(void) //误差 0us
{
unsigned char a,b,c,d,n;
for(d=30;d>0;d--)
for(c=231;c>0;c--)
for(b=229;b>0;b--)
for(a=30;a>0;a--);
for(n=2;n>0;n--);
}
VI