标题: 51单片机延时程序如何改才能应用于15F104W [打印本页]

作者: 新乡家电维修    时间: 2018-6-10 10:19
标题: 51单片机延时程序如何改才能应用于15F104W
写了个51单片机解码程序在AT89C51和STC89C52RC运行都正确,但是写到15F104W上就不正确了,延时与内部晶振频率都改了,还是不行
下面是AT89C51晶振12M,延时540us程序:
DELAY540US:                        
       MOV    R7, #180
DE1:  NOP
       DJNZ    R7, DE1
       RET

下面是15F104W晶振6M延时540US,是否真的是延时了540us???????????
DELAY540US:                        ;@6.000MHz
        PUSH 38H
        PUSH 39H
        MOV 38H,#3
        MOV 39H,#127
NEXT1:
        DJNZ 39H,$
        DJNZ 38H,NEXT1
        POP 39H
        POP 38H
        RET


要如何改才能用,

作者: 风158    时间: 2018-6-29 07:18
可用stc网站提供的15系列延时程序:
//========================================================================
// 函数: void  delayms(unsigned int ms)
// 描述: 延时函数。
// 参数: ms,要延时的ms数, 这里只支持1~65535ms. 自动适应主时钟.
// 返回: none.
// 版本: VER1.0
// 日期: 2013-4-1
// 备注:
//========================================================================
void  delayms(unsigned int ms)
{
     unsigned int i;
         do{
              i = MAIN_Fosc / 13000;
                  while(--i)        ;   //14T per loop
     }while(--ms);
}

原程序是1ms的,可根据需要修改i的循环次数,例如:
i = MAIN_Fosc / 130*54;//1ms*0.54=540us




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1