找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2140|回复: 1
打印 上一主题 下一主题
收起左侧

51单片机延时程序如何改才能应用于15F104W

[复制链接]
跳转到指定楼层
楼主
ID:72088 发表于 2018-6-10 10:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
写了个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


要如何改才能用,
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:343102 发表于 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
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表