51单片机C语言精密延时程序
程序如下:
void delayms(unsigned char t) {
unsigned char j; unsigned char i; do {
j=3; do {
i=165; do { --i; } while(i!=0);
--j;
}
while(j!=0); --t; }
while(t!=0); }
该程序延时时基为1ms,所以最大延时时间是255ms 下面是反编译的汇编程序
C:0x0031 7E03 MOV R6,#0x03
C:0x0033 7DA5 MOV R5,#0xA5
C:0x0035 DDFE DJNZ R5,C:0035
C:0x0037 DEFA DJNZ R6,C:0033
C:0x0039 DFF6 DJNZ R7,delayms(C:0031)
C:0x003B 22 RET 延时时间计算公式如下:
((R5*2 + 2+1)*R6+2+1)R7
假设R7=1,上式为(165*2+3)*3+2+1 =1002us!!!!!
以上程序使用的晶振是12MHz,如果使用的是其他频率的晶振只需计算出1ms的机器周期
数,代入5*2 + 2+1)*R6+2+1,选择合适的R5,R6即I,j的值就行了。
51单片机C语言精确延时程序(超级准)
51单片机C语言精密延时程序程序如下:voiddelayms(unsignedchart){unsignedcharj;unsignedchari;do{j=3;do{i=165;do
推荐度:





点击下载文档文档为doc格式