找回密码
 立即注册

QQ登录

只需一步,快速开始

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

求助:单片机从89C52改到STC12C5A60S2时延时函数的更改问题

[复制链接]
跳转到指定楼层
楼主
ID:72559 发表于 2016-5-16 21:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
单片机本来选取的是89C52,后来因为串口原因改到了STC12C5A60S2,也就是MCU从12T改到了1T,我知道需要更改延时韩式,但是不知道要怎么改,请教一下需要怎么改。延时函数如下:
/**************************************
延时5微秒(STC90C52RC@12M)
不同的工作环境,需要调整此函数,注意时钟过快时需要修改
当改用1T的MCU时,请调整此延时函数
**************************************/
void Delay5us()
{
    _nop_();_nop_();_nop_();_nop_();
    _nop_();_nop_();_nop_();_nop_();
        _nop_();_nop_();_nop_();_nop_();
}

/**************************************
延时5毫秒(STC90C52RC@12M)
不同的工作环境,需要调整此函数
当改用1T的MCU时,请调整此延时函数
**************************************/
void Delay5ms()
{
    WORD n = 560;

    while (n--);
}

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:7485 发表于 2016-5-16 22:13 | 只看该作者
这个要看c语言程序最终使用了那些汇编指令。如:void Delay5us()  里面仅仅使用了“NOP”指令,这个指令对于STC12C5A60S2来说是传统8051的速度的12倍(其他指令的速度倍数从3~12不等),所以需要执行12次Delay5us函数才能达到原来设定的延时时间。
另一个延时程序,最终的汇编指令用了哪些不清楚(当然你可以查看一下),最好使用keil4仿真运行中确定。
回复

使用道具 举报

板凳
ID:7485 发表于 2016-5-16 22:22 | 只看该作者
(接上一帖子),最终的汇编代码可以打开“*.lst”文件查看(需要在/工程/为目标设置选项/清单/...中勾选“汇编代码”才能查看),不过这需要你有汇编的基础才行。
回复

使用道具 举报

地板
ID:72559 发表于 2016-5-16 22:29 | 只看该作者
ahshmj 发表于 2016-5-16 22:13
这个要看c语言程序最终使用了那些汇编指令。如:void Delay5us()  里面仅仅使用了“NOP”指令,这个指令对 ...

感谢,十分感谢
回复

使用道具 举报

5#
ID:119239 发表于 2016-5-17 23:13 | 只看该作者
直接从STC-ISP软件的延时程序中输入你的参数,生成代码即可使用,很准的。
回复

使用道具 举报

6#
ID:456441 发表于 2018-12-27 14:42 | 只看该作者
请问您这个问题解决了吗  我也是用这个单片机的   有问题想请教您
回复

使用道具 举报

7#
ID:523982 发表于 2019-4-29 20:00 | 只看该作者
楼主还在吗?我最近也在做这个东西,也是51改为stc12串口收到的数据是乱码,延时也改了,还是没用,楼主能提供下程序吗?
回复

使用道具 举报

8#
ID:447439 发表于 2022-1-11 22:20 | 只看该作者
时序问题,看我的帖子
回复

使用道具 举报

9#
ID:1018269 发表于 2022-4-14 09:42 | 只看该作者
小丑only 发表于 2022-1-11 22:20
时序问题,看我的帖子

如果89c52单片机程序转换成STC12C5A32S2程序还需要修改什么,改了延时不行
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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