登录
首页 单片机论坛
回帖 发帖
正文

主题:有个单片机的问题要请教

点击:1772 回复:3

有一个单片机延时100秒的程式,我不知那里有错:
                              DELAY:   MOV   R7,  #5
                                     L1:  MOV   R6,   #5
                                     L2:   DJNZ  R6,   L2
                                            DJNZ  R7 ,  L1
                                        RET
           请大家帮我看一下表情
04-05-26 21:25

sgx

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++)
{;}
          }
}
04-05-27 10:21
多谢你呀,我是初学的,很多不明,以后多多指教,这个程式我是用12M的来写,是不是一样的呀。
04-05-27 12:16

sgx

朋友,多多看书吧!!!
04-05-27 13:15

工控新闻

更多新闻资讯