您现在所在的是:

单片机论坛

回帖:3个,阅读:1765 [上一页] [1] [下一页]
1076
chan77
文章数:26
年度积分:50
历史总积分:1076
注册时间:2004/4/27
发站内信
发表于:2004/5/26 21:25:00
#0楼
有一个单片机延时100秒的程式,我不知那里有错:

                              DELAY:   MOV   R7,  #5
                                     L1:  MOV   R6,   #5
                                     L2:   DJNZ  R6,   L2
                                            DJNZ  R7 ,  L1
                                        RET
           请大家帮我看一下表情
2509
sgx
文章数:474
年度积分:50
历史总积分:2509
注册时间:2001/11/22
发站内信
发表于:2004/5/27 10:21:00
#1楼
100秒是长延时,要四重循环才可以,给你一个6M XT,10S的延时程序
DEL: MOV R5,#100
DEL0:MOV R6,#200
DEL1:MOV R7,#248
DEL2:DJNZ R7,DEL2
       DJNZ  R6,DEL1
       DJNZ  R5,DEL0
       RET
程序再加重循环就可以改成100秒的了,或连续调用10本程序也可

用C语言写的话,时间不好估计,你在调试时通过改变实参的值可以更改时间的长度,如果将RAM不当数的话,可以更改数据类型.时间可延得更长,不过我提醒你,长时间延时最好别这样做,利用中断吧.如100ms中断一次,计数器Rn加1,再检测Rn到某值时R(n+1)再加1计算一下就可以了.
void delay(int x)
{
uchar j;
while(x--){
for(j=0;j<150;j++)
{;}
          }
}
骐骥一跃,不能十步;
驽马十驾,功在不舍
1076
chan77
文章数:26
年度积分:50
历史总积分:1076
注册时间:2004/4/27
发站内信
发表于:2004/5/27 12:16:00
#2楼
多谢你呀,我是初学的,很多不明,以后多多指教,这个程式我是用12M的来写,是不是一样的呀。
2509
sgx
文章数:474
年度积分:50
历史总积分:2509
注册时间:2001/11/22
发站内信
发表于:2004/5/27 13:15:00
#3楼
朋友,多多看书吧!!!
骐骥一跃,不能十步;
驽马十驾,功在不舍

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2025 Gkong.com, All Rights Reserved

46.8003