怎么把单片机的数字电子钟延时1s

怎么把单片机的数字电子钟延时1s,第1张

大哥,一般都不像你这样写的呀!

void delay10ms(int x)

{ int i,j; // 声明变量

for (i=1;i<x;i++) // 执行x次,延迟X10ms

for (j=1;j<1200;j++);// 执行120次,延迟10ms

} // delay1ms()函数结束

如果你的延时精度要求不高,调用delay10ms(100)约1s就可以了呀。如果你的延时要求精度高的话,用51内部的定时器

DELAY1S:

    MOV TMOD,#01H

    MOV TH0,#HIGH(65536-50000)

    MOV TL0,#LOW(65536-50000)

    SETB TR0

    MOV R2,#20

LOOP:

    JNB TF0,$

    CLR TF0

    CLR TR0

    MOV TH0,#HIGH(65536-50000)

    MOV TL0,#LOW(65536-50000)    

    SETB TR0

    DJNZ R2,LOOP

    RET

如果单纯延时,可以用实验的办法,在keilc51里面仿真

void Delay1S(char n)

{

char i,j;

n=n4;

for(;n;n--)

{

for(i=6;i;i++)

{

for(j=7;j;j++) // 一个循环约为1mS

;

}

}

}

看编译后的汇编:

C:0x0805 7D01 MOV R5,#0x06;j=1,1时钟

C:0x0807 0D INC R5;j++,1时钟

C:0x0808 ED MOV A,R5;A=R5,1时钟

C:0x0809 70FC JNZ C:0807;A=0,2时钟

循环共249次,一个循环共需4个时钟周期,加上第一个赋值语句1周期。

共997uS,加上外层循环,一次约1mS,

如果要精确的延时建议采用中断:

#include "reg51h"

//timer init

void initTimer(void)

{

TMOD=0x2;

TH0=0x6;

TL0=0x6;

}

int T250uS;

char T_mark;

//timer0/counter0 interrupt

void timer0(void) interrupt 1

{

//add your code here

T250uS++;

T_mark=0;

}

void Delay1S(char n)

{

for(;n;n--)

for(T250uS=0;T250uS<4000;)

{

T_mark=1;

while(T_mark);

}

}

//the main fun

void main(void)

{

initTimer();

TR0=1;

ET0=1;

EA=1;

while(1)

{

Delay1S(1);

}

}

你好!

你要先写一个延时基准(50毫秒),在延时1秒就是做20次基准,2秒就是40个基准!

也可以用定时器,定时50毫秒,定时器中断计数,计数20就是1秒,计数40次就是2秒(推荐用定时器!)

仅代表个人观点,不喜勿喷,谢谢。

比较常用的有两种

一种比较简单的就是粗略的软件延时;

如:

void delay_1s(void)

{

unsigned char i,j;

for(i=0;i<128;i++)

for(j=0;j<254;j++);

}

这种通过调整i和j的最终值来确定延时时间,没有办法精确计算的。

另一种,做比较精确的延时,使用89C51的定时器来做

当AT89C51使用12M的晶体时,机器周期刚好是1us用定时器非常好计算,非常精确,一月偏一秒都可以做到,加入偏查校正可以做到更精确。这个一般书上都会有的,查下书咯。这里说不清楚。一下子也不记得了,现在AT89C51已经停产了,代替他的是89S51 4K FLASH,建议用89S52 8K FLASH,

以上就是关于怎么把单片机的数字电子钟延时1s全部的内容,包括:怎么把单片机的数字电子钟延时1s、MCS-51单片机的编程题:已知系统晶振频率为12MHZ,采用定时器T0的方式1,请编程实现1s的延时。、51单片机用汇编语言设计1S延时子程序,晶振为12MHz。 (麻烦附上详细计算过程以及详细说明,等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9391449.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存