标题: 求助:单片机从89C52改到STC12C5A60S2时延时函数的更改问题 [打印本页]

作者: 忆昔    时间: 2016-5-16 21:41
标题: 求助:单片机从89C52改到STC12C5A60S2时延时函数的更改问题
单片机本来选取的是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--);
}


作者: ahshmj    时间: 2016-5-16 22:13
这个要看c语言程序最终使用了那些汇编指令。如:void Delay5us()  里面仅仅使用了“NOP”指令,这个指令对于STC12C5A60S2来说是传统8051的速度的12倍(其他指令的速度倍数从3~12不等),所以需要执行12次Delay5us函数才能达到原来设定的延时时间。
另一个延时程序,最终的汇编指令用了哪些不清楚(当然你可以查看一下),最好使用keil4仿真运行中确定。
作者: ahshmj    时间: 2016-5-16 22:22
(接上一帖子),最终的汇编代码可以打开“*.lst”文件查看(需要在/工程/为目标设置选项/清单/...中勾选“汇编代码”才能查看),不过这需要你有汇编的基础才行。
作者: 忆昔    时间: 2016-5-16 22:29
ahshmj 发表于 2016-5-16 22:13
这个要看c语言程序最终使用了那些汇编指令。如:void Delay5us()  里面仅仅使用了“NOP”指令,这个指令对 ...

感谢,十分感谢
作者: yyg123321a    时间: 2016-5-17 23:13
直接从STC-ISP软件的延时程序中输入你的参数,生成代码即可使用,很准的。
作者: APLL    时间: 2018-12-27 14:42
请问您这个问题解决了吗  我也是用这个单片机的   有问题想请教您
作者: jakcypater    时间: 2019-4-29 20:00
楼主还在吗?我最近也在做这个东西,也是51改为stc12串口收到的数据是乱码,延时也改了,还是没用,楼主能提供下程序吗?
作者: 小丑only    时间: 2022-1-11 22:20
时序问题,看我的帖子

作者: 风中追风1    时间: 2022-4-14 09:42
小丑only 发表于 2022-1-11 22:20
时序问题,看我的帖子

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




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